Funções

Compatível com:

Esta seção descreve as funções da YARA-L 2.0 que podem ser usadas em consultas de regras, pesquisa e painel.

Consulte também Funções da YARA-L 2.0 para painéis e Estatísticas e agregações na pesquisa usando a YARA-L 2.0.

Essas funções podem ser usadas nas seguintes partes de uma consulta YARA-L:

arrays.concat

Compatível com:
arrays.concat(string_array, string_array)

Descrição

Retorna uma nova matriz de strings copiando elementos das matrizes de strings originais.

Tipos de dados de parâmetros

ARRAY_STRINGS, ARRAY_STRINGS

Tipo de retorno

ARRAY_STRINGS

Amostras de código

Exemplo 1

O exemplo a seguir concatena duas matrizes de strings diferentes.

arrays.concat(["test1", "test2"], ["test3"]) = ["test1", "test2", "test3"]
Exemplo 2

O exemplo a seguir concatena matrizes com uma string vazia.

arrays.concat([""], [""]) = ["", ""]
Exemplo 3

O exemplo a seguir concatena matrizes vazias.

arrays.concat([], []) = []

arrays.index_to_float

Compatível com:
arrays.index_to_float(array, index)

Descrição

Retorna o elemento no índice especificado de uma matriz. O elemento nesse índice é retornado como um ponto flutuante.

O índice é um valor inteiro que representa a posição de um elemento na matriz. Por padrão, o primeiro elemento de uma matriz tem um índice de 0, e o último elemento tem um índice de n-1, em que n é o tamanho da matriz. Com a indexação negativa, é possível acessar elementos da matriz em relação ao final dela. Por exemplo, um índice de -1 se refere ao último elemento da matriz, e um índice de -2 se refere ao penúltimo elemento da matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

O exemplo a seguir busca um elemento no índice 1 de uma matriz de números de ponto flutuante.

arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 1) // 2.1
Exemplo 2

O exemplo a seguir busca um elemento no índice -1 de uma matriz de números de ponto flutuante.

arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 0-1) // 4.6
Exemplo 3

O exemplo a seguir busca um elemento para um índice maior que o tamanho da matriz.

arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 6) // 0.0
Exemplo 4

O exemplo a seguir busca um elemento de uma matriz vazia.

arrays.index_to_float([], 0) // 0.0
Example 5

O exemplo a seguir busca um elemento no índice 1 de uma matriz de strings.

arrays.index_to_float(["1.2", "3.3", "2.4"], 1) // 3.3
Exemplo 6

O exemplo a seguir busca um elemento no índice 2 de uma matriz de números inteiros.

arrays.index_to_float([1, 3, 2], 2) // 2.0

arrays.index_to_int

Compatível com:
arrays.index_to_int(array_of_inputs, index)

Descrição

Retorna o valor em um determinado índice em uma matriz como um número inteiro.

O índice é um valor inteiro que representa a posição de um elemento na matriz. Por padrão, o primeiro elemento de uma matriz tem um índice de 0, e o último elemento tem um índice de n-1, em que n é o tamanho da matriz. Com a indexação negativa, é possível acessar elementos da matriz em relação ao final dela. Por exemplo, um índice de -1 se refere ao último elemento da matriz, e um índice de -2 se refere ao penúltimo elemento da matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de retorno

INT

Amostras de código

Exemplo 1

Essa chamada de função retorna 0 quando o valor no índice é uma string não numérica.

arrays.index_to_int(["str0", "str1", "str2"], 1) = 0
Exemplo 2

Essa função retorna o elemento no índice -1.

arrays.index_to_int(["44", "11", "22", "33"], 0-1) = 33
Exemplo 3

Retorna 0 para o elemento fora dos limites.

arrays.index_to_int(["44", "11", "22", "33"], 5) = 0
Exemplo 4

Essa função busca o elemento da matriz de ponto flutuante no índice 1.

arrays.index_to_int([1.100000, 1.200000, 1.300000], 1) = 1
Example 5

Essa função busca o elemento da matriz de números inteiros no índice 0.

arrays.index_to_int([1, 2, 3], 0) = 1

arrays.index_to_str

Compatível com:
arrays.index_to_str(array, index)

Descrição

Retorna o elemento no índice especificado da matriz como uma string. O índice é um valor inteiro que representa a posição de um elemento na matriz. Por padrão, o primeiro elemento de uma matriz tem um índice de 0, e o último elemento tem um índice de n-1, em que n é o tamanho da matriz. Com a indexação negativa, é possível acessar elementos da matriz do final para o início. Por exemplo, um índice de -1 se refere ao último elemento da matriz, e um índice de -2 se refere ao penúltimo elemento da matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir busca um elemento no índice 1 de uma matriz de strings.

arrays.index_to_str(["test1", "test2", "test3", "test4"], 1) // "test2"
Exemplo 2

O exemplo a seguir busca um elemento no índice -1 (último elemento da matriz) de uma matriz de strings.

arrays.index_to_str(["test1", "test2", "test3", "test4"], 0-1) // "test4"
Exemplo 3

O exemplo a seguir busca um elemento para um índice maior que o tamanho da matriz, o que retorna uma string vazia.

arrays.index_to_str(["test1", "test2", "test3", "test4"], 6) // ""
Exemplo 4

O exemplo a seguir busca um elemento de uma matriz vazia.

arrays.index_to_str([], 0) // ""
Example 5

O exemplo a seguir busca um elemento no índice 0 de uma matriz de números de ponto flutuante. A saída é retornada como uma string.

arrays.index_to_str([1.200000, 3.300000, 2.400000], 0) // "1.2"
Exemplo 6

O exemplo a seguir busca um elemento no índice 2 de uma matriz de números inteiros. A saída está no formato de uma string.

arrays.index_to_str([1, 3, 2], 2) // "2"

arrays.join_string

Compatível com:
arrays.join_string(array_of_strings, optional_delimiter)

Descrição

Converte uma matriz de strings em uma única string separada pelo parâmetro opcional. Se nenhum delimitador for fornecido, a string vazia será usada.

Tipos de dados de parâmetros

ARRAY_STRINGS, STRING

Tipo de retorno

STRING

Amostras de código

Confira alguns exemplos de como usar a função:

Exemplo 1

Este exemplo une uma matriz com elementos não nulos e um delimitador.

arrays.join_string(["foo", "bar"], ",") = "foo,bar"
Exemplo 2

Este exemplo une uma matriz com um elemento nulo e um delimitador.

arrays.join_string(["foo", NULL, "bar"], ",") = "foo,bar"
Exemplo 3

Este exemplo une uma matriz com elementos não nulos e sem delimitador.

arrays.join_string(["foo", "bar"]) = "foobar"

arrays.length

Compatível com:
arrays.length(repeatedField)

Descrição

Retorna o número de elementos de campo repetidos.

Tipos de dados de parâmetros

LIST

Tipo de retorno

NUMBER

Amostras de código

Exemplo 1

Retorna o número de elementos de campo repetidos.

arrays.length($e.principal.ip) = 2
Exemplo 2

Se houver vários campos repetidos ao longo do caminho, vai retornar o número total de elementos de campo repetidos.

arrays.length($e.intermediary.ip) = 3

arrays.max

Compatível com:
arrays.max(array_of_ints_or_floats)

Descrição

Retorna o maior elemento em uma matriz ou zero se a matriz estiver vazia.

Tipos de dados de parâmetros

ARRAY_INTS|ARRAY_FLOATS

Tipo de retorno

FLOAT

Amostras de código

Confira alguns exemplos de como usar a função:

Exemplo 1

Este exemplo retorna o elemento maior em uma matriz de números inteiros.

arrays.max([10, 20]) = 20.000000
Exemplo 2

Este exemplo retorna o elemento maior em uma matriz de números de ponto flutuante.

arrays.max([10.000000, 20.000000]) = 20.000000

arrays.min

Compatível com:
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])

Descrição

Retorna o menor elemento em uma matriz ou zero se a matriz estiver vazia. Se o segundo argumento opcional for definido como "true", os elementos iguais a zero serão ignorados.

Tipos de dados de parâmetros

ARRAY_INTS|ARRAY_FLOATS, BOOL

Tipo de retorno

FLOAT

Amostras de código

Confira alguns exemplos de como usar a função:

Exemplo 1

Este exemplo retorna o menor elemento em uma matriz de números inteiros.

