Functions

Disponible en:

En esta sección se describen las funciones de YARA-L 2.0 que puedes usar en consultas de reglas, de búsqueda y de panel de control.

Consulta también las funciones de YARA-L 2.0 para los paneles de control y las estadísticas y agregaciones en las búsquedas con YARA-L 2.0.

Estas funciones se pueden usar en las siguientes partes de una consulta de YARA-L:

arrays.concat

Disponible en:
arrays.concat(string_array, string_array)

Descripción

Devuelve una nueva matriz de cadenas copiando elementos de matrices de cadenas originales.

Tipos de datos de parámetros

ARRAY_STRINGS, ARRAY_STRINGS

Tipo de devolución

ARRAY_STRINGS

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se concatenan dos matrices de cadenas diferentes.

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

En el siguiente ejemplo se concatenan arrays con una cadena vacía.

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

En el siguiente ejemplo se concatenan arrays vacíos.

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

arrays.index_to_float

Disponible en:
arrays.index_to_float(array, index)

Descripción

Devuelve el elemento situado en el índice indicado de una matriz. El elemento de ese índice se devuelve como un número flotante.

El índice es un valor entero que representa la posición de un elemento en la matriz. De forma predeterminada, el primer elemento de una matriz tiene el índice 0 y el último elemento tiene el índice n-1, donde n es el tamaño de la matriz. La indexación negativa permite acceder a los elementos de una matriz en relación con el final de la matriz. Por ejemplo, el índice -1 hace referencia al último elemento de la matriz y el índice -2 hace referencia al penúltimo elemento de la matriz.

Tipos de datos de parámetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se obtiene un elemento en el índice 1 de una matriz de números de coma flotante.

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

En el siguiente ejemplo se obtiene un elemento en el índice -1 de una matriz de números de coma flotante.

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

En el siguiente ejemplo se obtiene un elemento con un índice mayor que el tamaño de la matriz.

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

En el siguiente ejemplo se obtiene un elemento de una matriz vacía.

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

En el siguiente ejemplo se obtiene un elemento en el índice 1 de una matriz de cadenas.

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

En el siguiente ejemplo se obtiene un elemento en el índice 2 de una matriz de números enteros.

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

arrays.index_to_int

Disponible en:
arrays.index_to_int(array_of_inputs, index)

Descripción

Devuelve el valor de un índice determinado de una matriz como un número entero.

El índice es un valor entero que representa la posición de un elemento en la matriz. De forma predeterminada, el primer elemento de una matriz tiene el índice 0 y el último elemento tiene el índice n-1, donde n es el tamaño de la matriz. La indexación negativa permite acceder a los elementos de una matriz en relación con el final de la matriz. Por ejemplo, el índice -1 hace referencia al último elemento de la matriz y el índice -2 hace referencia al penúltimo elemento de la matriz.

Tipos de datos de parámetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

Esta llamada de función devuelve 0 cuando el valor del índice es una cadena no numérica.

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

Esta función devuelve el elemento del índice -1.

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

Devuelve 0 para el elemento fuera de los límites.

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

Esta función obtiene el elemento de la matriz de flotantes en el índice 1.

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

Esta función obtiene el elemento de la matriz int en el índice 0.

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

arrays.index_to_str

Disponible en:
arrays.index_to_str(array, index)

Descripción

Devuelve el elemento de la matriz que se encuentra en el índice indicado como una cadena. El índice es un valor entero que representa la posición de un elemento en la matriz. De forma predeterminada, el primer elemento de una matriz tiene el índice 0 y el último elemento tiene el índice n-1, donde n es el tamaño de la matriz. La indexación negativa permite acceder a los elementos de una matriz desde el final de la matriz. Por ejemplo, el índice -1 hace referencia al último elemento de la matriz y el índice -2 hace referencia al penúltimo elemento de la matriz.

Tipos de datos de parámetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se obtiene un elemento en el índice 1 de una matriz de cadenas.

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

En el siguiente ejemplo se obtiene un elemento en el índice -1 (el último elemento de la matriz) de una matriz de cadenas.

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

En el siguiente ejemplo se obtiene un elemento con un índice mayor que el tamaño de la matriz, lo que devuelve una cadena vacía.

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

En el siguiente ejemplo se obtiene un elemento de una matriz vacía.

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

En el siguiente ejemplo se obtiene un elemento en el índice 0 de una matriz de flotantes. El resultado se devuelve como una cadena.

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

En el siguiente ejemplo se obtiene un elemento en el índice 2 de una matriz de números enteros. El resultado tiene el formato de una cadena.

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

arrays.join_string

Disponible en:
arrays.join_string(array_of_strings, optional_delimiter)

Descripción

Convierte una matriz de cadenas en una sola cadena separada por el parámetro opcional. Si no se proporciona ningún delimitador, se usa la cadena vacía.

Tipos de datos de parámetros

ARRAY_STRINGS, STRING

Tipo de devolución

STRING

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de cómo usar la función:

Ejemplo 1

En este ejemplo se une una matriz con elementos no nulos y un delimitador.

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

En este ejemplo se une un array con un elemento nulo y un delimitador.

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

En este ejemplo se une una matriz con elementos no nulos y sin delimitador.

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

arrays.length

Disponible en:
arrays.length(repeatedField)

Descripción

Devuelve el número de elementos de campo repetidos.

Tipos de datos de parámetros

LIST

Tipo de devolución

NUMBER

Códigos de ejemplo

Ejemplo 1

Devuelve el número de elementos de campo repetidos.

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

Si hay varios campos repetidos en la ruta, devuelve el número total de elementos de campo repetidos.

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

arrays.max

Disponible en:
arrays.max(array_of_ints_or_floats)

Descripción

Devuelve el elemento más grande de una matriz o cero si la matriz está vacía.

Tipos de datos de parámetros

ARRAY_INTS|ARRAY_FLOATS

Tipo de devolución

FLOAT

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de cómo usar la función:

Ejemplo 1

En este ejemplo se devuelve el elemento mayor de una matriz de números enteros.

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

En este ejemplo se devuelve el elemento mayor de una matriz de números de coma flotante.

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

arrays.min

Disponible en:
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])

Descripción

Devuelve el elemento más pequeño de una matriz o cero si la matriz está vacía. Si el segundo argumento opcional se define como true, se ignoran los elementos iguales a cero.

