Funções

Suportado em:

Esta secção descreve as funções YARA-L 2.0 que pode usar em consultas de regras, de pesquisa e do painel de controlo.

Consulte também as funções YARA-L 2.0 para painéis de controlo e as estatísticas e agregações na pesquisa com o YARA-L 2.0.

É possível usar estas funções nas seguintes partes de uma consulta YARA-L:

arrays.concat

Suportado em:
arrays.concat(string_array, string_array)

Descrição

Devolve uma nova matriz de strings copiando elementos de matrizes de strings originais.

Tipos de dados de parâmetros

ARRAY_STRINGS, ARRAY_STRINGS

Tipo devolvido

ARRAY_STRINGS

Exemplos de código

Exemplo 1

O exemplo seguinte concatena duas matrizes de strings diferentes.

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

O exemplo seguinte concatena matrizes com uma string vazia.

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

O exemplo seguinte concatena matrizes vazias.

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

arrays.index_to_float

Suportado em:
arrays.index_to_float(array, index)

Descrição

Devolve o elemento no índice especificado de uma matriz. O elemento nesse índice é devolvido como um número de vírgula flutuante.

O índice é um valor inteiro que representa a posição de um elemento na matriz. Por predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite o acesso a elementos da matriz relativos ao fim da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

O exemplo seguinte obtém um elemento no índice 1 de uma matriz de números de vírgula flutuante.

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

O exemplo seguinte obtém um elemento no índice -1 de uma matriz de números de vírgula flutuante.

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

O exemplo seguinte obtém um elemento para um índice superior ao tamanho da matriz.

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

O exemplo seguinte obtém um elemento de uma matriz vazia.

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

O exemplo seguinte obtém 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 seguinte obtém 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

Suportado em:
arrays.index_to_int(array_of_inputs, index)

Descrição

Devolve o valor num determinado índice numa matriz como um número inteiro.

O índice é um valor inteiro que representa a posição de um elemento na matriz. Por predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite o acesso a elementos da matriz relativos ao fim da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo devolvido

INT

Exemplos de código

Exemplo 1

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

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

Esta função devolve o elemento no índice -1.

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

Devolve 0 para o elemento fora dos limites.

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

Esta função obtém o elemento da matriz de números de vírgula flutuante no índice 1.

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

Esta função obtém o elemento da matriz int no índice 0.

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

arrays.index_to_str

Suportado em:
arrays.index_to_str(array, index)

Descrição

Devolve 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 predefinição, o primeiro elemento de uma matriz tem um índice de 0 e o último elemento tem um índice de n-1, onde n é a dimensão da matriz. A indexação negativa permite aceder a elementos da matriz a partir do final da matriz. Por exemplo, um índice de -1 refere-se ao último elemento na matriz e um índice de -2 refere-se ao penúltimo elemento na matriz.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte obtém um elemento no índice 1 de uma matriz de strings.

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

O exemplo seguinte obtém 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 seguinte obtém um elemento para um índice superior ao tamanho da matriz, o que devolve uma string vazia.

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

O exemplo seguinte obtém um elemento de uma matriz vazia.

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

O exemplo seguinte obtém um elemento no índice 0 de uma matriz de números de vírgula flutuante. O resultado é devolvido como uma string.

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

O exemplo seguinte obtém um elemento no índice 2 de uma matriz de números inteiros. O resultado está no formato de uma string.

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

arrays.join_string

Suportado em:
arrays.join_string(array_of_strings, optional_delimiter)

Descrição

Converte uma matriz de strings numa única string separada pelo parâmetro opcional. Se não for fornecido nenhum delimitador, é usada a string vazia.

Tipos de dados de parâmetros

ARRAY_STRINGS, STRING

Tipo devolvido

STRING

Exemplos de código

Seguem-se alguns exemplos de como usar a função:

Exemplo 1

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

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

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

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

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

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

arrays.length

Suportado em:
arrays.length(repeatedField)

Descrição

Devolve o número de elementos de campo repetidos.

Tipos de dados de parâmetros

LIST

Tipo devolvido

NUMBER

Exemplos de código

Exemplo 1

Devolve o número de elementos de campo repetidos.

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

Se existirem vários campos repetidos ao longo do caminho, devolve o número total de elementos de campos repetidos.

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

arrays.max

Suportado em:
arrays.max(array_of_ints_or_floats)

Descrição

Devolve o maior elemento numa matriz ou zero se a matriz estiver vazia.

Tipos de dados de parâmetros

ARRAY_INTS|ARRAY_FLOATS

Tipo devolvido

FLOAT

Exemplos de código