arrays.min([10, 20]) = 10.000000
Exemplo 2

Este exemplo retorna o menor elemento em uma matriz de números de ponto flutuante.

arrays.min([10.000000, 20.000000]) = 10.000000
Exemplo 3

Este exemplo retorna o menor elemento em uma matriz de números de ponto flutuante, ignorando os zeros.

arrays.min([10.000000, 20.000000, 0.0], true) = 10.000000

arrays.size

Compatível com:
arrays.size( array )

Descrição

Retorna o tamanho da matriz. Retorna 0 para uma matriz vazia.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS

Tipo de retorno

INT

Amostras de código

Exemplo 1

Este exemplo usa uma matriz de strings que contém dois elementos.

arrays.size(["test1", "test2"]) = 2
Exemplo 2

Este exemplo usa uma matriz de números inteiros com três elementos.

arrays.size([1, 2, 3]) = 3
Exemplo 3

Este exemplo usa uma matriz de ponto flutuante que contém um elemento.

arrays.size([1.200000]) = 1
Exemplo 4

Este exemplo usa uma matriz vazia.

arrays.size([]) = 0

bytes.to_base64

Compatível com:
bytes.to_base64(bytes, optional_default_string)

Descrição

A função converte um valor bytes em um base64 encoded string. As chamadas de função com valores que não podem ser convertidos retornam uma string vazia por padrão.

Tipos de dados de parâmetros

BYTES, STRING

Tipo de retorno

STRING

Amostras de código

Bytes binários brutos para string codificada em base64

A função converte os bytes binários brutos em uma string codificada em base64.

bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Falha na conversão (o padrão é a string fornecida opcionalmente)

A função usa o valor padrão "invalid bytes" quando o valor de bytes fornecido não é válido.