Tipos de datos de parámetros

ARRAY_INTS|ARRAY_FLOATS, BOOL

Tipo de devolución

FLOAT

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de cómo usar la función:

Ejemplo 1

En este ejemplo se devuelve el elemento más pequeño de una matriz de números enteros.

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

En este ejemplo se devuelve el elemento más pequeño de una matriz de números de coma flotante.

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

En este ejemplo se devuelve el elemento más pequeño de una matriz de números de coma flotante, sin tener en cuenta los ceros.

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

arrays.size

Disponible en:
arrays.size( array )

Descripción

Devuelve el tamaño de la matriz. Devuelve 0 para una matriz vacía.

Tipos de datos de parámetros

ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se usa una matriz de cadenas que contiene dos elementos.

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

En este ejemplo se usa una matriz de números enteros que contiene 3 elementos.

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

En este ejemplo se usa una matriz de flotantes que contiene un elemento.

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

En este ejemplo se usa un array vacío.

arrays.size([]) = 0

bytes.to_base64

Disponible en:
bytes.to_base64(bytes, optional_default_string)

Descripción

La función convierte un valor bytes en un valor base64 encoded string. Las llamadas de función con valores que no se pueden convertir devuelven una cadena vacía de forma predeterminada.

Tipos de datos de parámetros

BYTES, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Bytes binarios sin formato a cadena codificada en Base64

La función convierte los bytes binarios sin formato en una cadena codificada en base64.

bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Conversión fallida (se usa la cadena proporcionada opcionalmente de forma predeterminada)

La función usa el valor predeterminado "invalid bytes" cuando el valor de bytes proporcionado no es válido.

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

cast.as_bool

Disponible en:
cast.as_bool(string_or_int)

Descripción

La función convierte un valor int o de cadena en un valor booleano. Las llamadas a funciones con valores que no se pueden convertir devolverán FALSE. Devuelve TRUE solo para el número entero 1 y la cadena "true" (sin distinción entre mayúsculas y minúsculas).

Tipos de datos de parámetros

INT|STRING

Tipo de devolución

BOOL

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra cómo convertir una cadena no booleana

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

Número entero verdadero (1)

cast.as_bool(1) = true
Ejemplo 3

Cadena verdadera

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

Cadena verdadera con mayúscula

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

Número entero negativo

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

Número entero falso (0)

cast.as_bool(0) = false
Ejemplo 7

cadena vacía

cast.as_bool("") = false

cast.as_float

Disponible en:
cast.as_float(string_to_cast)

Descripción

Convierte una cadena numérica en un número de coma flotante. Las llamadas a funciones con valores que no se pueden convertir devuelven 0. Los números de coma flotante mantienen la precisión hasta 7 decimales.

Tipos de datos de parámetros

STRING

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

Al convertir una cadena no numérica, se devuelve 0.

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

Si se convierte una cadena vacía, se devuelve 0.

cast.as_float("") = 0.0000000
Ejemplo 3

Al convertir una cadena numérica válida, se devuelve un valor flotante.

cast.as_float("1.012345678") = 1.0123456

cast.as_string

Disponible en:
cast.as_string(int_or_bytes_or_bool, optional_default_string)

Descripción

La función cast.as_string transforma un valor INT, BYTES o BOOL en su representación de cadena. Puedes proporcionar un argumento default_string opcional para gestionar los casos en los que la conversión falla. Si omite el argumento default_string o si la entrada es una secuencia de bytes UTF-8 o BASE64 no válida, la función devuelve una cadena vacía.

Tipos de datos de parámetros

INT|BYTES|BOOL, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Conversión de entero a cadena

La función convierte el entero 123 en la cadena "123".

cast.as_string(123) = "123"
Conversión de float a cadena

La función convierte el número de coma flotante 2.25 en la cadena "2.25".

cast.as_string(2.25) = "2.25"
Conversión de bytes a cadena

La función convierte el valor binario sin formato b'01 en la cadena "\x01".

cast.as_string(b'01, "") = "\x01"
Conversión de booleano a cadena

La función convierte el valor booleano true en la cadena "true".

cast.as_string(true, "") = "true"
Conversión fallida (se usa la cadena proporcionada opcionalmente de forma predeterminada)

Si el valor proporcionado no es válido, la función se asigna de forma predeterminada a la cadena "casting error".

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

Huella digital

Disponible en:
hash.fingerprint2011(byteOrString)

Descripción

Esta función calcula el hash fingerprint2011 de una secuencia de bytes o una cadena de entrada. Esta función devuelve un valor INT sin signo en el intervalo [2, 0xFFFFFFFFFFFFFFFF].

Tipos de datos de parámetros

BTYE, STRING

Tipo de devolución

INT

Código de ejemplo

id_fingerprint = hash.fingerprint2011("user123")

grupo

Disponible en:
group(field1, field2, field3, ...)

Descripción

Agrupa los campos de un tipo similar en una variable de marcador de posición.

En la búsqueda de UDM, los campos agrupados se usan para buscar en varios campos de un tipo similar. La función de grupo es similar a los campos agrupados, pero te permite seleccionar los campos que quieres agrupar para activar una detección. Puedes usar la función de grupo para recoger información sobre una entidad específica (por ejemplo, un nombre de host, una dirección IP o un ID de usuario) en diferentes tipos de sustantivo.

Códigos de ejemplo

Ejemplo 1

Agrupa todas las direcciones IP y proporciona un recuento descendente de la dirección IP más frecuente en el periodo analizado.

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

hash.sha256

Disponible en:
hash.sha256(string)

Descripción

Devuelve un hash SHA-256 de la cadena de entrada.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra el hash SHA-256 cuando la entrada es una cadena válida.

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

En este ejemplo se muestra el hash SHA-256 cuando la entrada es una cadena vacía.

hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

math.abs

Disponible en:
math.abs(numericExpression)

Descripción

Devuelve el valor absoluto de una expresión entera o flotante.

Tipos de datos de parámetros

NUMBER

Tipo de devolución

NUMBER

Códigos de ejemplo

Ejemplo 1

Este ejemplo devuelve True si el evento se produjo más de 5 minutos después de la hora especificada (en segundos desde la época Unix), independientemente de si el evento se produjo antes o después de la hora especificada. Una llamada a math.abs no puede depender de varias variables ni marcadores de posición. Por ejemplo, no puedes sustituir el valor de tiempo codificado 1643687343 del ejemplo siguiente por $e2.metadata.event_timestamp.seconds.

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

math.ceil

Disponible en:
math.ceil(number)

Descripción

Devuelve el número entero más pequeño que no sea inferior al número dado (redondeo hacia arriba). Devuelve 0 si la entrada es nula o demasiado grande para caber en un int64.

Tipos de datos de parámetros

FLOAT

Tipo de devolución

INT

Códigos de ejemplo

En esta sección se incluyen ejemplos de uso de math.ceil.

Ejemplo 1

En este ejemplo se devuelve el redondeo hacia arriba de un número entero.

math.ceil(2.000000) = 2
Ejemplo 2

En este ejemplo se devuelve el redondeo hacia arriba de un número negativo.

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

En este ejemplo se devuelve 0 como el valor de ceil de un número demasiado grande para un entero de 64 bits.

math.ceil(184467440737095516160.0) = 0

math.floor

Disponible en:
math.floor(float_val)

Descripción

Devuelve el valor entero más grande que no sea mayor que el valor proporcionado (redondeo hacia abajo). Devuelve 0 si la entrada es nula o demasiado grande para caber en un int64.

Tipos de datos de parámetros

FLOAT

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra un caso con un número positivo.

math.floor(1.234568) = 1
Ejemplo 2

En este ejemplo se muestra un caso con un número negativo.

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

En este ejemplo se muestra un caso cero.

math.floor(0.000000) = 0

math.geo_distance

Disponible en:
math.geo_distance(longitude1, latitude1, longitude2, latitude2))