Seguem-se alguns exemplos de como usar a função:

Exemplo 1

Este exemplo devolve o elemento maior numa matriz de números inteiros.

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

Este exemplo devolve o elemento maior numa matriz de números de vírgula flutuante.

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

arrays.min

Suportado em:
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])

Descrição

Devolve o elemento mais pequeno numa matriz ou zero se a matriz estiver vazia. Se o segundo argumento opcional estiver definido como verdadeiro, os elementos iguais a zero são ignorados.

Tipos de dados de parâmetros

ARRAY_INTS|ARRAY_FLOATS, BOOL

Tipo devolvido

FLOAT

Exemplos de código

Seguem-se alguns exemplos de como usar a função:

Exemplo 1

Este exemplo devolve o elemento mais pequeno numa matriz de números inteiros.

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

Este exemplo devolve o elemento mais pequeno numa matriz de números de vírgula flutuante.

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

Este exemplo devolve o elemento mais pequeno numa matriz de números de vírgula flutuante, ignorando os zeros.

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

arrays.size

Suportado em:
arrays.size( array )

Descrição

Devolve a dimensão da matriz. Devolve 0 para uma matriz vazia.

Tipos de dados de parâmetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS

Tipo devolvido

INT

Exemplos 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 int que contém 3 elementos.

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

Este exemplo usa uma matriz de números de vírgula flutuante que contém 1 elemento

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

Este exemplo usa uma matriz vazia.

arrays.size([]) = 0

bytes.to_base64

Suportado em:
bytes.to_base64(bytes, optional_default_string)

Descrição

A função converte um valor bytes num valor base64 encoded string. As chamadas de funções com valores que não podem ser convertidos devolvem uma string vazia por predefinição.

Tipos de dados de parâmetros

BYTES, STRING

Tipo devolvido

STRING

Exemplos de código

Bytes binários não processados para string codificada em Base64

A função converte os bytes binários não processados numa string codificada em base64.

bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Conversão falhada (predefinição para a string fornecida opcionalmente)

A função usa a predefiniçã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

Suportado em:
cast.as_bool(string_or_int)

Descrição

A função converte um valor int ou string num valor bool. As chamadas de funções com valores que não podem ser convertidos devolvem FALSE. Devolve VERDADEIRO apenas para o número inteiro 1 e a string "verdadeiro" sem distinção entre maiúsculas e minúsculas.

Tipos de dados de parâmetros

INT|STRING

Tipo devolvido

BOOL

Exemplos 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

Truthy string

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

String verdadeira com maiúsculas

cast.as_bool("TRUE") = true
Exemplo 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

Suportado em:
cast.as_float(string_to_cast)

Descrição

Converte uma string numérica num número de vírgula flutuante. Todas as chamadas de funções com valores que não podem ser convertidos devolvem 0. Os números de vírgula flutuante mantêm a precisão até 7 dígitos decimais.

Tipos de dados de parâmetros

STRING

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

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

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

A conversão de uma string vazia devolve 0.

cast.as_float("") = 0.0000000
Exemplo 3

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

cast.as_float("1.012345678") = 1.0123456

cast.as_string

Suportado em:
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 respetiva representação de string. Pode fornecer um argumento default_string opcional para processar casos em que a conversão falha. Se omitir o argumento default_string ou se a entrada for uma sequência de bytes UTF-8 ou BASE64 inválida, a função devolve uma string vazia.

Tipos de dados de parâmetros

INT|BYTES|BOOL, STRING

Tipo devolvido

STRING

Exemplos 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 número de vírgula flutuante 2.25 na string "2.25".

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

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

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

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

cast.as_string(true, "") = "true"
Conversão falhada (predefinição para a string fornecida opcionalmente)

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

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

impressão digital

Suportado em:
hash.fingerprint2011(byteOrString)

Descrição

Esta função calcula o hash fingerprint2011 de uma sequência de bytes de entrada ou de uma string. Esta função devolve um valor INT não assinado no intervalo [2, 0xFFFFFFFFFFFFFFFF].

Tipos de dados de parâmetros

BTYE, STRING

Tipo devolvido

INT

Exemplo de código

id_fingerprint = hash.fingerprint2011("user123")

grupo

Suportado em:
group(field1, field2, field3, ...)

Descrição

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

Na pesquisa UDM, os campos agrupados são usados para pesquisar em vários campos de um tipo semelhante. A função group é semelhante aos campos agrupados, exceto que permite selecionar os campos que quer agrupar para acionar uma deteção. Pode usar a função de grupo para reunir informações sobre uma entidade específica (por exemplo, um nome de anfitrião, um endereço IP ou um ID de utilizador) em diferentes tipos de substantivos.