bytes.to_base64(b'000000006f8ec5586d", "invalid bytes") = "invalid bytes"

cast.as_bool

Compatível com:
cast.as_bool(string_or_int)

Descrição

A função converte um valor int ou string em um valor booleano. As chamadas de função com valores que não podem ser convertidos vão retornar FALSE. Retorna TRUE somente para o número inteiro 1 e a string "true" sem diferenciação de maiúsculas e minúsculas.

Tipos de dados de parâmetros

INT|STRING

Tipo de retorno

BOOL

Amostras de código

Exemplo 1

Este exemplo mostra como converter uma string não booleana

cast.as_bool("123") = false
Exemplo 2

Número inteiro verdadeiro (1)

cast.as_bool(1) = true
Exemplo 3

String verdadeira

cast.as_bool("true") = true
Exemplo 4

String verdadeira em maiúsculas

cast.as_bool("TRUE") = true
Example 5

Número inteiro negativo

cast.as_bool(0-1) = false
Exemplo 6

Número inteiro falso (0)

cast.as_bool(0) = false
Exemplo 7

String vazia

cast.as_bool("") = false

cast.as_float

Compatível com:
cast.as_float(string_to_cast)

Descrição

Converte uma string numérica em um ponto flutuante. Todas as chamadas de função com valores que não podem ser convertidos retornam 0. Os números de ponto flutuante mantêm a precisão de até sete casas decimais.

Tipos de dados de parâmetros

STRING

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

A conversão de uma string não numérica retorna 0.

cast.as_float("str") = 0.0000000
Exemplo 2

A conversão de uma string vazia retorna 0.

cast.as_float("") = 0.0000000
Exemplo 3

A transmissão de uma string numérica válida retorna um valor de ponto flutuante.

cast.as_float("1.012345678") = 1.0123456

cast.as_string

Compatível com:
cast.as_string(int_or_bytes_or_bool, optional_default_string)

Descrição

A função cast.as_string transforma um valor INT, BYTES ou BOOL na representação de string dele. Você pode fornecer um argumento default_string opcional para lidar com casos em que a transmissão falha. Se você omitir o argumento default_string ou se a entrada for uma sequência de bytes UTF-8 ou BASE64 inválida, a função vai retornar uma string vazia.

Tipos de dados de parâmetros

INT|BYTES|BOOL, STRING

Tipo de retorno

STRING

Amostras de código

Conversão de número inteiro para string

A função converte o número inteiro 123 na string "123".

cast.as_string(123) = "123"
Conversão de ponto flutuante para string

A função converte o ponto flutuante 2.25 na string "2.25".

cast.as_string(2.25) = "2.25"
Conversão de bytes para string

A função converte o b'01 binário bruto na string "\x01".

cast.as_string(b'01, "") = "\x01"
Conversão de booleano para string

A função converte o booleano true na string "true".

cast.as_string(true, "") = "true"
Falha na conversão (o padrão é a string fornecida opcionalmente)

A função usa a string "casting error" como padrão quando o valor fornecido é inválido.

cast.as_string(9223372036854775808, "casting error") = "casting error"

Impressão digital

Compatível com:
hash.fingerprint2011(byteOrString)

Descrição

Essa função calcula o hash fingerprint2011 de uma sequência de bytes ou string de entrada. Essa função retorna um valor INT sem sinal no intervalo [2, 0xFFFFFFFFFFFFFFFF].

Tipos de dados de parâmetros

BTYE, STRING

Tipo de retorno

INT

Exemplo de código

id_fingerprint = hash.fingerprint2011("user123")

grupo

Compatível com:
group(field1, field2, field3, ...)

Descrição

Agrupe campos de um tipo semelhante em uma variável de marcador de posição.

Na pesquisa da UDM, os campos agrupados são usados para pesquisar em vários campos de um tipo semelhante. A função "grupo" é semelhante aos campos agrupados, mas permite selecionar quais campos você quer agrupar para acionar uma detecção. Use a função de grupo para coletar informações sobre uma entidade específica (por exemplo, um nome de host, endereço IP ou ID de usuário) em diferentes tipos de substantivo.

Amostras de código

Exemplo 1

Agrupe todos os endereços IP e forneça uma contagem decrescente do endereço IP mais frequente no período verificado.

$ip = group(principal.ip, about.ip, target.ip)
$ip != ""
match:
  $ip
outcome:
  $count = count_distinct(metadata.id)
order:
  $count desc

hash.sha256

Compatível com:
hash.sha256(string)

Descrição

Retorna um hash SHA-256 da string de entrada.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Este exemplo mostra o hash SHA-256 quando a entrada é uma string válida.

hash.sha256("str") = "8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a"
Exemplo 2

Este exemplo mostra o hash SHA-256 quando a entrada é uma string vazia.

hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

math.abs

Compatível com:
math.abs(numericExpression)

Descrição

Retorna o valor absoluto de uma expressão de número inteiro ou ponto flutuante.

Tipos de dados de parâmetros

NUMBER

Tipo de retorno

NUMBER

Amostras de código

Exemplo 1

Esse exemplo retorna "True" se o evento ocorreu mais de 5 minutos antes ou depois do horário especificado (em segundos desde a época Unix). Uma chamada para math.abs não pode depender de várias variáveis ou marcadores de posição. Por exemplo, não é possível substituir o valor de tempo codificado de 1643687343 no exemplo a seguir por $e2.metadata.event_timestamp.seconds.

300 < math.abs($e1.metadata.event_timestamp.seconds - 1643687343)

math.ceil

Compatível com:
math.ceil(number)

Descrição

Retorna o menor número inteiro que não é menor que o número fornecido (arredondamento para cima). Retornará 0 se a entrada for nula ou muito grande para caber em um int64.

Tipos de dados de parâmetros

FLOAT

Tipo de retorno

INT

Amostras de código

Esta seção contém exemplos de como usar math.ceil.

Exemplo 1

Este exemplo retorna o teto de um número inteiro.

math.ceil(2.000000) = 2
Exemplo 2

Este exemplo retorna o teto de um número negativo.

math.ceil(0-1.200000) = -1
Exemplo 3

Este exemplo retorna 0 como o teto de um número muito grande para um inteiro de 64 bits.

math.ceil(184467440737095516160.0) = 0

math.floor

Compatível com:
math.floor(float_val)

Descrição

Retorna o maior valor inteiro que não é maior que o valor fornecido (arredondamento para baixo). Retorna 0 se a entrada for nula ou muito grande para caber em um int64.

Tipos de dados de parâmetros

FLOAT

Tipo de retorno

INT

Amostras de código

Exemplo 1

Este exemplo mostra um caso de número positivo.

math.floor(1.234568) = 1
Exemplo 2

Este exemplo mostra um caso de número negativo.

math.floor(0-1.234568) = -2
Exemplo 3

Este exemplo mostra um caso zero.

math.floor(0.000000) = 0

math.geo_distance

Compatível com:
math.geo_distance(longitude1, latitude1, longitude2, latitude2))

Descrição

Retorna a distância entre dois locais geográficos (coordenadas) em metros. Retorna -1 se as coordenadas forem inválidas.

Tipos de dados de parâmetros

FLOAT, FLOAT, FLOAT, FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

O exemplo a seguir retorna a distância quando todos os parâmetros são coordenadas válidas:

math.geo_distance(-122.020287, 37.407574, -122.021810, 37.407574) = 134.564318
Exemplo 2

O exemplo a seguir retorna a distância quando um dos parâmetros é uma coordenada truncada:

math.geo_distance(-122.000000, 37.407574, -122.021810, 37.407574) = 1926.421905
Exemplo 3

O exemplo a seguir retorna -1 quando um dos parâmetros é uma coordenada inválida:

math.geo_distance(0-122.897680, 37.407574, 0-122.021810, 97.407574) = -1.000000
Exemplo 4

O exemplo a seguir retorna 0 quando as coordenadas são iguais:

math.geo_distance(-122.897680, 37.407574, -122.897680, 37.407574) = 0.000000

math.is_increasing

Compatível com:
math.is_increasing(num1, num2, num3)

Descrição

Usa uma lista de valores numéricos (inteiros ou de ponto flutuante) e retorna True se os valores estiverem em ordem crescente e False caso contrário.

Tipos de dados de parâmetros

INT|FLOAT, INT|FLOAT, INT|FLOAT

Tipo de retorno

BOOL

Amostras de código

Exemplo 1

Este exemplo inclui valores semelhantes a carimbos de data/hora em segundos.

math.is_increasing(1716769112, 1716769113, 1716769114) = true
Exemplo 2

Este exemplo inclui um valor double negativo, um INT64 zero e um INT64 positivo.

math.is_increasing(-1.200000, 0, 3) = true
Exemplo 3

Este exemplo inclui um valor double negativo, um INT64 zero e um INT64 negativo.

math.is_increasing(0-1.200000, 0, 0-3) = false
Exemplo 4

Este exemplo inclui dois números de ponto flutuante negativos e um valor INT64 zero.

math.is_increasing(0-1.200000, 0-1.50000, 0) = false
Example 5

Este exemplo inclui um número de ponto flutuante negativo e dois valores iguais.

math.is_increasing(0-1.200000, 0, 0) = false

math.log

Compatível com:
math.log(numericExpression)

Descrição

Retorna o valor do logaritmo natural de uma expressão de número inteiro ou ponto flutuante.

Tipos de dados de parâmetros

NUMBER

Tipo de retorno

NUMBER

Amostras de código

Exemplo 1
math.log($e1.network.sent_bytes) > 20

math.pow

Compatível com:
math.pow(base, exponent)

Descrição

Retorna o valor do primeiro argumento elevado à potência do segundo argumento. Retorna 0 em caso de estouro.

Tipos de dados de parâmetros

base: INT|FLOAT exponent: INT|FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo mostra um caso de número inteiro.

math.pow(2, 2) // 4.00
Exemplo 2

Este exemplo mostra um caso básico de fração.

math.pow(2.200000, 3) // 10.648
Exemplo 3

Este exemplo mostra uma base fracionária e um caso de potência.

math.pow(2.200000, 1.200000) // 2.575771
Exemplo 4

Este exemplo mostra um caso de potência negativa.

math.pow(3, 0-3) // 0.037037
Example 5

Este exemplo mostra um caso de potência fracionária.

math.pow(3, 0-1.200000) // 0.267581
Exemplo 6

Este exemplo mostra um caso de base negativo.

math.pow(0-3, 0-3) // -0.037037
Exemplo 7

Este exemplo mostra um caso de base zero.

math.pow(0, 3) // 0
Exemplo 8

Este exemplo mostra um caso de potência zero.

math.pow(9223372036854775807, 0) // 1
Exemplo 9

Este exemplo mostra um caso de base grande.

math.pow(9223372036854775807, 1.200000) // 57262152889751593549824

math.random

Compatível com:
math.random()

Descrição

Gera um valor pseudoaleatório do tipo DOUBLE no intervalo de [0, 1), incluindo 0 e excluindo 1.

Tipo de retorno

FLOAT

Amostras de código

O exemplo a seguir verifica se o valor aleatório está no intervalo [0, 1). none if(math.random() >= 0 and math.random() < 1) = true

math.round

Compatível com:
math.round(numericExpression, decimalPlaces)

Descrição

Retorna um valor arredondado para o número inteiro mais próximo ou para o número especificado de casas decimais.

Tipos de dados de parâmetros

NUMBER

Tipo de retorno

NUMBER

Amostras de código

math.round(10.7) // returns 11
math.round(1.2567, 2) // returns 1.25
math.round(0-10.7) // returns -11
math.round(0-1.2) // returns -1
math.round(4) // returns 4, math.round(integer) returns the integer

math.sqrt

Compatível com:
math.sqrt(number)

Descrição

Retorna a raiz quadrada do número especificado. Retorna 0 em caso de números negativos.

Tipos de dados de parâmetros

INT|FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo retorna a raiz quadrada de um argumento int.

math.sqrt(3) = 1.732051
Exemplo 2

Este exemplo retorna a raiz quadrada de um argumento int negativo.

math.sqrt(-3) = 0.000000
Exemplo 3

Este exemplo retorna a raiz quadrada do argumento zero.

math.sqrt(0) = 0.000000
Exemplo 4

Este exemplo retorna a raiz quadrada de um argumento de ponto flutuante.

math.sqrt(9.223372) = 3.037000
Example 5

Este exemplo retorna a raiz quadrada de um argumento de ponto flutuante negativo.

math.sqrt(0-1.200000) = 0.000000

métricas

Compatível com:

As funções de métricas podem agregar grandes quantidades de dados históricos. Você pode usar isso na sua regra usando metrics.functionName() na seção de resultado.

Para mais informações, consulte Métricas da YARA-L.

net.ip_in_range_cidr

Compatível com:
net.ip_in_range_cidr(ipAddress, subnetworkRange)

Descrição

Retorna true quando o endereço IP fornecido está dentro da sub-rede especificada.

Você pode usar o YARA-L para pesquisar eventos da UDM em todos os endereços IP de uma sub-rede usando a instrução net.ip_in_range_cidr(). Os dois são compatíveis.

Para pesquisar em um intervalo de endereços IP, especifique um campo UDM de IP e um intervalo CIDR. O YARA-L pode processar campos de endereço IP únicos e repetidos.

Para pesquisar em um intervalo de endereços IP, especifique um campo ip da UDM e um intervalo de roteamento entre domínios sem classe (CIDR). O YARA-L pode processar campos de endereço IP únicos e repetidos.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

BOOL

Amostras de código

Exemplo 1

Exemplo de IPv4:

net.ip_in_range_cidr($e.principal.ip, "192.0.2.0/24")
Exemplo 2

Exemplo de IPv6:

net.ip_in_range_cidr($e.network.dhcp.yiaddr, "2001:db8::/32")

Para ver um exemplo de regra usando a instrução net.ip_in_range_cidr(), consulte o exemplo em Evento único em um intervalo de endereços IP.

re.regex

Compatível com:

Você pode definir a correspondência de expressões regulares na YARA-L 2.0 usando uma das seguintes sintaxes:

  • Usando a sintaxe YARA-L — relacionada a eventos. Confira a seguir uma representação genérica dessa sintaxe:

    $e.field = /regex/
    
  • Usando a sintaxe YARA-L como uma função que recebe os seguintes parâmetros:

    • Campo em que a expressão regular é aplicada.
    • Expressão regular especificada como uma string.

    Confira a seguir uma representação genérica dessa sintaxe:

    re.regex($e.field, `regex`)
    

Descrição

Essa função retorna true se a string contiver uma substring que corresponda à expressão regular fornecida. Não é necessário adicionar .* ao início ou ao fim da expressão regular.

Observações
  • Para corresponder à string exata ou apenas a um prefixo ou sufixo, inclua os caracteres âncora ^ (inicial) e $ (final) na expressão regular. Por exemplo, /^full$/ corresponde exatamente a "full", enquanto /full/ pode corresponder a "fullest", "lawfull" e "joyfully".
  • Se o campo da UDM incluir caracteres de nova linha, o regexp só vai corresponder à primeira linha do campo. Para forçar a correspondência completa do campo UDM, adicione um (?s) à expressão regular. Por exemplo, substitua /.*allUDM.*/ por /(?s).*allUDM.*/.
  • É possível usar o modificador nocase depois das strings para indicar que a pesquisa deve ignorar a capitalização.

Tipos de dados de parâmetros

STRING, STRING

Tipos de expressões de parâmetro

ANY, ANY

Tipo de retorno

BOOL

Amostras de código

Exemplo 1
// Equivalent to $e.principal.hostname = /google/
re.regex($e.principal.hostname, "google")

re.capture

Compatível com:
re.capture(stringText, regex)

Descrição

Captura (extrai) dados de uma string usando o padrão de expressão regular fornecido no argumento.

Essa função usa dois argumentos:

  • stringText: a string original a ser pesquisada.
  • regex: a expressão regular que indica o padrão a ser pesquisado.

A expressão regular pode conter 0 ou 1 grupo de captura entre parênteses. Se a expressão regular contiver zero grupos de captura, a função vai retornar a primeira substring correspondente inteira. Se a expressão regular contiver um grupo de captura, ela vai retornar a primeira substring correspondente. Definir dois ou mais grupos de captura retorna um erro do compilador.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Neste exemplo, se $e.principal.hostname contiver "aaa1bbaa2", o seguinte será verdadeiro porque a função retorna a primeira instância. Este exemplo não tem grupos de captura.

"aaa1" = re.capture($e.principal.hostname, "a+[1-9]")
Exemplo 2

Este exemplo captura tudo depois do símbolo @ em um e-mail. Se o campo $e.network.email.from for test@google.com, o exemplo vai retornar google.com. O exemplo a seguir contém um grupo de captura.

"google.com" = re.capture($e.network.email.from , "@(.*)")
Exemplo 3

Se a expressão regular não corresponder a nenhuma substring no texto, a função vai retornar uma string vazia. Você pode omitir eventos em que não há correspondência excluindo a string vazia, o que é especialmente importante quando você usa re.capture() com uma desigualdade:

// Exclude the empty string to omit events where no match occurs.
"" != re.capture($e.network.email.from , "@(.*)")

// Exclude a specific string with an inequality.
"google.com" != re.capture($e.network.email.from , "@(.*)")

re.replace

Compatível com:
re.replace(stringText, replaceRegex, replacementText)

Descrição

Executa uma substituição de expressão regular.

Essa função usa três argumentos:

  • stringText: a string original.
  • replaceRegex: a expressão regular que indica o padrão a ser pesquisado.
  • replacementText: o texto a ser inserido em cada correspondência.

Retorna uma nova string derivada da stringText original, em que todas as substrings que correspondem ao padrão em replaceRegex são substituídas pelo valor em replacementText. Use dígitos de escape com barra invertida (\1 a \9) em replacementText para inserir um texto correspondente ao grupo entre parênteses no padrão replaceRegex. Use \0 para indicar o texto correspondente inteiro.

A função substitui correspondências não sobrepostas e prioriza a substituição da primeira ocorrência encontrada. Por exemplo, re.replace("banana", "ana", "111") retorna a string "b111na".

Tipos de dados de parâmetros

STRING, STRING, STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Este exemplo captura tudo após o símbolo @ em um e-mail, substitui com por org e retorna o resultado. Observe o uso de funções aninhadas.

"email@google.org" = re.replace($e.network.email.from, "com", "org")
Exemplo 2

Este exemplo usa dígitos de escape com barra invertida no argumento replacementText para referenciar correspondências ao padrão replaceRegex.

"test1.com.google" = re.replace(
                       $e.principal.hostname, // holds "test1.test2.google.com"
                       "test2\.([a-z]*)\.([a-z]*)",
                       "\\2.\\1"  // \\1 holds "google", \\2 holds "com"
                     )
Exemplo 3

Observe os seguintes casos ao lidar com strings vazias e re.replace():

Usar uma string vazia como replaceRegex:

// In the function call below, if $e.principal.hostname contains "name",
// the result is: 1n1a1m1e1, because an empty string is found next to
// every character in `stringText`.
re.replace($e.principal.hostname, "", "1")

Para substituir uma string vazia, use "^$" como replaceRegex:

// In the function call below, if $e.principal.hostname contains the empty
// string, "", the result is: "none".
re.replace($e.principal.hostname, "^$", "none")

sample_rate

Compatível com:
optimization.sample_rate(byteOrString, rateNumerator, rateDenominator)

Descrição

Essa função determina se um evento será incluído com base em uma estratégia de amostragem determinista. Essa função retorna:

  • true para uma fração de valores de entrada, equivalente a (rateNumerator / rateDenominator), indicando que o evento deve ser incluído na amostra.
  • false indicando que o evento não deve ser incluído na amostra.

Essa função é útil para cenários de otimização em que você quer processar apenas um subconjunto de eventos. Equivalente a:

hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator

Tipos de dados de parâmetros

  • byteOrString: expressão avaliada como BYTE ou STRING.
  • rateNumerator: 'INT'
  • rateDenominator: 'INT'

Tipo de retorno

BOOL

Exemplo de código

events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $asset_id = $e.principal.asset.asset_id
    optimization.sample_rate($e.metadata.id, 1, 5) // Only 1 out of every 5 events

  match:
    $asset_id over 1h

  outcome:
    $event_count = count_distinct($e.metadata.id)
  // estimate the usage by multiplying by the inverse of the sample rate
    $usage_past_hour = sum(5.0 * $e.network.sent_bytes)

 condition:
  // Requiring a certain number of events after sampling avoids bias (e.g. a
  // device with just 1 connection will still show up 20% of the time and
  // if we multiply that traffic by 5, we'll get an incorrect estimate)
  $e and ($usage_past_hour > 1000000000) and $event_count >= 100

strings.base64_decode

Compatível com:
strings.base64_decode(encodedString)

Descrição

Retorna uma string que contém a versão decodificada em base64 da string codificada.

Essa função usa uma string codificada em base64 como argumento. Se encodedString não for uma string codificada em base64 válida, a função vai retornar encodedString sem alterações.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1
"test" = strings.base64_decode($e.principal.domain.name)

strings.coalesce

Compatível com:
strings.coalesce(a, b, c, ...)

Descrição

Essa função usa um número ilimitado de argumentos e retorna o valor da primeira expressão que não é avaliada como uma string vazia (por exemplo, "valor diferente de zero"). Se todos os argumentos forem avaliados como uma string vazia, a chamada de função vai retornar uma string vazia.

Os argumentos podem ser literais, campos de eventos ou chamadas de função. Todos os argumentos precisam ser do tipo STRING. Se algum argumento for um campo de evento, os atributos precisarão ser do mesmo evento.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir inclui variáveis de string como argumentos. A condição é avaliada como verdadeira quando (1) $e.network.email.from é suspicious@gmail.com ou (2) $e.network.email.from está vazio e $e.network.email.to é suspicious@gmail.com.

"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
Exemplo 2

O exemplo a seguir chama a função coalesce com mais de dois argumentos. Essa condição compara o primeiro endereço IP não nulo do evento $e com os valores na lista de referência ip_watchlist. A ordem em que os argumentos são agrupados nessa chamada é a mesma em que são enumerados na condição da regra:

  1. $e.principal.ip é avaliado primeiro.
  2. Em seguida, $e.src.ip é avaliado.
  3. Em seguida, $e.target.ip é avaliado.
  4. Por fim, a string "No IP" será retornada como um valor padrão se os campos ip anteriores não estiverem definidos.
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Exemplo 3

O exemplo a seguir tenta unir principal.hostname do evento $e1 e do evento $e2. Ele vai retornar um erro do compilador porque os argumentos são variáveis de eventos diferentes.

// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)

strings.concat

Compatível com:
strings.concat(a, b, c, ...)

Descrição

Retorna a concatenação de um número ilimitado de itens, cada um dos quais pode ser uma string, um número inteiro ou um ponto flutuante.

Se algum argumento for um campo de evento, os atributos precisarão ser do mesmo evento.

Tipos de dados de parâmetros

STRING, FLOAT, INT

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir inclui uma variável de string e uma variável de número inteiro como argumentos. principal.hostname e principal.port são do mesmo evento, $e, e são concatenados para retornar uma string.

"google:80" = strings.concat($e.principal.hostname, ":", $e.principal.port)
Exemplo 2

O exemplo a seguir inclui uma variável de string e um literal de string como argumentos.

"google-test" = strings.concat($e.principal.hostname, "-test") // Matches the event when $e.principal.hostname = "google"
Exemplo 3

O exemplo a seguir inclui uma variável de string e um literal de ponto flutuante como argumentos. Quando representados como strings, os números de ponto flutuante inteiros são formatados sem o ponto decimal (por exemplo, 1,0 é representado como "1"). Além disso, os números de ponto flutuante que excedem 16 casas decimais são truncados na 16ª casa decimal.

"google2.5" = strings.concat($e.principal.hostname, 2.5)
Exemplo 4

O exemplo a seguir inclui uma variável de string, um literal de string, uma variável de número inteiro e um literal de ponto flutuante como argumentos. Todas as variáveis são do mesmo evento, $e, e são concatenadas com os literais para retornar uma string.

"google-test802.5" = strings.concat($e.principal.hostname, "-test", $e.principal.port, 2.5)
Example 5

O exemplo a seguir tenta concatenar "principal.port" do evento $e1 com principal.hostname do evento $e2. Ele vai retornar um erro do compilador porque os argumentos são variáveis de eventos diferentes.

// Will not compile
"test" = strings.concat($e1.principal.port, $e2.principal.hostname)

strings.contains

Compatível com:
strings.contains( str, substr )

Descrição

Retorna verdadeiro se uma determinada string contiver a substring especificada. Caso contrário, ele retornará "false".

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

BOOL

Amostras de código

Exemplo 1

Este exemplo retorna "true" porque a string tem uma substring "is".

strings.contains("thisisastring", "is") = true
Exemplo 2

Este exemplo retorna "false" porque a string não tem a substring "that".

strings.contains("thisisastring", "that") = false

strings.count_substrings

Compatível com:
strings.count_substrings(string_to_search_in, substring_to_count)

Descrição

Quando recebe uma string e uma substring, retorna um int64 da contagem de ocorrências não sobrepostas da substring na string.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

INT

Amostras de código

Esta seção contém exemplos que calculam o número de vezes que uma substring aparece em uma determinada string.

Exemplo 1

Este exemplo usa uma string não nula e um caractere de substring único não nulo.

strings.count_substrings("this`string`has`four`backticks", "`") = 4
Exemplo 2

Este exemplo usa uma string não nula e uma substring não nula com mais de um caractere.

strings.count_substrings("str", "str") = 1
Exemplo 3

Este exemplo usa uma string não nula e uma substring vazia.

strings.count_substrings("str", "") = 0
Exemplo 4

Este exemplo usa uma string vazia e uma substring não nula com mais de um caractere.

strings.count_substrings("", "str") = 0
Example 5

Este exemplo usa uma string e uma substring vazias.

strings.count_substrings("", "") = 0
Exemplo 6

Este exemplo usa uma string não nula e uma substring não nula com mais de um caractere e mais de uma ocorrência.

strings.count_substrings("fooABAbarABAbazABA", "AB") = 3
Exemplo 7

Este exemplo usa uma string não nula e uma substring não nula com mais de um caractere e mais de uma ocorrência. Ele destaca a limitação com ocorrências de substrings sobrepostas.

strings.count_substrings("ABABABA", "ABA") = 2

strings.ends_with

Compatível com:
strings.ends_with(value, suffix)

Descrição

A função usa duas strings (value, suffix). Retorna verdadeiro se o sufixo não estiver vazio e estiver no final do valor.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

BOOL

Amostras de código

Os exemplos de código a seguir ilustram algumas maneiras de usar a função strings.ends_with.

Exemplo: retorna "true"

Retorna "true" quando o sufixo é encontrado no final do valor.

strings.ends_with(target.hostname, "com") = true
Exemplo: retorna "false"

Retorna "false" quando o sufixo não está no fim do valor.

strings.ends_with(target.hostname, "com") = false
Exemplo: retorna "false" quando idêntico

Retorna "false" quando o sufixo e o valor são idênticos.

target.hostname != "example.com"
strings.ends_with("str", "str") = true
Exemplo: retorna "false" quando o sufixo está vazio

Retorna "false" quando o sufixo é uma string vazia.

target.hostname != "example.com"
strings.ends_with("str", "") = false
Exemplo: retorna "false" quando o valor está vazio

Retorna "false" quando o valor é uma string vazia.

target.hostname != "example.com"
strings.ends_with("", "str") = false
Exemplo: retorna "false" quando o sufixo e o valor estão vazios

Retorna "false" quando o sufixo e o valor são strings vazias.

target.hostname != "example.com"
strings.ends_with("", "") = false

strings.extract_domain

Compatível com:
strings.extract_domain(url_string)

Descrição

Extrai o domínio de uma string.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Este exemplo mostra uma string vazia

strings.extract_domain("") = ""
Exemplo 2

string aleatória, não um URL

strings.extract_domain("1234") = ""
Exemplo 3

várias barras invertidas

strings.extract_domain("\\\\") = ""
Exemplo 4

Caracteres não alfabéticos tratados de maneira prática

strings.extract_domain("http://例子.卷筒纸.中国") = "卷筒纸.中国"
Example 5

processamento de URIs

strings.extract_domain("mailto:?to=&subject=&body=") = ""
Exemplo 6

vários caracteres antes do URL real

strings.extract_domain("     \t   !$5*^)&dahgsdfs;http://www.google.com") = "google.com"
Exemplo 7

caracteres especiais no URI #

strings.extract_domain("test#@google.com") = ""
Exemplo 8

caracteres especiais no URL #

strings.extract_domain("https://test#@google.com") = ""
Exemplo 9

caso de teste positivo

strings.extract_domain("https://google.co.in") = "google.co.in"

strings.extract_hostname

Compatível com:
strings.extract_hostname(string)

Descrição

Extrai o nome do host de uma string. Essa função diferencia maiúsculas de minúsculas.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Este exemplo retorna uma string vazia.

strings.extract_hostname("") = ""
Exemplo 2

string aleatória, não um URL

strings.extract_hostname("1234") = "1234"
Exemplo 3

várias barras invertidas

strings.extract_hostname("\\\\") = ""
Exemplo 4

tratamento adequado de caracteres que não são do inglês

strings.extract_hostname("http://例子.卷筒纸.中国") = "例子.卷筒纸.中国"
Example 5

processamento de URIs

strings.extract_hostname("mailto:?to=&subject=&body=") = "mailto"
Exemplo 6

vários caracteres antes do URL real

strings.extract_hostname("     \t   !$5*^)&dahgsdfs;http://www.google.com") = "www.google.com"
Exemplo 7

caracteres especiais no URI #

strings.extract_hostname("test#@google.com") = "test"
Exemplo 8

caracteres especiais no URL #

strings.extract_hostname("https://test#@google.com") = "test"

strings.from_base64

Compatível com:
strings.from_base64(base64_encoded_string)

Descrição

A função converte um valor STRING codificado em base64 em um valor BYTES binário bruto. As chamadas de função com valores que não podem ser convertidos retornam um BYTES vazio por padrão.

Tipos de dados de parâmetros

STRING

Tipo de retorno

BYTES

Amostras de código

Conversão de string codificada em base64 para bytes

A função converte uma string codificada em base64 na representação de bytes binários brutos.

strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Falha na conversão (padrão para bytes vazios)

A função usa bytes vazios como padrão se o valor fornecido for inválido.

strings.from_base64("invalid-value") = b'

strings.from_hex

Compatível com:
strings.from_hex(hex_string)

Descrição

Retorna os bytes associados à string hexadecimal especificada.

Tipos de dados de parâmetros

STRING

Tipo de retorno

BYTES

Amostras de código

Recebe bytes associados a uma determinada string hexadecimal.

Exemplo 1

Este exemplo mostra conversões de caracteres não hexadecimais.

strings.from_hex("str") // returns empty bytes
Exemplo 2

Este exemplo mostra uma entrada com uma string vazia.

strings.from_hex("") // returns empty bytes
Exemplo 3

Este exemplo mostra a conversão de strings hexadecimais.

strings.from_hex("1234") // returns 1234 bytes
Exemplo 4

Este exemplo mostra a conversão de caracteres não ASCII.

strings.from_hex("筒纸.中国") // returns empty bytes

strings.ltrim

Compatível com:
strings.ltrim(string_to_trim, cutset)

Descrição

Corta os espaços em branco à esquerda de uma determinada string. Essa função remove os caracteres iniciais presentes nesse conjunto de corte.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

STRING

Amostras de código

Confira alguns exemplos de casos de uso.

Exemplo 1

Este exemplo usa o mesmo primeiro e segundo argumento.

strings.ltrim("str", "str") = ""
Exemplo 2

Este exemplo usa uma string vazia como segundo argumento.

strings.ltrim("str", "") = "str"
Exemplo 3

Este exemplo usa uma string vazia como o primeiro argumento e uma string como o segundo.

strings.ltrim("", "str") = ""
Exemplo 4

Este exemplo usa strings que contêm espaços em branco e uma string como o segundo argumento.

strings.ltrim("a aastraa aa ", " a") = "straa aa "

strings.reverse

Compatível com:
strings.reverse(STRING)

Descrição

Retorna uma string que é o inverso da string de entrada.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir transmite uma string curta.

strings.reverse("str") = "rts"  // The function returns 'rts'.
Exemplo 2

O exemplo a seguir transmite uma string vazia.

strings.reverse("") = ""
Exemplo 3

O exemplo a seguir transmite um palíndromo.

strings.reverse("tacocat") = "tacocat"

strings.rtrim

Compatível com:
strings.rtrim(string_to_trim, cutset)

Descrição

Corta os espaços em branco à direita de uma determinada string. Remove os caracteres finais presentes nesse conjunto de corte.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

STRING

Amostras de código

Confira alguns exemplos de casos de uso.

Exemplo 1

O exemplo a seguir transmite a mesma string como o primeiro e o segundo argumento.

strings.rtrim("str", "str") = ""
Exemplo 2

O exemplo a seguir transmite uma string vazia como o segundo argumento.

strings.rtrim("str", "") = "str"
Exemplo 3

O exemplo a seguir transmite uma string vazia como o primeiro argumento e uma string não vazia como o segundo argumento.

strings.rtrim("", "str") = ""
Exemplo 4

O exemplo a seguir transmite uma string que contém espaços em branco como o primeiro argumento e uma string não vazia como o segundo argumento.

strings.rtrim("a aastraa aa ", " a") = "a aasstr"

strings.split

Compatível com:
strings.split(string, delimiter)

Descrição

Divide o valor da string usando o argumento delimitador. O delimitador padrão é uma vírgula (,).

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

ARRAY_STRINGS

Amostras de código

Os exemplos de código a seguir ilustram algumas maneiras de usar a função strings.split.

Exemplo: dividir string com padrão

O exemplo a seguir divide a string usando o delimitador padrão, que é uma vírgula.

strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Exemplo: dividir string com dois-pontos

O exemplo a seguir divide a string em cada dois-pontos (:).

strings.split("a:b:c:d", ":") = ["a", "b", "c", "d"]
Exemplo: delimitador ausente

No exemplo a seguir, falta o delimitador no valor da string.

strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Exemplo: delimitador vazio

O exemplo a seguir tem uma string delimitadora vazia.

strings.split("abc", "") = ["a", "b", "c"]

strings.to_lower

Compatível com:
strings.to_lower(stringText)

Descrição

Essa função usa uma string de entrada e retorna uma string depois de mudar todos os caracteres para minúsculas.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir retorna true.

"test@google.com" = strings.to_lower($e.network.email.to)

strings.to_upper

Compatível com:
strings.to_upper(string_val)

Descrição

Retorna a string original com todos os caracteres alfabéticos em maiúsculas.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

O exemplo a seguir retorna o argumento fornecido em letras maiúsculas.

strings.to_upper("example") = "EXAMPLE"

strings.trim

Compatível com:
strings.trim(string_to_trim, cutset)

Descrição

Corta os espaços em branco à esquerda e à direita de uma determinada string. Além disso, remova caracteres indesejados (especificados pelo argumento "cutset") da string de entrada.

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

STRING

Amostras de código

Confira alguns exemplos de casos de uso.

Exemplo 1

No exemplo a seguir, a mesma string é transmitida como a string de entrada e o conjunto de corte, o que resulta em uma string vazia.

strings.trim("str", "str") // ""
Exemplo 2

No exemplo a seguir, uma string vazia é transmitida como o conjunto de corte, o que resulta na string original "str" porque não há caracteres especificados no conjunto de corte para remover.

strings.trim("str", "") = "str"
Exemplo 3

No exemplo a seguir, a função gera uma string vazia porque a string de entrada já está vazia e não há caracteres para remover.

strings.trim("", "str") = ""
Exemplo 4

No exemplo a seguir, a função gera "str" porque a função "trim" remove o seguinte:

  • espaço em branco à direita em "a aastraa aa "
  • os caracteres especificados no conjunto de corte (espaço, a)
strings.trim("a aastraa aa ", " a") = "str"

strings.url_decode

Compatível com:
strings.url_decode(url_string)

Descrição

Dada uma string de URL, decodifique os caracteres de escape e processe os caracteres UTF-8 que foram codificados. Retorna uma string vazia se a decodificação falhar.

Tipos de dados de parâmetros

STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Este exemplo mostra um caso de teste positivo.

strings.url_decode("three%20nine%20four") = "three nine four"
Exemplo 2

Este exemplo mostra um caso de string vazia.

strings.url_decode("") // ""
Exemplo 3

Este exemplo mostra o processamento de caracteres não alfabéticos.

strings.url_decode("%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B") // "上海+中國"
Exemplo 4

Este exemplo mostra uma decodificação de URL de amostra.

strings.url_decode("http://www.google.com%3Fparam1%3D%22+1+%3E+2+%22%26param2%3D2%3B") // 'http://www.google.com?param1="+1+>+2+"&param2=2;'

timestamp.as_unix_seconds

Compatível com:
timestamp.as_unix_seconds(timestamp [, time_zone])

Descrição

Essa função retorna um número inteiro que representa o número de segundos após uma época Unix para a string de carimbo de data/hora especificada.

  • timestamp é uma string que representa um carimbo de data/hora de época válido. O formato precisa ser %F %T.
  • time_zone é opcional e é uma string que representa um fuso horário. Se omitido, o padrão será GMT. É possível especificar fusos horários usando literais de string. As opções são:

Confira exemplos de especificadores time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

STRING, STRING

Tipo de retorno

INT

Amostras de código

Exemplo 1

Carimbo de data/hora de época válido

timestamp.as_unix_seconds("2024-02-22 10:43:00") = 1708598580
Exemplo 2

Carimbo de data/hora de época válido com o fuso horário America/New_York

timestamp.as_unix_seconds("2024-02-22 10:43:00", "America/New_York") = 1708616580

timestamp.current_seconds

Compatível com:
timestamp.current_seconds()

Descrição

Retorna um número inteiro que representa a hora atual em segundos Unix. Isso é aproximadamente igual ao carimbo de data/hora da detecção e se baseia em quando a regra é executada. Essa função é um sinônimo da função timestamp.now().

Tipos de dados de parâmetros

NONE

Tipo de retorno

INT

Amostras de código

Exemplo 1

O exemplo a seguir retorna true se o certificado tiver expirado há mais de 24 horas. Ele calcula a diferença de tempo subtraindo os segundos Unix atuais e comparando usando um operador "maior que".

86400 < timestamp.current_seconds() - $e.network.tls.certificate.not_after

timestamp.get_date

Compatível com:
timestamp.get_date(unix_seconds [, time_zone])

Descrição

Essa função retorna uma string no formato YYYY-MM-DD, representando o dia em que um carimbo de data/hora está.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • time_zone é opcional e é uma string que representa um time_zone. Se omitido, o padrão será "GMT". É possível especificar fusos horários usando literais de string. As opções são:
    • O nome do banco de dados de fuso horário, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome do banco de dados de fuso horário" desta página.
    • O ajuste do fuso horário em relação ao UTC, no formato(+|-)H[H][:M[M]], por exemplo: "-08:00".

Confira exemplos de especificadores de time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_date($ts) = "2024-02-19"
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_date($ts, "America/Los_Angeles") = "2024-02-20"

timestamp.get_minute

Compatível com:
timestamp.get_minute(unix_seconds [, time_zone])

Descrição

Essa função retorna um número inteiro no intervalo [0, 59] que representa o minuto.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • time_zone é opcional e é uma string que representa um fuso horário. Se omitido, o padrão será "GMT". É possível especificar fusos horários usando literais de string. As opções são:
    • O nome do banco de dados de fuso horário, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome do banco de dados de fuso horário" desta página.
    • O ajuste do fuso horário em relação ao UTC, no formato(+|-)H[H][:M[M]], por exemplo: "-08:00".

Confira exemplos de especificadores time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

INT

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts, "America/Los_Angeles") = 15