Descripción

Devuelve la distancia entre dos ubicaciones geográficas (coordenadas) en metros. Devuelve -1 si las coordenadas no son válidas.

Tipos de datos de parámetros

FLOAT, FLOAT, FLOAT, FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se devuelve la distancia cuando todos los parámetros son coordenadas válidas:

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

En el siguiente ejemplo se devuelve la distancia cuando uno de los parámetros es una coordenada truncada:

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

En el siguiente ejemplo, se devuelve -1 cuando uno de los parámetros es una coordenada no válida:

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

En el siguiente ejemplo se devuelve 0 cuando las coordenadas son las mismas:

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

math.is_increasing

Disponible en:
math.is_increasing(num1, num2, num3)

Descripción

Toma una lista de valores numéricos (enteros o dobles) y devuelve True si los valores están en orden ascendente y False en caso contrario.

Tipos de datos de parámetros

INT|FLOAT, INT|FLOAT, INT|FLOAT

Tipo de devolución

BOOL

Códigos de ejemplo

Ejemplo 1

En este ejemplo se incluyen valores similares a marcas de tiempo en segundos.

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

Este ejemplo incluye un valor double negativo, un valor INT64 cero y un valor INT64 positivo.

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

Este ejemplo incluye un valor doble negativo, un valor INT64 cero y un valor INT64 negativo.

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

En este ejemplo se incluyen dos números negativos con decimales y un valor INT64 cero.

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

En este ejemplo se incluye un número de coma flotante negativo y dos valores iguales.

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

math.log

Disponible en:
math.log(numericExpression)

Descripción

Devuelve el valor del logaritmo natural de una expresión entera o flotante.

Tipos de datos de parámetros

NUMBER

Tipo de devolución

NUMBER

Códigos de ejemplo

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

math.pow

Disponible en:
math.pow(base, exponent)

Descripción

Devuelve el valor del primer argumento elevado a la potencia del segundo argumento. Devuelve 0 en caso de desbordamiento.

Tipos de datos de parámetros

Base: INT|FLOAT Exponente: INT|FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra un caso de número entero.

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

En este ejemplo se muestra un caso base de fracción.

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

En este ejemplo se muestra una fracción con base y exponente.

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

En este ejemplo se muestra un caso de potencia negativa.

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

En este ejemplo se muestra un caso de potencia fraccionaria.

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

En este ejemplo se muestra un caso base negativo.

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

En este ejemplo se muestra un caso base cero.

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

En este ejemplo se muestra un caso de potencia cero.

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

En este ejemplo se muestra un caso base grande.

math.pow(9223372036854775807, 1.200000) // 57262152889751593549824

math.random

Disponible en:
math.random()

Descripción

Genera un valor pseudoaleatorio de tipo DOUBLE en el intervalo de [0, 1), incluido el 0 y excluido el 1.

Tipo de devolución

FLOAT

Códigos de ejemplo

En el siguiente ejemplo se comprueba si el valor aleatorio está en el intervalo [0, 1). none if(math.random() >= 0 and math.random() < 1) = true

math.round

Disponible en:
math.round(numericExpression, decimalPlaces)

Descripción

Devuelve un valor redondeado al número entero más próximo o al número de decimales especificado.

Tipos de datos de parámetros

NUMBER

Tipo de devolución

NUMBER

Códigos de ejemplo

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

Disponible en:
math.sqrt(number)

Descripción

Devuelve la raíz cuadrada del número especificado. Devuelve 0 en caso de números negativos.

Tipos de datos de parámetros

INT|FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se devuelve la raíz cuadrada de un argumento int.

math.sqrt(3) = 1.732051
Ejemplo 2

En este ejemplo se devuelve la raíz cuadrada de un argumento int negativo.

math.sqrt(-3) = 0.000000
Ejemplo 3

Este ejemplo devuelve la raíz cuadrada de un argumento cero.

math.sqrt(0) = 0.000000
Ejemplo 4

En este ejemplo se devuelve la raíz cuadrada de un argumento de tipo float.

math.sqrt(9.223372) = 3.037000
Ejemplo 5

En este ejemplo se devuelve la raíz cuadrada de un argumento flotante negativo.

math.sqrt(0-1.200000) = 0.000000

métricas

Disponible en:

Las funciones de métricas pueden agregar grandes cantidades de datos históricos. Puedes usarlo en tu regla con metrics.functionName() en la sección de resultados.

Para obtener más información, consulta Métricas de YARA-L.

net.ip_in_range_cidr