Exemplos de código

Exemplo 1

Agrupe todos os endereços IP e forneça uma contagem descendente do endereço IP mais prevalente no intervalo de tempo analisado.

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

hash.sha256

Suportado em:
hash.sha256(string)

Descrição

Devolve um hash SHA-256 da string de entrada.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos 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

Suportado em:
math.abs(numericExpression)

Descrição

Devolve o valor absoluto de uma expressão de número inteiro ou de vírgula flutuante.

Tipos de dados de parâmetros

NUMBER

Tipo devolvido

NUMBER

Exemplos de código

Exemplo 1

Este exemplo devolve True se o evento tiver ocorrido mais de 5 minutos após a hora especificada (em segundos desde a época Unix), independentemente de o evento ter ocorrido antes ou depois da hora especificada. Uma chamada para math.abs não pode depender de várias variáveis ou marcadores de posição. Por exemplo, não pode substituir o valor de tempo codificado de 1643687343 no exemplo seguinte por $e2.metadata.event_timestamp.seconds.

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

math.ceil

Suportado em:
math.ceil(number)

Descrição

Devolve o menor número inteiro que não é inferior ao número indicado (arredondamento para cima). Devolve 0 se a entrada for nula ou demasiado grande para caber num int64.

Tipos de dados de parâmetros

FLOAT

Tipo devolvido

INT

Exemplos de código

Esta secção contém exemplos de utilização de math.ceil.

Exemplo 1

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

math.ceil(2.000000) = 2
Exemplo 2

Este exemplo devolve o limite superior de um número negativo.

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

Este exemplo devolve 0 como o limite superior de um número demasiado grande para um inteiro de 64 bits.

math.ceil(184467440737095516160.0) = 0

math.floor

Suportado em:
math.floor(float_val)

Descrição

Devolve o maior valor inteiro que não é superior ao valor fornecido (arredondamento para baixo). Devolve 0 se a entrada for nula ou demasiado grande para caber num int64.

Tipos de dados de parâmetros

FLOAT

Tipo devolvido

INT

Exemplos 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

Suportado em:
math.geo_distance(longitude1, latitude1, longitude2, latitude2))

Descrição

Devolve a distância entre duas localizações geográficas (coordenadas) em metros. Devolve -1 se as coordenadas forem inválidas.

Tipos de dados de parâmetros

FLOAT, FLOAT, FLOAT, FLOAT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

O exemplo seguinte devolve 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 seguinte devolve 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 seguinte devolve -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 seguinte devolve 0 quando as coordenadas são iguais:

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

math.is_increasing

Suportado em:
math.is_increasing(num1, num2, num3)

Descrição

Aceita uma lista de valores numéricos (inteiros ou duplos) e devolve True se os valores estiverem por ordem crescente e False caso contrário.

Tipos de dados de parâmetros

INT|FLOAT, INT|FLOAT, INT|FLOAT

Tipo devolvido

BOOL

Exemplos de código

Exemplo 1

Este exemplo inclui valores semelhantes a datas/horas em segundos.

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

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

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

Este exemplo inclui um valor duplo negativo, um valor INT64 zero e um valor 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
Exemplo 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

Suportado em:
math.log(numericExpression)

Descrição

Devolve o valor do logaritmo natural de uma expressão de número inteiro ou de vírgula flutuante.

Tipos de dados de parâmetros

NUMBER

Tipo devolvido

NUMBER

Exemplos de código

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

math.pow

Suportado em:
math.pow(base, exponent)

Descrição

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

Tipos de dados de parâmetros

base: INT|FLOAT expoente: INT|FLOAT

Tipo devolvido

FLOAT

Exemplos 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 base de fração.

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

Este exemplo mostra uma base de fração e uma 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
Exemplo 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 base negativo.

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

Este exemplo mostra um caso 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 registo de base grande.

math.pow(9223372036854775807, 1.200000) // 57262152889751593549824

math.random

Suportado em:
math.random()

Descrição

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

Tipo devolvido

FLOAT

Exemplos de código

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

math.round

Suportado em:
math.round(numericExpression, decimalPlaces)

Descrição

Devolve 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 devolvido

NUMBER

Exemplos 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

Suportado em:
math.sqrt(number)

Descrição

Devolve a raiz quadrada do número fornecido. Devolve 0 no caso de números negativos.

Tipos de dados de parâmetros

INT|FLOAT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

Este exemplo devolve a raiz quadrada de um argumento int.

math.sqrt(3) = 1.732051
Exemplo 2

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

math.sqrt(-3) = 0.000000
Exemplo 3