timestamp.get_hour

Compatível com:
timestamp.get_hour(unix_seconds [, time_zone])

Descrição

Essa função retorna um número inteiro no intervalo [0, 23] que representa a hora.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • time_zone é opcional e é uma string que representa um fuso horário. Se omitido, o padrão será "GMT". É possível especificar fusos horários usando literais de string. As opções são:
    • O nome do banco de dados de fuso horário, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome do banco de dados de fuso horário" desta página.
    • O ajuste do fuso horário em relação ao UTC, no formato(+|-)H[H][:M[M]], por exemplo: "-08:00".

Confira exemplos de especificadores time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

INT

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts, "America/Los_Angeles") = 15

timestamp.get_day_of_week

Compatível com:
timestamp.get_day_of_week(unix_seconds [, time_zone])

Descrição

Essa função retorna um número inteiro no intervalo [1, 7] que representa o dia da semana, começando pelo domingo. Por exemplo, 1 = domingo e 2 = segunda-feira.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • time_zone é opcional e é uma string que representa um time_zone. Se omitido, o padrão será "GMT". É possível especificar fusos horários usando literais de string. As opções são:
    • O nome do banco de dados de fuso horário, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome do banco de dados de fuso horário" desta página.
    • O ajuste do fuso horário em relação ao UTC, no formato(+|-)H[H][:M[M]], por exemplo: "-08:00".