Disponible en:
net.ip_in_range_cidr(ipAddress, subnetworkRange)

Descripción

Devuelve true si la dirección IP proporcionada está dentro de la subred especificada.

Puede usar YARA-L para buscar eventos de UDM en todas las direcciones IP de una subred mediante la instrucción net.ip_in_range_cidr(). Se admiten tanto IPv4 como IPv6.

Para buscar en un intervalo de direcciones IP, especifica un campo de UDM de IP y un intervalo CIDR. YARA-L puede gestionar campos de direcciones IP únicos y repetidos.

Para buscar en un intervalo de direcciones IP, especifica un campo de ip UDM y un intervalo de enrutamiento de interdominios sin clases (CIDR). YARA-L puede gestionar campos de direcciones IP únicos y repetidos.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

BOOL

Códigos de ejemplo

Ejemplo 1

Ejemplo de IPv4:

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

Ejemplo de IPv6:

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

Para ver un ejemplo de regla que use la instrucción net.ip_in_range_cidr(), consulta la regla de ejemplo en Evento único dentro de un intervalo de direcciones IP.

re.regex

Disponible en:

Puedes definir la coincidencia de expresiones regulares en YARA-L 2.0 con cualquiera de las siguientes sintaxis:

  • Usar la sintaxis de YARA-L: relacionado con eventos. A continuación se muestra una representación genérica de esta sintaxis:

    $e.field = /regex/
    
  • Usar la sintaxis de YARA-L: como una función que toma los siguientes parámetros:

    • Campo al que se aplica la expresión regular.
    • Expresión regular especificada como una cadena.

    A continuación se muestra una representación genérica de esta sintaxis:

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

Descripción

Esta función devuelve true si la cadena contiene una subcadena que coincide con la expresión regular proporcionada. No es necesario añadir .* al principio ni al final de la expresión regular.

Notas
  • Para que coincida exactamente con la cadena o solo con un prefijo o un sufijo, incluye los caracteres de anclaje ^ (inicial) y $ (final) en la expresión regular. Por ejemplo, /^full$/ coincide exactamente con "full", mientras que /full/ podría coincidir con "fullest", "lawfull" y "joyfully".
  • Si el campo de UDM incluye caracteres de salto de línea, regexp solo coincide con la primera línea del campo de UDM. Para aplicar la coincidencia completa de los campos de UDM, añada un (?s) a la expresión regular. Por ejemplo, sustituya /.*allUDM.*/ por /(?s).*allUDM.*/.
  • Puedes usar el modificador nocase después de las cadenas para indicar que la búsqueda debe ignorar las mayúsculas y minúsculas.

Tipos de datos de parámetros

STRING, STRING

Tipos de expresiones de parámetros

ANY, ANY

Tipo de devolución

BOOL

Códigos de ejemplo

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

re.capture

Disponible en:
re.capture(stringText, regex)

Descripción

Captura (extrae) datos de una cadena mediante el patrón de expresión regular proporcionado en el argumento.

Esta función usa dos argumentos:

  • stringText: la cadena original en la que se va a buscar.
  • regex: la expresión regular que indica el patrón que se debe buscar.

La expresión regular puede contener 0 o 1 grupos de captura entre paréntesis. Si la expresión regular contiene 0 grupos de captura, la función devuelve la primera subcadena coincidente completa. Si la expresión regular contiene un grupo de captura, devuelve la primera subcadena coincidente del grupo de captura. Si se definen dos o más grupos de captura, se devuelve un error del compilador.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo, si $e.principal.hostname contiene "aaa1bbaa2", se cumpliría la condición, ya que la función devuelve la primera instancia. Este ejemplo no tiene grupos de captura.

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

En este ejemplo se captura todo lo que hay después del símbolo @ en un correo. Si el campo $e.network.email.from es test@google.com, el ejemplo devuelve google.com. El siguiente ejemplo contiene un grupo de captura.

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

Si la expresión regular no coincide con ninguna subcadena del texto, la función devuelve una cadena vacía. Puede omitir los eventos en los que no se produce ninguna coincidencia excluyendo la cadena vacía, lo que es especialmente importante cuando usa re.capture() con una desigualdad:

// 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

Disponible en:
re.replace(stringText, replaceRegex, replacementText)

Descripción

Realiza una sustitución de expresiones regulares.

Esta función toma tres argumentos:

  • stringText: la cadena original.
  • replaceRegex: la expresión regular que indica el patrón que se debe buscar.
  • replacementText: el texto que se insertará en cada coincidencia.

Devuelve una cadena nueva derivada de la cadena stringText original, donde todas las subcadenas que coinciden con el patrón de replaceRegex se sustituyen por el valor de replacementText. Puedes usar dígitos de escape con barras inversas (\1 a \9) dentro de replacementText para insertar texto que coincida con el grupo entre paréntesis correspondiente en el patrón replaceRegex. Usa \0 para referirte a todo el texto que coincida.

La función sustituye las coincidencias que no se superponen y prioriza la sustitución de la primera coincidencia encontrada. Por ejemplo, re.replace("banana", "ana", "111") devuelve la cadena "b111na".

Tipos de datos de parámetros

STRING, STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se captura todo lo que hay después del símbolo @ en un correo, se sustituye com por org y, a continuación, se devuelve el resultado. Fíjate en el uso de funciones anidadas.

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

En este ejemplo se usan dígitos de escape con barras inversas en el argumento replacementText para hacer referencia a las coincidencias del patrón 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"
                     )
Ejemplo 3

Ten en cuenta los siguientes casos cuando trabajes con cadenas vacías y re.replace():

Uso de una cadena vacía 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 sustituir una cadena vacía, puedes 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

Disponible en:
optimization.sample_rate(byteOrString, rateNumerator, rateDenominator)

Descripción

Esta función determina si se debe incluir un evento en función de una estrategia de muestreo determinista. Esta función devuelve lo siguiente:

  • true para una fracción de los valores de entrada, equivalente a (rateNumerator / rateDenominator), que indica que el evento debe incluirse en la muestra.
  • false indica que el evento no debe incluirse en la muestra.

Esta función es útil en situaciones de optimización en las que solo quiere procesar un subconjunto de eventos. Equivalente a:

hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator

Tipos de datos de parámetros

  • byteOrString: expresión que da como resultado un BYTE o un STRING.
  • rateNumerator: 'INT'
  • rateDenominator: 'INT'

Tipo de devolución

BOOL

Código de ejemplo

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

Disponible en:
strings.base64_decode(encodedString)

Descripción

Devuelve una cadena que contiene la versión decodificada en Base64 de la cadena codificada.

Esta función toma una cadena codificada en base64 como argumento. Si encodedString no es una cadena codificada en Base64 válida, la función devuelve encodedString sin cambios.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

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

strings.coalesce

Disponible en:
strings.coalesce(a, b, c, ...)

Descripción

Esta función toma un número ilimitado de argumentos y devuelve el valor de la primera expresión que no se evalúa como una cadena vacía (por ejemplo, "valor distinto de cero"). Si todos los argumentos dan como resultado una cadena vacía, la llamada a la función devuelve una cadena vacía.

Los argumentos pueden ser literales, campos de eventos o llamadas a funciones. Todos los argumentos deben ser del tipo STRING. Si algún argumento es un campo de evento, los atributos deben ser del mismo evento.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se incluyen variables de cadena como argumentos. La condición se evalúa como verdadera cuando (1) $e.network.email.from es suspicious@gmail.com o (2) $e.network.email.from está vacío y $e.network.email.to es suspicious@gmail.com.

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

En el siguiente ejemplo se llama a la función coalesce con más de dos argumentos. Esta condición compara la primera dirección IP no nula del evento $e con los valores de la lista de referencia ip_watchlist. El orden en el que se combinan los argumentos en esta llamada es el mismo que el orden en el que se enumeran en la condición de la regla:

  1. $e.principal.ip se evalúa primero.
  2. $e.src.ip se evalúa a continuación.
  3. $e.target.ip se evalúa a continuación.
  4. Por último, la cadena "No IP" se devuelve como valor predeterminado si los campos ip anteriores no se han definido.
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Ejemplo 3

En el siguiente ejemplo se intenta combinar principal.hostname de los eventos $e1 y $e2. Devolverá un error del compilador porque los argumentos son variables de evento diferentes.

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

strings.concat

Disponible en:
strings.concat(a, b, c, ...)

Descripción

Devuelve la concatenación de un número ilimitado de elementos, cada uno de los cuales puede ser una cadena, un número entero o un número de coma flotante.

Si algún argumento es un campo de evento, los atributos deben ser del mismo evento.

Tipos de datos de parámetros

STRING, FLOAT, INT

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se incluyen una variable de cadena y una variable de número entero como argumentos. Tanto principal.hostname como principal.port proceden del mismo evento, $e, y se concatenan para devolver una cadena.

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

En el siguiente ejemplo se incluyen una variable de cadena y un literal de cadena como argumentos.

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

En el siguiente ejemplo se incluyen una variable de cadena y un literal de coma flotante como argumentos. Cuando se representan como cadenas, los números flotantes que son números enteros se formatean sin la coma decimal (por ejemplo, 1,0 se representa como "1"). Además, los números de coma flotante que superen los dieciséis decimales se truncarán en el decimosexto decimal.

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

En el siguiente ejemplo se incluyen una variable de cadena, un literal de cadena, una variable de número entero y un literal de número decimal como argumentos. Todas las variables proceden del mismo evento, $e, y se concatenan con los literales para devolver una cadena.

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

En el siguiente ejemplo se intenta concatenar principal.port del evento $e1 con principal.hostname del evento $e2. Devolverá un error del compilador porque los argumentos son variables de evento diferentes.

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

strings.contains

Disponible en:
strings.contains( str, substr )

Descripción

Devuelve el valor "true" si una cadena determinada contiene la subcadena especificada. De lo contrario, devuelve el valor "falso".

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

BOOL

Códigos de ejemplo

Ejemplo 1

Este ejemplo devuelve true porque la cadena tiene la subcadena "is".

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

Este ejemplo devuelve el valor false porque la cadena no tiene la subcadena "that".

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

strings.count_substrings

Disponible en:
strings.count_substrings(string_to_search_in, substring_to_count)

Descripción

Cuando se le proporciona una cadena y una subcadena, devuelve un int64 con el número de veces que aparece la subcadena en la cadena sin solaparse.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

INT

Códigos de ejemplo

En esta sección se incluyen ejemplos que calculan el número de veces que aparece una subcadena en una cadena determinada.

Ejemplo 1

En este ejemplo se usa una cadena no nula y un carácter de subcadena único no nulo.

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

En este ejemplo se usa una cadena no nula y una subcadena no nula de más de un carácter.

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

En este ejemplo se usa una cadena no nula y una subcadena vacía.

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

En este ejemplo se usa una cadena vacía y una subcadena no nula de más de un carácter.

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

En este ejemplo se usa una cadena vacía y una subcadena vacía.

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

En este ejemplo se usa una cadena no nula y una subcadena no nula que tiene más de un carácter y más de una aparición.

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

En este ejemplo se usa una cadena no nula y una subcadena no nula que tiene más de un carácter y más de una aparición. Destaca la limitación con las coincidencias de subcadenas superpuestas.

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

strings.ends_with

Disponible en:
strings.ends_with(value, suffix)

Descripción

La función toma dos cadenas (value, suffix). Devuelve true si el sufijo no está vacío y se encuentra al final del valor.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

BOOL

Códigos de ejemplo

Los siguientes ejemplos de código ilustran algunas de las formas en las que puedes usar la función strings.ends_with.

Ejemplo: devuelve true

Devuelve true cuando el sufijo se encuentra al final del valor.

strings.ends_with(target.hostname, "com") = true
Ejemplo: devuelve false

Devuelve false cuando el sufijo no está al final del valor.

strings.ends_with(target.hostname, "com") = false
Ejemplo: devuelve false cuando son idénticos

Devuelve false cuando el sufijo y el valor son idénticos.

target.hostname != "example.com"
strings.ends_with("str", "str") = true
Ejemplo: devuelve false cuando el sufijo está vacío

Devuelve false cuando el sufijo es una cadena vacía.

target.hostname != "example.com"
strings.ends_with("str", "") = false
Ejemplo: devuelve "false" cuando el valor está vacío

Devuelve false cuando el valor es una cadena vacía.