Este exemplo devolve a raiz quadrada do argumento zero.

math.sqrt(0) = 0.000000
Exemplo 4

Este exemplo devolve a raiz quadrada de um argumento flutuante.

math.sqrt(9.223372) = 3.037000
Exemplo 5

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

math.sqrt(0-1.200000) = 0.000000

métricas

Suportado em:

As funções de métricas podem agregar grandes quantidades de dados do histórico. Pode usar esta opção na sua regra através de metrics.functionName() na secção de resultados.

Para mais informações, consulte as métricas YARA-L.

net.ip_in_range_cidr

Suportado em:
net.ip_in_range_cidr(ipAddress, subnetworkRange)

Descrição

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

Pode usar o YARA-L para pesquisar eventos UDM em todos os endereços IP numa sub-rede através da declaração net.ip_in_range_cidr(). O IPv4 e o IPv6 são suportados.

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

Para pesquisar num intervalo de endereços IP, especifique um ipcampo de UDM e um intervalo de Classless Inter-Domain Routing (CIDR). O YARA-L pode processar campos de endereços IP singulares e repetidos.

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

BOOL

Exemplos 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 que usa a declaração net.ip_in_range_cidr(), consulte a regra de exemplo em Evento único no intervalo de endereços IP.)

re.regex

Suportado em:

Pode definir a correspondência de expressões regulares no YARA-L 2.0 através de uma das seguintes sintaxes:

  • Usar a sintaxe YARA-L: relacionada com eventos. Segue-se uma representação genérica desta sintaxe:

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

    • Campo ao qual a expressão regular é aplicada.
    • Expressão regular especificada como uma string.

    Segue-se uma representação genérica desta sintaxe:

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

Descrição

Esta função devolve 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.

Notas
  • Para corresponder à string exata ou apenas a um prefixo ou um sufixo, inclua os carateres de âncora ^(início) e $ (fim) na expressão regular. Por exemplo, /^full$/ corresponde exatamente a "full", enquanto /full/ pode corresponder a "fullest", "lawfull" e "joyfully".
  • Se o campo UDM incluir carateres de nova linha, o regexp só corresponde à primeira linha do campo UDM. Para aplicar a correspondência total de campos da UDM, adicione um (?s) à expressão regular. Por exemplo, substitua /.*allUDM.*/ por /(?s).*allUDM.*/.
  • Pode usar o modificador nocase após as strings para indicar que a pesquisa deve ignorar as letras maiúsculas.

Tipos de dados de parâmetros

STRING, STRING

Tipos de expressões de parâmetros

ANY, ANY

Tipo devolvido

BOOL

Exemplos de código

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

re.capture

Suportado em:
re.capture(stringText, regex)

Descrição

Captura (extrai) dados de uma string através do padrão de expressão regular fornecido no argumento.

Esta função recebe dois argumentos:

  • stringText: a string original a pesquisar.
  • regex: a expressão regular que indica o padrão a pesquisar.

A expressão regular pode conter 0 ou 1 grupos de captura entre parênteses. Se a expressão regular contiver 0 grupos de captura, a função devolve a primeira substring correspondente completa. Se a expressão regular contiver 1 grupo de captura, devolve a primeira substring correspondente para o grupo de captura. A definição de dois ou mais grupos de captura devolve um erro do compilador.

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Neste exemplo, se $e.principal.hostname contiver "aaa1bbaa2", o seguinte seria verdadeiro, porque a função devolve 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 o que está após o símbolo @ num email. Se o campo $e.network.email.from for test@google.com, o exemplo devolve google.com. O exemplo seguinte 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 devolve uma string vazia. Pode omitir eventos em que não ocorra nenhuma correspondência excluindo a string vazia, o que é especialmente importante quando 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

Suportado em:
re.replace(stringText, replaceRegex, replacementText)

Descrição

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

Esta função usa três argumentos:

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

Devolve uma nova string derivada da string original stringText, onde todas as subcadeias que correspondem ao padrão em replaceRegex são substituídas pelo valor em replacementText. Pode usar dígitos com barra invertida (\1 a \9) em replacementText para inserir texto correspondente ao grupo entre parênteses correspondente no padrão replaceRegex. Use \0 para se referir a todo o texto correspondente.

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

Tipos de dados de parâmetros

STRING, STRING, STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Este exemplo captura tudo o que está após o símbolo @ num email, substitui com por org e, em seguida, devolve o resultado. Repare na utilização de funções aninhadas.

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

Este exemplo usa dígitos com carateres de escape de barra invertida no argumento replacementText para fazer referência a correspondências com o 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