Confira exemplos de especificadores de time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

INT

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_day_of_week($ts) = 6
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_day_of_week($ts, "America/Los_Angeles") = 6

timestamp.get_timestamp

Compatível com:
timestamp.get_timestamp(unix_seconds, optional timestamp_format/time_granularity, optional timezone)

Descrição

Essa função retorna uma string no formato YYYY-MM-DD, representando o dia em que um carimbo de data/hora está.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • timestamp_format é opcional e é uma string que representa o formato do carimbo de data/hora. Se omitido, o padrão é %F %T. É possível especificar o formato usando uma string de formato de data e hora ou uma das seguintes granularidades de tempo: SECOND, MINUTE, HOUR, DATE, WEEK, MONTH ou YEAR. Para mais opções de formatação, consulte Formatar elementos para partes de data e hora.
  • time_zone é opcional e é uma string que representa um fuso horário. Se omitido, o padrão será GMT. É possível especificar fusos horários usando literais de string. As opções são:

Confira exemplos de especificadores time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING, STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é GMT.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_timestamp($ts) = "2024-02-22 10:43:51"
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_timestamp($ts, "%F %T", "America/Los_Angeles") = "2024-02-22 10:43:51"
Exemplo 3

Este exemplo usa uma string literal para definir o timestamp_format.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_timestamp($ts, "%Y-%m", "GMT") = "2024-02"
Exemplo 4