target.hostname != "example.com"
strings.ends_with("", "str") = false
Ejemplo: devuelve "false" cuando el sufijo y el valor están vacíos

Devuelve false cuando el sufijo y el valor son cadenas vacías.

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

strings.extract_domain

Disponible en:
strings.extract_domain(url_string)

Descripción

Extrae el dominio de una cadena.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra una cadena vacía

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

cadena aleatoria, no una URL

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

varias barras invertidas

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

Se gestionan correctamente los caracteres no alfabéticos

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

Gestión de URIs

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

varios caracteres antes de la URL real

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

caracteres especiales en URIs #

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

caracteres especiales en la URL #

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

caso de prueba positivo

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

strings.extract_hostname

Disponible en:
strings.extract_hostname(string)

Descripción

Extrae el nombre de host de una cadena. Esta función distingue entre mayúsculas y minúsculas.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se devuelve una cadena vacía.

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

cadena aleatoria, no una URL

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

varias barras inversas

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

Se gestionan correctamente los caracteres que no son ingleses

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

Gestión de URIs

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

varios caracteres antes de la URL real

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

caracteres especiales en URIs #

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

caracteres especiales en la URL #

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

strings.from_base64

Disponible en:
strings.from_base64(base64_encoded_string)

Descripción

La función convierte un valor STRING codificado en Base64 en un valor BYTES binario sin formato. Las llamadas a funciones con valores que no se pueden convertir devuelven un BYTES vacío de forma predeterminada.

Tipos de datos de parámetros

STRING

Tipo de devolución

BYTES

Códigos de ejemplo

Conversión de una cadena codificada en Base64 a bytes

La función convierte una cadena codificada en base64 en su representación de bytes binarios sin formato.

strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Conversión fallida (se usa el valor predeterminado de bytes vacíos)

La función tiene como valor predeterminado bytes vacíos si el valor proporcionado no es válido.

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

strings.from_hex

Disponible en:
strings.from_hex(hex_string)

Descripción

Devuelve los bytes asociados a la cadena hexadecimal proporcionada.

Tipos de datos de parámetros

STRING

Tipo de devolución

BYTES

Códigos de ejemplo

Obtiene los bytes asociados a una cadena hexadecimal determinada.

Ejemplo 1

En este ejemplo se muestran conversiones de caracteres no hexadecimales.

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

En este ejemplo se muestra una entrada con una cadena vacía.

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

En este ejemplo se muestra la conversión de una cadena hexadecimal.

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

En este ejemplo se muestra la conversión de caracteres que no son ASCII.

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

strings.ltrim

Disponible en:
strings.ltrim(string_to_trim, cutset)

Descripción

Quita los espacios en blanco iniciales de una cadena determinada. Esta función elimina los caracteres iniciales presentes en ese conjunto de caracteres.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de casos prácticos.

Ejemplo 1

En este ejemplo se usan los mismos argumentos primero y segundo.

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

En este ejemplo se usa una cadena vacía como segundo argumento.

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

En este ejemplo se usa una cadena vacía como primer argumento y una cadena como segundo argumento.

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

En este ejemplo se usan cadenas que contienen espacios en blanco y una cadena como segundo argumento.

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

strings.reverse

Disponible en:
strings.reverse(STRING)

Descripción

Devuelve una cadena que es la inversa de la cadena de entrada.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se envía una cadena corta.

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

En el siguiente ejemplo se pasa una cadena vacía.

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

En el siguiente ejemplo se pasa un palíndromo.

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

strings.rtrim

Disponible en:
strings.rtrim(string_to_trim, cutset)

Descripción

Recorta los espacios en blanco finales de una cadena determinada. Elimina los caracteres finales que estén presentes en ese conjunto de caracteres.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de casos prácticos.

Ejemplo 1

En el siguiente ejemplo, se pasa la misma cadena como primer y segundo argumento.

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

En el siguiente ejemplo se pasa una cadena vacía como segundo argumento.

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

En el siguiente ejemplo, se pasa una cadena vacía como primer argumento y una cadena no vacía como segundo argumento.

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

En el siguiente ejemplo, se pasa una cadena que contiene espacios en blanco como primer argumento y una cadena no vacía como segundo argumento.

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

strings.split

Disponible en:
strings.split(string, delimiter)

Descripción

Divide el valor de cadena usando el argumento de delimitador. El delimitador predeterminado es una coma (,).

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

ARRAY_STRINGS

Códigos de ejemplo

Los siguientes ejemplos de código ilustran algunas de las formas en las que puedes usar la función strings.split.

Ejemplo: dividir cadena con valor predeterminado

En el siguiente ejemplo, se divide la cadena usando el delimitador predeterminado, que es una coma.

strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Ejemplo: dividir una cadena con dos puntos

En el siguiente ejemplo, la cadena se divide en cada signo de dos puntos (:).

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

En el siguiente ejemplo, falta el delimitador en el valor de la cadena.

strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Ejemplo: delimitador vacío

En el siguiente ejemplo, la cadena de delimitador está vacía.

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

strings.to_lower

Disponible en:
strings.to_lower(stringText)

Descripción

Esta función toma una cadena de entrada y devuelve una cadena después de cambiar todos los caracteres a minúsculas.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se devuelve true.

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

strings.to_upper

Disponible en:
strings.to_upper(string_val)

Descripción

Devuelve la cadena original con todos los caracteres alfabéticos en mayúsculas.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se devuelve el argumento proporcionado en mayúsculas.

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

strings.trim

Disponible en:
strings.trim(string_to_trim, cutset)

Descripción

Elimina los espacios en blanco iniciales y finales de una cadena determinada. También elimina los caracteres no deseados (especificados por el argumento cutset) de la cadena de entrada.

Tipos de datos de parámetros

STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

A continuación, se muestran algunos ejemplos de casos prácticos.

Ejemplo 1

En el siguiente ejemplo, se pasa la misma cadena como cadena de entrada y como cutset, lo que da como resultado una cadena vacía.

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

En el siguiente ejemplo, se pasa una cadena vacía como cutset, lo que da como resultado la cadena original str porque no se ha especificado ningún carácter en cutset para eliminar.

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

En el siguiente ejemplo, la función devuelve una cadena vacía porque la cadena de entrada ya está vacía y no hay caracteres que quitar.

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