Tenha em atenção os seguintes casos quando trabalhar com strings vazias e re.replace():

Usar 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, pode usar "^$" 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

Suportado em:
optimization.sample_rate(byteOrString, rateNumerator, rateDenominator)

Descrição

Esta função determina se deve incluir um evento com base numa estratégia de amostragem determinística. Esta função devolve:

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

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

hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator

Tipos de dados de parâmetros

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

Tipo devolvido

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

Suportado em:
strings.base64_decode(encodedString)

Descrição

Devolve uma string que contém a versão descodificada em base64 da string codificada.

Esta função seleciona uma string codificada em base64 como um argumento. Se encodedString não for uma string codificada em base64 válida, a função devolve encodedString inalterado.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

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

strings.coalesce

Suportado em:
strings.coalesce(a, b, c, ...)

Descrição

Esta função aceita um número ilimitado de argumentos e devolve 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 devolve uma string vazia.

Os argumentos podem ser literais, campos de eventos ou chamadas de funções. Todos os argumentos têm de ser do tipo STRING. Se algum argumento for um campo de evento, os atributos têm de ser do mesmo evento.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte 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 seguinte chama a função coalesce com mais de dois argumentos. Esta 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 unidos nesta chamada é a mesma ordem em que são enumerados na condição da regra:

  1. $e.principal.ip é avaliado primeiro.
  2. $e.src.ip é avaliado em seguida.
  3. $e.target.ip é avaliado em seguida.
  4. Por último, a string "No IP" é devolvida como um valor predefinido se os campos anteriores não estiverem definidos.ip
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Exemplo 3

O exemplo seguinte tenta unir principal.hostname do evento $e1 e do evento $e2. Devolve 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

Suportado em:
strings.concat(a, b, c, ...)

Descrição

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

Se algum argumento for um campo de evento, os atributos têm de ser do mesmo evento.

Tipos de dados de parâmetros

STRING, FLOAT, INT

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte inclui uma variável de string e uma variável inteira como argumentos. Ambos principal.hostname e principal.port são do mesmo evento, $e, e são concatenados para devolver uma string.

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

O exemplo seguinte 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 seguinte inclui uma variável de string e um literal flutuante como argumentos. Quando representados como strings, os números de vírgula flutuante que são números inteiros são formatados sem o ponto decimal (por exemplo, 1,0 é representado como "1"). Além disso, os números de vírgula flutuante que excedam dezasseis dígitos decimais são truncados para a décima sexta casa decimal.

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

O exemplo seguinte inclui uma variável de string, um literal de string, uma variável inteira e um literal flutuante como argumentos. Todas as variáveis são do mesmo evento, $e, e são concatenadas com os literais para devolver uma string.

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

O exemplo seguinte tenta concatenar principal.port do evento $e1 com principal.hostname do evento $e2. Devolve 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

Suportado em:
strings.contains( str, substr )

Descrição

Devolve true se uma determinada string contiver a substring especificada. Caso contrário, devolve false.

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

BOOL

Exemplos de código

Exemplo 1

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

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

Este exemplo devolve o valor falso porque a string não tem a substring "that".

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

strings.count_substrings

Suportado em:
strings.count_substrings(string_to_search_in, substring_to_count)

Descrição

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

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

INT

Exemplos de código

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

Exemplo 1

Este exemplo usa uma string não nula e um caráter 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 caráter.

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 caráter.

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

Este exemplo usa uma string vazia e uma substring vazia.

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

Este exemplo usa uma string não nula e uma substring não nula com mais de um caráter 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 caráter e mais de uma ocorrência. Realça a limitação com ocorrências de subcadeias sobrepostas

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

strings.ends_with

Suportado em:
strings.ends_with(value, suffix)

Descrição

A função recebe duas strings (value, suffix). Devolve true se o sufixo não estiver vazio e estiver no fim do valor.

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

BOOL

Exemplos de código

Os seguintes exemplos de código ilustram algumas das formas como pode usar a função strings.ends_with.

Exemplo: devolve verdadeiro

Devolve true quando o sufixo é encontrado no final do valor.

strings.ends_with(target.hostname, "com") = true
Exemplo: devolve falso

Devolve falso quando o sufixo não está no fim do valor.

strings.ends_with(target.hostname, "com") = false
Exemplo: devolve false quando são idênticos

Devolve falso quando o sufixo e o valor são idênticos.

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

Devolve o valor false quando o sufixo é uma string vazia.

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

Devolve falso quando o valor é uma string vazia.

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

Devolve falso quando o sufixo e o valor são strings vazias.

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

strings.extract_domain