Este exemplo formata um carimbo de data/hora do Unix como uma string com granularidade de segundo.

timestamp.get_timestamp(1708598631, "SECOND", "GMT") = "2024-02-22 10:43:51"
Example 5

Este exemplo formata um carimbo de data/hora do Unix como uma string com granularidade de minutos.

timestamp.get_timestamp(1708598631, "MINUTE", "GMT") = "2024-02-22 10:43"
Exemplo 6

Este exemplo formata um carimbo de data/hora Unix como uma string com granularidade de hora.

timestamp.get_timestamp(1708598631, "HOUR", "GMT") = "2024-02-22 10"
Exemplo 7

Este exemplo formata um carimbo de data/hora Unix como uma string com granularidade diária.

timestamp.get_timestamp(1708598631, "DATE", "GMT") = "2024-02-22"
Exemplo 8

Este exemplo formata um carimbo de data/hora do Unix como uma string na granularidade de semana.

timestamp.get_timestamp(1708598631, "WEEK", "GMT") = "2024-02-18"
Exemplo 9

Este exemplo formata um carimbo de data/hora Unix como uma string na granularidade mensal.

timestamp.get_timestamp(1708598631, "MONTH", "GMT") = "2024-02"
Exemplo 10

Este exemplo formata um carimbo de data/hora Unix como uma string na granularidade anual.