En el siguiente ejemplo, la función devuelve str porque la función trim elimina lo siguiente:

  • espacio en blanco final en "a aastraa aa "
  • los caracteres especificados en cutset (espacio, a)
strings.trim("a aastraa aa ", " a") = "str"

strings.url_decode

Disponible en:
strings.url_decode(url_string)

Descripción

Dada una cadena de URL, decodifica los caracteres de escape y gestiona los caracteres UTF-8 que se hayan codificado. Devuelve una cadena vacía si no se puede decodificar.

Tipos de datos de parámetros

STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra un caso de prueba positivo.

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

En este ejemplo se muestra un caso de cadena vacía.

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

En este ejemplo se muestra cómo se gestionan los caracteres no alfabéticos.

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

En este ejemplo se muestra una decodificación de URL de muestra.

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

Disponible en:
timestamp.as_unix_seconds(timestamp [, time_zone])

Descripción

Esta función devuelve un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix para la cadena de marca de tiempo especificada.

  • timestamp es una cadena que representa una marca de tiempo de época válida. El formato debe ser %F %T.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es GMT. Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores time_zone válidos que puedes usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

STRING, STRING

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

Marca de tiempo de época válida

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

Marca de tiempo de época válida con la zona horaria America/New_York

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

timestamp.current_seconds

Disponible en:
timestamp.current_seconds()

Descripción

Devuelve un número entero que representa la hora actual en segundos Unix. Es aproximadamente igual a la marca de tiempo de la detección y se basa en el momento en que se ejecuta la regla. Esta función es sinónimo de la función timestamp.now().

Tipos de datos de parámetros

NONE

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se devuelve true si el certificado ha caducado hace más de 24 horas. Calcula la diferencia de tiempo restando los segundos Unix actuales y, a continuación, compara el resultado con el operador "mayor que".

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

timestamp.get_date

Disponible en:
timestamp.get_date(unix_seconds [, time_zone])

Descripción

Esta función devuelve una cadena con el formato YYYY-MM-DD, que representa el día en el que se encuentra una marca de tiempo.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es "GMT". Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores de zona horaria válidos que puede usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado "GMT".

$ts = $e.metadata.collected_timestamp.seconds

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

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_minute

Disponible en:
timestamp.get_minute(unix_seconds [, time_zone])

Descripción

Esta función devuelve un número entero del intervalo [0, 59] que representa el minuto.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es "GMT". Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores time_zone válidos que puedes usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Ejemplo 2

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_hour

Disponible en:
timestamp.get_hour(unix_seconds [, time_zone])

Descripción

Esta función devuelve un número entero del intervalo [0, 23] que representa la hora.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es "GMT". Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores time_zone válidos que puedes usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_hour($ts) = 15
Ejemplo 2

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_day_of_week

Disponible en:
timestamp.get_day_of_week(unix_seconds [, time_zone])

Descripción

Esta función devuelve un número entero del intervalo [1, 7] que representa el día de la semana, empezando por el domingo. Por ejemplo, 1 = domingo y 2 = lunes.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es "GMT". Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores de zona horaria válidos que puede usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_day_of_week($ts) = 6
Ejemplo 2

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.get_timestamp

Disponible en:
timestamp.get_timestamp(unix_seconds, optional timestamp_format/time_granularity, optional timezone)

Descripción

Esta función devuelve una cadena con el formato YYYY-MM-DD, que representa el día en el que se encuentra una marca de tiempo.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • timestamp_format es opcional y es una cadena que representa el formato de la marca de tiempo. Si se omite, el valor predeterminado es %F %T. Puede especificar el formato mediante una cadena de formato de fecha y hora o una de las siguientes granularidades de tiempo: SECOND, MINUTE, HOUR, DATE, WEEK, MONTH o YEAR. Para ver más opciones de formato, consulta Formatear elementos de partes de fecha y hora.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es GMT. Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:
    • Nombre de la base de datos de zonas horarias (TZ) de IANA. Por ejemplo, America/Los_Angeles. Para obtener más información, consulta la lista de zonas horarias de la base de datos tz en Wikipedia.
    • El desfase de la zona horaria con respecto a UTC, en formato (+|-)H[H][:M[M]]. Por ejemplo: "-08:00".

A continuación, se muestran ejemplos de especificadores time_zone válidos que puedes usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado GMT.

$ts = $e.metadata.collected_timestamp.seconds

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

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

En este ejemplo se usa un literal de cadena para definir el timestamp_format.

$ts = $e.metadata.collected_timestamp.seconds

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

En este ejemplo se da formato a una marca de tiempo de Unix como una cadena con una granularidad de segundos.

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

En este ejemplo, se da formato a una marca de tiempo de Unix como una cadena con una granularidad de minutos.

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

En este ejemplo se da formato a una marca de tiempo de Unix como una cadena con una granularidad de horas.

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

En este ejemplo se da formato a una marca de tiempo de Unix como una cadena con una granularidad de un día.

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

En este ejemplo, se da formato a una marca de tiempo de Unix como una cadena con una granularidad de una semana.

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

En este ejemplo se da formato a una marca de tiempo de Unix como una cadena con una granularidad mensual.

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

En este ejemplo, se da formato a una marca de tiempo de Unix como una cadena con una granularidad anual.

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

timestamp.get_week

Disponible en:
timestamp.get_week(unix_seconds [, time_zone])

Descripción

Esta función devuelve un número entero del intervalo [0, 53] que representa la semana del año. Las semanas empiezan el domingo. Las fechas anteriores al primer domingo del año corresponden a la semana 0.

  • unix_seconds es un número entero que representa el número de segundos transcurridos desde el inicio del registro de tiempo Unix, como $e.metadata.event_timestamp.seconds, o un marcador de posición que contiene ese valor.
  • time_zone es opcional y es una cadena que representa una zona horaria. Si se omite, el valor predeterminado es "GMT". Puedes especificar zonas horarias mediante literales de cadena. Las opciones son las siguientes:

A continuación, se muestran ejemplos de especificadores time_zone válidos que puedes usar como segundo argumento de las funciones de extracción de tiempo:

"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 datos de parámetros

INT, STRING

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se omite el argumento time_zone, por lo que se utiliza el valor predeterminado "GMT".