Suportado em:
strings.extract_domain(url_string)

Descrição

Extrai o domínio de uma string.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos 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

Carateres não alfabéticos processados corretamente

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

Tratamento de URIs

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

Vários carateres antes do URL real

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

carateres especiais no URI #

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

carateres 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

Suportado em:
strings.extract_hostname(string)

Descrição

Extrai o nome do anfitrião de uma string. Esta função é sensível a maiúsculas e minúsculas.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Este exemplo devolve 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

Carateres não ingleses processados corretamente

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

Tratamento de URIs

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

Vários carateres antes do URL real

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

carateres especiais no URI #

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

carateres especiais no URL #

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

strings.from_base64

Suportado em:
strings.from_base64(base64_encoded_string)

Descrição

A função converte um valor STRING codificado em base64 num valor BYTES binário não processado. As chamadas de funções com valores que não podem ser convertidos devolvem um BYTES vazio por predefinição.

Tipos de dados de parâmetros

STRING

Tipo devolvido

BYTES

Exemplos de código

Conversão de string codificada em Base64 para bytes

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

strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Conversão falhada (predefinição para bytes vazios)

A função reverte para bytes vazios se o valor fornecido for inválido.

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

strings.from_hex

Suportado em:
strings.from_hex(hex_string)

Descrição

Devolve os bytes associados à string hexadecimal fornecida.

Tipos de dados de parâmetros

STRING

Tipo devolvido

BYTES

Exemplos de código

Obtém bytes associados a uma determinada string hexadecimal.

Exemplo 1

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

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

Este exemplo mostra a 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 carateres não ASCII.

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

strings.ltrim

Suportado em:
strings.ltrim(string_to_trim, cutset)

Descrição

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

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

STRING

Exemplos de código

Seguem-se exemplos de utilização.

Exemplo 1

Este exemplo usa o mesmo primeiro e segundo argumento.

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

Este exemplo usa uma string vazia como o segundo argumento.

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

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

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

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

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

strings.reverse

Suportado em:
strings.reverse(STRING)

Descrição

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

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte transmite uma string curta.

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

O exemplo seguinte transmite uma string vazia.

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

O exemplo seguinte passa um palíndromo.

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

strings.rtrim

Suportado em:
strings.rtrim(string_to_trim, cutset)

Descrição

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

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

STRING

Exemplos de código

Seguem-se exemplos de utilização.

Exemplo 1

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

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

O exemplo seguinte passa uma string vazia como o segundo argumento.

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

O exemplo seguinte passa uma string vazia como o primeiro argumento e uma string não vazia como o segundo argumento.

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

O exemplo seguinte passa 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

Suportado em:
strings.split(string, delimiter)

Descrição

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

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

ARRAY_STRINGS

Exemplos de código

Os seguintes exemplos de código ilustram algumas das formas como pode usar a função strings.split.

Exemplo: dividir string com valor predefinido

O exemplo seguinte divide a string usando o delimitador predefinido, que é uma vírgula.

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

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

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

O exemplo seguinte não tem o delimitador no valor da string.

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

O exemplo seguinte tem uma string de delimitador vazia.

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

strings.to_lower

Suportado em:
strings.to_lower(stringText)

Descrição

Esta função recebe uma string de entrada e devolve uma string depois de alterar todos os carateres para minúsculas

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte devolve true.

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

strings.to_upper

Suportado em:
strings.to_upper(string_val)

Descrição

Devolve a string original com todos os carateres alfabéticos em maiúsculas.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

O exemplo seguinte devolve o argumento fornecido em maiúsculas.

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

strings.trim

Suportado em:
strings.trim(string_to_trim, cutset)

Descrição

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

Tipos de dados de parâmetros

STRING, STRING

Tipo devolvido

STRING

Exemplos de código

Seguem-se exemplos de utilização.

Exemplo 1

No exemplo seguinte, a mesma string é transmitida como a string de entrada e o conjunto de caracteres a remover, o que resulta numa string vazia.

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

No exemplo seguinte, é transmitida uma string vazia como o conjunto de corte, o que resulta na string original str porque não existem carateres especificados no conjunto de corte para remover.

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

No exemplo seguinte, a função produz uma string vazia porque a string de entrada já está vazia e não existem carateres a remover.

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

No exemplo seguinte, a função produz str porque a função trim remove o seguinte:

  • espaços em branco finais em "a aastraa aa "
  • Os carateres especificados no cutset (espaço, a)
strings.trim("a aastraa aa ", " a") = "str"

strings.url_decode

Suportado em:
strings.url_decode(url_string)

Descrição