timestamp.get_timestamp(1708598631, "YEAR", "GMT") = "2024"

timestamp.get_week

Compatível com:
timestamp.get_week(unix_seconds [, time_zone])

Descrição

Essa função retorna um número inteiro no intervalo [0, 53] que representa a semana do ano. As semanas começam no domingo. As datas anteriores ao primeiro domingo do ano estão na semana 0.

  • unix_seconds é um número inteiro que representa o número de segundos desde a época Unix, como $e.metadata.event_timestamp.seconds, ou um marcador de posição que contém esse valor.
  • time_zone é opcional e é uma string que representa um fuso horário. Se omitido, o padrão será "GMT". É possível especificar fusos horários usando literais de string. As opções são:
    • O nome do banco de dados de fuso horário, por exemplo, "America/Los_Angeles". Para mais informações, consulte a coluna "Nome do banco de dados de fuso horário" desta página.
    • O ajuste do fuso horário em relação ao UTC, no formato(+|-)H[H][:M[M]], por exemplo: "-08:00".

Confira exemplos de especificadores time_zone válidos, que podem ser transmitidos como o segundo argumento para funções de extração de tempo:

"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

INT

Amostras de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, então o padrão é "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_week($ts) = 0
Exemplo 2

Este exemplo usa uma string literal para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_week($ts, "America/Los_Angeles") = 0

timestamp.now

Compatível com:
timestamp.now()

Descrição

Retorna o número de segundos desde 1970-01-01 00:00:00 UTC. Isso também é conhecido como horário da época Unix.

Tipo de retorno

INT

Amostras de código

Exemplo 1

O exemplo a seguir retorna um carimbo de data/hora para o código executado em 22 de maio de 2024 às 18:16:59.

timestamp.now() = 1716401819 // Unix epoch time in seconds for May 22, 2024 at 18:16:59

window.avg

Compatível com:
window.avg(numeric_values [, should_ignore_zero_values])

Descrição

Retorna a média dos valores de entrada (que podem ser números inteiros ou de ponto flutuante). Definir o segundo argumento opcional como "true" ignora os valores zero.

Tipos de dados de parâmetros

INT|FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo mostra a média de números inteiros.

// This rule sets the outcome $size_mode to the average
// file size in the 5 minute match window.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.avg($e.file.size) // yields 2.5 if the event file size values in the match window are 1, 2, 3 and 4
Exemplo 2

Este exemplo mostra a média de ponto flutuante.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.avg($e.file.size) // yields 1.75 if the event file size values in the match window are 1.1 and 2.4
Exemplo 3

Média de entrada negativa

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.avg($e.file.size) // yields 0.6 if the event file size values in the match window are -1.1, 1.1, 0.0 and 2.4
Exemplo 4

0 retorna 0

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.avg($e.file.size) // yields 0 if the event file size values in the match window is 0
Example 5

Ignorando 0 valores

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.avg($e.file.size, true) // yields 394 if the event file size values in the match window are 0, 0, 0 and 394

window.first

Compatível com:
window.first(values_to_sort_by, values_to_return)

Descrição

Essa função de agregação retorna um valor de string derivado de um evento com o menor valor inteiro correlacionado na janela de correspondência. Um exemplo de caso de uso é extrair o userId do evento com o carimbo de data/hora mais antigo na janela de correspondência.

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

STRING

Amostras de código

Receba um valor de string derivado de um evento com o menor valor inteiro correlacionado na janela de correspondência.

// This rule sets the outcome $first_event to the lowest correlated int value
// in the 5 minute match window.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $first_event = window.first($e.metadata.timestamp.seconds, $e.metadata.event_type) // yields v1 if the events in the match window are 1, 2 and 3 and corresponding values v1, v2, and v3.