$ts = $e.metadata.collected_timestamp.seconds

timestamp.get_week($ts) = 0
Ejemplo 2

En este ejemplo se usa un literal de cadena para definir el time_zone.

$ts = $e.metadata.collected_timestamp.seconds

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

timestamp.now

Disponible en:
timestamp.now()

Descripción

Devuelve el número de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC. También se conoce como tiempo de época Unix.

Tipo de devolución

INT

Códigos de ejemplo

Ejemplo 1

En el siguiente ejemplo se devuelve una marca de tiempo del código ejecutado el 22 de mayo del 2024 a las 18:16:59.

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

window.avg

Disponible en:
window.avg(numeric_values [, should_ignore_zero_values])

Descripción

Devuelve la media de los valores de entrada (que pueden ser números enteros o flotantes). Si asignas el valor "true" al segundo argumento opcional, se ignorarán los valores cero.

Tipos de datos de parámetros

INT|FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se muestra la media de los números enteros.

// 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
Ejemplo 2

En este ejemplo se muestra la media de los valores flotantes.

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
Ejemplo 3

Media 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
Ejemplo 4

0 devoluciones 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
Ejemplo 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

Disponible en:
window.first(values_to_sort_by, values_to_return)

Descripción

Esta función de agregación devuelve un valor de cadena derivado de un evento con el valor int correlacionado más bajo en la ventana de coincidencia. Un ejemplo de caso práctico es obtener el ID de usuario del evento con la marca de tiempo más baja en la ventana de coincidencia (el evento más antiguo).

Tipos de datos de parámetros

INT, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Obtiene un valor de cadena derivado de un evento con el valor entero correlacionado más bajo en la ventana de coincidencia.

// 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

Disponible en:
window.last(values_to_sort_by, values_to_return)

Descripción

Esta función de agregación devuelve un valor de cadena derivado de un evento con el valor int correlacionado más alto en la ventana de coincidencia. Un ejemplo de caso práctico es obtener el ID de usuario del evento con la marca de tiempo más baja de la ventana de coincidencia (la marca de tiempo más alta).

Tipos de datos de parámetros

INT, STRING

Tipo de devolución

STRING

Códigos de ejemplo

Obtiene un valor de cadena derivado de un evento con el valor int correlacionado más alto en la ventana de coincidencia.

// 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

Disponible en:
window.median(numeric_values, should_ignore_zero_values)

Descripción

Devuelve la mediana de los valores de entrada. Si hay dos valores medianos, solo se elegirá uno de forma no determinista como valor devuelto.

Tipos de datos de parámetros

INT|FLOAT, BOOL

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En este ejemplo se devuelve la mediana cuando los valores de entrada no son cero.

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
}
Ejemplo 2

En este ejemplo se devuelve la mediana cuando la entrada incluye algunos valores cero que no se deben ignorar.

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
}
Ejemplo 3

En este ejemplo se devuelve la mediana cuando la entrada incluye algunos valores cero que deben ignorarse.

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
}
Ejemplo 4

En este ejemplo se devuelve la mediana cuando la entrada incluye todos los valores cero, que se deben ignorar.

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
}
Ejemplo 5

En este ejemplo se muestra que, cuando hay varias medianas, solo se devuelve una.

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

Disponible en:
window.mode(values)

Descripción

Devuelve la moda de los valores de entrada. Si hay varios valores de modo posibles, solo se elegirá uno de ellos de forma no determinista como valor devuelto.

Tipos de datos de parámetros

INT|FLOAT|STRING

Tipo de devolución

STRING

Códigos de ejemplo

Ejemplo 1

Obtiene la moda de los valores de la ventana de coincidencia.

// 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

Disponible en:
window.range(numeric_values, optional should_ignore_zero_values)

Descripción

Devuelve el intervalo de los valores de entrada encontrados (mínimo y máximo incluidos). Cada valor puede ser un número entero o de punto flotante. Si asignas el valor true al segundo argumento opcional, se ignorarán los valores cero.

Tipos de datos de parámetros

INT|FLOAT, BOOL

Tipo de devolución

ARRAY_FLOATS

Códigos de ejemplo

Los siguientes ejemplos de código ilustran algunas de las formas en las que puedes usar la función window.range.

Ejemplo: número entero mínimo y máximo

En este ejemplo se muestran los valores mínimo y máximo de un entero.

window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Ejemplo: mínimo y máximo de coma flotante

En este ejemplo se muestran los valores mínimo y máximo de coma flotante.

window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Ejemplo: entero negativo mínimo y máximo

En este ejemplo se muestran los valores enteros negativos mínimo y máximo.

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

En este ejemplo se muestra cómo se ignoran los valores 0 cuando se define el segundo parámetro.

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

window.stddev

Disponible en:
window.stddev(numeric_values)

Descripción

Devuelve la desviación estándar de los valores de entrada en una ventana de coincidencia.

Tipos de datos de parámetros

INT|FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

En este ejemplo, se devuelve la desviación estándar de los números enteros de una ventana de coincidencia.

// 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
Ejemplo 2

En este ejemplo, se devuelve la desviación estándar de los flotantes de una ventana de coincidencia.

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
Ejemplo 3

En este ejemplo se devuelve la desviación estándar en una ventana de coincidencia que contiene 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
Ejemplo 4

En este ejemplo, se devuelve una desviación estándar de cero cuando todos los valores de la ventana de coincidencia son iguales.

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
Ejemplo 5

En este ejemplo se devuelve la desviación estándar de una ventana de coincidencia que contiene números positivos y 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

Disponible en:
window.variance(values)

Descripción

Esta función devuelve la varianza especificada de los valores de entrada.

Tipos de datos de parámetros

INT|FLOAT

Tipo de devolución

FLOAT

Códigos de ejemplo

Ejemplo 1

Este ejemplo devuelve la varianza de todos los números enteros.

// 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
Ejemplo 2

Este ejemplo devuelve la varianza de todos los elementos flotantes.

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
Ejemplo 3

Este ejemplo devuelve la varianza 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
Ejemplo 4

En este ejemplo se devuelve un valor de varianza pequeño.

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
Ejemplo 5

En este ejemplo se devuelve una varianza cero.

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
Ejemplo 6

En este ejemplo se devuelve la varianza de números positivos y 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

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.