Dada uma string de URL, descodifique os carateres de escape e processe os carateres UTF-8 que foram codificados. Devolve uma string vazia se a descodificação falhar.

Tipos de dados de parâmetros

STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Este exemplo mostra um 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 carateres 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 descodificaçã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

Suportado em:
timestamp.as_unix_seconds(timestamp [, time_zone])

Descrição

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

  • timestamp é uma string que representa uma data/hora de época válida. O formato tem de ser %F %T.
  • time_zone é opcional e é uma string que representa um fuso horário. Se for omitido, o valor predefinido é GMT. Pode especificar fusos horários através de literais de string. As opções são as seguintes:

Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir 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 devolvido

INT

Exemplos de código

Exemplo 1

Indicação de tempo de época válida

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

Indicação de tempo de época válida 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

Suportado em:
timestamp.current_seconds()

Descrição

Devolve um número inteiro que representa a hora atual em segundos Unix. Isto é aproximadamente igual à data/hora de deteção e baseia-se no momento em que a regra é executada. Esta função é um sinónimo da função timestamp.now().

Tipos de dados de parâmetros

NONE

Tipo devolvido

INT

Exemplos de código

Exemplo 1

O exemplo seguinte devolve true se o certificado tiver expirado há mais de 24 horas. Calcula a diferença de tempo subtraindo os segundos Unix atuais e, em seguida, comparando-os com um operador de superior a.

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

timestamp.get_date

Suportado em:
timestamp.get_date(unix_seconds [, time_zone])

Descrição

Esta função devolve uma string no formato YYYY-MM-DD, que representa o dia em que uma indicação de tempo se encontra.

  • unix_seconds é um número inteiro que representa o número de segundos após 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 for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:

Seguem-se exemplos de especificadores de time_zone válidos, que pode transmitir 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 devolvido

STRING

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".

$ts = $e.metadata.collected_timestamp.seconds

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

Este exemplo usa um literal de string para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_minute

Suportado em:
timestamp.get_minute(unix_seconds [, time_zone])

Descrição

Esta função devolve 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 após 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 for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:

Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir 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 devolvido

INT

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Exemplo 2

Este exemplo usa um literal de string para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_hour

Suportado em:
timestamp.get_hour(unix_seconds [, time_zone])

Descrição

Esta função devolve 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 após 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 for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:

Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir 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 devolvido

INT

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Exemplo 2

Este exemplo usa um literal de string para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_day_of_week

Suportado em:
timestamp.get_day_of_week(unix_seconds [, time_zone])

Descrição

Esta função devolve 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 após 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 for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:

Seguem-se exemplos de especificadores de time_zone válidos, que pode transmitir 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 devolvido

INT

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_day_of_week($ts) = 6
Exemplo 2

Este exemplo usa um literal de string para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_timestamp

Suportado em:
timestamp.get_timestamp(unix_seconds, optional timestamp_format/time_granularity, optional timezone)

Descrição

Esta função devolve uma string no formato YYYY-MM-DD, que representa o dia em que uma indicação de tempo se encontra.

  • unix_seconds é um número inteiro que representa o número de segundos após 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 da data/hora. Se for omitido, o valor predefinido é %F %T. Pode especificar o formato através de uma string de formato de data/hora ou de uma das seguintes granularidades de tempo: SECOND, MINUTE, HOUR, DATE, WEEK, MONTH ou YEAR. Para mais opções de formatação, consulte o artigo Formate elementos para partes de data e hora
  • time_zone é opcional e é uma string que representa um fuso horário. Se for omitido, o valor predefinido é GMT. Pode especificar fusos horários através de literais de string. As opções são as seguintes:
    • O nome da base de dados de fusos horários (TZ) da IANA, por exemplo, America/Los_Angeles. Para mais informações, consulte a lista de fusos horários da base de dados TZ na Wikipédia.
    • A diferença do fuso horário em relação ao UTC, no formato (+|-)H[H][:M[M]], por exemplo: "-08:00".

Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir 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 e STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido GMT.

$ts = $e.metadata.collected_timestamp.seconds

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

Este exemplo usa um literal de string 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 um literal de string 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 uma data/hora Unix como uma string com uma granularidade de segundos.

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

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

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

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

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

Este exemplo formata uma indicação de tempo Unix como uma string com granularidade de dias.

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

Este exemplo formata uma data/hora Unix como uma string com granularidade semanal.

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

Este exemplo formata uma data/hora Unix como uma string com uma granularidade mensal.

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

Este exemplo formata uma data/hora Unix como uma string com granularidade anual.

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

timestamp.get_week

Suportado em:
timestamp.get_week(unix_seconds [, time_zone])