window.last

Compatível com:
window.last(values_to_sort_by, values_to_return)

Descrição

Essa função de agregação retorna um valor de string derivado de um evento com o maior valor int correlacionado na janela de correspondência. Um exemplo de caso de uso é receber o userid do evento com o carimbo de data/hora mais baixo na janela de correspondência (carimbo de data/hora mais alto).

Tipos de dados de parâmetros

INT, STRING

Tipo de retorno

STRING

Amostras de código

Recebe um valor de string derivado de um evento com o maior valor inteiro correlacionado na janela de correspondência.

// This rule sets the outcome $last_event to the highest correlated int value
// in the 5 minute match window.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $last_event = window.first($e.metadata.timestamp.seconds, $e.metadata.event_type) // yields v3 if the events in the match window are 1, 2 and 3 and corresponding values v1, v2, and v3.

window.median

Compatível com:
window.median(numeric_values, should_ignore_zero_values)

Descrição

Retorna a mediana dos valores de entrada. Se houver dois valores medianos, apenas um será escolhido de forma não determinística como o valor de retorno.

Tipos de dados de parâmetros

INT|FLOAT, BOOL

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo retorna a mediana quando os valores de entrada não são zero.

rule median_file_size {
    meta:
    events:
      $e.metadata.event_type = "FILE_COPY"
        $userid = $e.principal.user.userid
    match:
      $userid over 1h
    outcome:
      $median_file_size = window.median($e.principal.file.size) // returns 2 if the file sizes in the match window are [1, 2, 3]
  condition:
      $e
}
Exemplo 2

Este exemplo retorna a mediana quando a entrada inclui alguns valores zero que não devem ser ignorados.

rule median_file_size {
    meta:
    events:
      $e.metadata.event_type = "FILE_COPY"
        $userid = $e.principal.user.userid
    match:
      $userid over 1h
    outcome:
      $median_file_size = window.median($e.principal.file.size) // returns 1 if the file sizes in the match window are [0,0, 1, 2, 3]
  condition:
      $e
}
Exemplo 3

Este exemplo retorna a mediana quando a entrada inclui alguns valores zero que devem ser ignorados.

rule median_file_size {
    meta:
    events:
      $e.metadata.event_type = "FILE_COPY"
        $userid = $e.principal.user.userid
    match:
      $userid over 1h
    outcome:
      $median_file_size = window.median($e.principal.file.size, true) // returns 2 if the file sizes in the match window are [0,0, 1, 2, 3]
  condition:
      $e
}
Exemplo 4

Este exemplo retorna a mediana quando a entrada inclui todos os valores zero que devem ser ignorados.

rule median_file_size {
    meta:
    events:
      $e.metadata.event_type = "FILE_COPY"
        $userid = $e.principal.user.userid
    match:
      $userid over 1h
    outcome:
      $median_file_size = window.median($e.principal.file.size) // returns 0 if the file sizes in the match window are [0,0]
  condition:
      $e
}
Example 5

Este exemplo mostra que, quando há várias medianas, apenas uma é retornada.

rule median_file_size {
    meta:
    events:
      $e.metadata.event_type = "FILE_COPY"
        $userid = $e.principal.user.userid
    match:
      $userid over 1h
    outcome:
      $median_file_size = window.median($e.principal.file.size) // returns 1 if the file sizes in the match window are [1, 2, 3, 4]
  condition:
      $e
}

window.mode

Compatível com:
window.mode(values)

Descrição

Retorna a moda dos valores de entrada. Se houver vários valores de modo possíveis, apenas um deles será escolhido de forma não determinística como o valor de retorno.

Tipos de dados de parâmetros

INT|FLOAT|STRING

Tipo de retorno

STRING

Amostras de código

Exemplo 1

Recebe o modo dos valores na janela de correspondência.

// This rule sets the outcome $size_mode to the most frequently occurring
// file size in the 5 minute match window.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $size_mode = window.mode($e.file.size) // yields 1.6 if the event file size values in the match window are 1.6, 2, and 1.6

window.range

Compatível com:
window.range(numeric_values, optional should_ignore_zero_values)

Descrição

Retorna o intervalo dos valores de entrada encontrados (mínimo e máximo inclusivos). Cada valor pode ser um número inteiro ou de ponto flutuante. Definir o segundo argumento opcional como "true" ignora os valores zero.

Tipos de dados de parâmetros

INT|FLOAT, BOOL

Tipo de retorno

ARRAY_FLOATS

Amostras de código

Os exemplos de código a seguir ilustram algumas maneiras de usar a função window.range.

Exemplo: número inteiro mínimo e máximo

Este exemplo mostra o valor inteiro mínimo e máximo.

window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Exemplo: ponto flutuante mínimo e máximo

Este exemplo mostra o pontuação flutuante mínimo e máximo.

window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Exemplo: número inteiro negativo mínimo e máximo

Este exemplo mostra o valor inteiro negativo mínimo e máximo.

window.range([-1.100000, 1.100000, 0.000000, 2.400000], false) = [-1.100000, 2.400000]
Exemplo: valor 0 ignorado

Este exemplo mostra como os valores 0 são ignorados quando você define o segundo parâmetro.

window.range([0, 0, 0, 394, 1], true) = [1.000000, 394.000000]

window.stddev

Compatível com:
window.stddev(numeric_values)

Descrição

Retorna o desvio padrão dos valores de entrada em uma janela de correspondência.

Tipos de dados de parâmetros

INT|FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo retorna o desvio padrão de números inteiros em uma janela de correspondência.

// This rule creates a detection when the file size stddev in 5 minutes for a user is over a threshold.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.stddev($e.file.size) // yields 4.0 if the event file size values in the match window are [10, 14, 18].
condition:
  $e and #p1 > 2
Exemplo 2

Este exemplo retorna o desvio padrão de números de ponto flutuante em uma janela de correspondência.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.stddev($e.file.size) // yields 4.488686 if the event file size values in the match window are [10.00, 14.80, 18.97].
condition:
  $e and #p1 > 2
Exemplo 3

Este exemplo retorna o desvio padrão em uma janela de correspondência que contém números negativos.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.stddev($e.file.size) // yields 48.644972 if the event file size values in the match window are [-1, -56, -98].
condition:
  $e and #p1 > 2
Exemplo 4

Este exemplo retorna com desvio padrão zero quando todos os valores na janela de correspondência são iguais.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.stddev($e.file.size) // yields 0.000000 if the event file size values in the match window are [1, 1, 1].
condition:
  $e and #p1 > 2
Example 5

Este exemplo retorna o desvio padrão de uma janela de correspondência que contém números positivos e negativos.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.stddev($e.file.size) // yields 1.000000 if the event file size values in the match window are [1, 0, -1].
condition:
  $e and #p1 > 10

window.variance

Compatível com:
window.variance(values)

Descrição

Essa função retorna a variância especificada dos valores de entrada.

Tipos de dados de parâmetros

INT|FLOAT

Tipo de retorno

FLOAT

Amostras de código

Exemplo 1

Este exemplo retorna a variância de todos os números inteiros.

// This rule creates a detection when the file size variance in 5 minutes for a user is over a threshold.
events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 16 if the event file size values in the match window are [10, 14, 18].
condition:
  $e and #p1 > 10
Exemplo 2

Este exemplo retorna a variância de todos os números de ponto flutuante.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 20.148300 if the event file size values in the match window are [10.00, 14.80, 18.97].
condition:
  $e and #p1 > 10
Exemplo 3

Este exemplo retorna a variância de números negativos.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 2366.333333 if the event file size values in the match window are [-1, -56, -98].
condition:
  $e and #p1 > 10
Exemplo 4

Este exemplo retorna um valor de variância pequeno.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 0.000000 if the event file size values in the match window are [0.000000, 0.000000, 0.000100].
condition:
  $e and #p1 > 10
Example 5

Este exemplo retorna uma variância zero.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 0.000000 if the event file size values in the match window are [1, 1, 1].
condition:
  $e and #p1 > 10
Exemplo 6

Este exemplo retorna a variância de números positivos e negativos.

events:
 $e.user.userid = $userid
match:
 $userid over 5m
outcome:
  $p1 = window.variance($e.file.size) // yields 1.000000 if the event file size values in the match window are [1, 0, -1].
condition:
  $e and #p1 > 10

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.