Descrição

Esta função devolve um número inteiro no intervalo [0, 53] que representa a semana do ano. As semanas começam ao 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 após 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 for omitido, a predefinição é "GMT". Pode especificar fusos horários através de literais de string. As opções são:

Seguem-se exemplos de especificadores time_zone válidos, que pode transmitir 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 devolvido

INT

Exemplos de código

Exemplo 1

Neste exemplo, o argumento time_zone é omitido, pelo que é usado o valor predefinido "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_week($ts) = 0
Exemplo 2

Este exemplo usa um literal de string para definir o time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.now

Suportado em:
timestamp.now()

Descrição

Devolve o número de segundos desde 01/01/1970 às 00:00:00 UTC. Isto também é conhecido como hora de época Unix.

Tipo devolvido

INT

Exemplos de código

Exemplo 1

O exemplo seguinte devolve uma data/hora para o código executado a 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

Suportado em:
window.avg(numeric_values [, should_ignore_zero_values])

Descrição

Devolve a média dos valores de entrada (que podem ser números inteiros ou números de vírgula flutuante). Definir o segundo argumento opcional como verdadeiro ignora os valores zero.

Tipos de dados de parâmetros

INT|FLOAT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

Este exemplo mostra a média inteira.

// 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 flutuação.

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 entradas negativas

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 devoluções 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
Exemplo 5

A ignorar valores 0

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

Suportado em:
window.first(values_to_sort_by, values_to_return)

Descrição

Esta função de agregação devolve um valor de string derivado de um evento com o valor int correlacionado mais baixo no período de correspondência. Um exemplo de utilização é obter o userid do evento com a data/hora mais baixa na janela de correspondência (evento mais antigo).

Tipos de dados de parâmetros

INT, STRING

Tipo devolvido

STRING

Exemplos de código

Obtenha um valor de string derivado de um evento com o valor de int. correlacionado mais baixo 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

Suportado em:
window.last(values_to_sort_by, values_to_return)

Descrição

Esta função de agregação devolve um valor de string derivado de um evento com o valor int correlacionado mais elevado na janela de correspondência. Um exemplo de utilização é obter o userid do evento com a data/hora mais baixa na janela de correspondência (data/hora mais alta).

Tipos de dados de parâmetros

INT, STRING

Tipo devolvido

STRING

Exemplos de código

Obtenha um valor de string derivado de um evento com o valor int mais 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

Suportado em:
window.median(numeric_values, should_ignore_zero_values)

Descrição

Devolva a mediana dos valores de entrada. Se existirem 2 valores medianos, apenas 1 é escolhido de forma não determinística como o valor de retorno.

Tipos de dados de parâmetros

INT|FLOAT, BOOL

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

Este exemplo devolve 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 devolve 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 devolve 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 devolve 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
}
Exemplo 5

Este exemplo mostra que, quando existem várias medianas, apenas é devolvida uma mediana.

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

Suportado em:
window.mode(values)

Descrição

Devolve a moda dos valores de entrada. No caso de vários valores de modo possíveis, apenas um desses valores é escolhido de forma não determinística como o valor de retorno.

Tipos de dados de parâmetros

INT|FLOAT|STRING

Tipo devolvido

STRING

Exemplos de código

Exemplo 1

Obtenha 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

Suportado em:
window.range(numeric_values, optional should_ignore_zero_values)

Descrição

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

Tipos de dados de parâmetros

INT|FLOAT, BOOL

Tipo devolvido

ARRAY_FLOATS

Exemplos de código

Os seguintes exemplos de código ilustram algumas das formas como pode 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: mínimo e máximo de ponto flutuante

Este exemplo mostra o valor de ponto 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 define o segundo parâmetro.

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

window.stddev

Suportado em:
window.stddev(numeric_values)

Descrição

Devolve o desvio padrão dos valores de entrada numa janela de correspondência.

Tipos de dados de parâmetros

INT|FLOAT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

Este exemplo devolve o desvio padrão de números inteiros numa 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 devolve o desvio padrão de números de vírgula flutuante numa 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 devolve o desvio padrão numa 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 devolve um 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
Exemplo 5

Este exemplo devolve 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

Suportado em:
window.variance(values)

Descrição

Esta função devolve a variância especificada dos valores de entrada.

Tipos de dados de parâmetros

INT|FLOAT

Tipo devolvido

FLOAT

Exemplos de código

Exemplo 1

Este exemplo devolve 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 devolve a variância de todos os números de vírgula 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 devolve 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 devolve 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
Exemplo 5

Este exemplo devolve 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 devolve 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 da Google SecOps.