Fonctions
Cette section décrit les fonctions YARA-L 2.0 que vous pouvez utiliser dans les requêtes de règles, de recherche et de tableau de bord.
Consultez également Fonctions YARA-L 2.0 pour les tableaux de bord et Statistiques et agrégations dans la recherche à l'aide de YARA-L 2.0.
Ces fonctions peuvent être utilisées dans les parties suivantes d'une requête YARA-L :
- Section
events. BOOL_CLAUSEd'une condition dans la section "Résultat".
arrays.concat
arrays.concat(string_array, string_array)
Description
Renvoie un tableau de chaînes en copiant les éléments des tableaux de chaînes d'origine.
Types de données des paramètres
ARRAY_STRINGS – ARRAY_STRINGS
Type renvoyé
ARRAY_STRINGS
Exemples de code
Exemple 1
L'exemple suivant concatène deux tableaux de chaînes différents.
arrays.concat(["test1", "test2"], ["test3"]) = ["test1", "test2", "test3"]
Exemple 2
L'exemple suivant concatène des tableaux avec une chaîne vide.
arrays.concat([""], [""]) = ["", ""]
Exemple 3
L'exemple suivant concatène des tableaux vides.
arrays.concat([], []) = []
arrays.index_to_float
arrays.index_to_float(array, index)
Description
Renvoie l'élément à l'index donné d'un tableau. L'élément à cet index est renvoyé sous forme de float.
L'index est une valeur entière qui représente la position d'un élément dans le tableau. Par défaut, le premier élément d'un tableau a un index de 0 et le dernier élément a un index de n-1, où n est la taille du tableau. L'indexation négative permet d'accéder aux éléments de tableau par rapport à la fin du tableau. Par exemple, un index de -1 fait référence au dernier élément du tableau et un index de -2 fait référence à l'avant-dernier élément du tableau.
Types de données des paramètres
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
L'exemple suivant récupère un élément à l'index 1 à partir d'un tableau de valeurs float.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 1) // 2.1
Exemple 2
L'exemple suivant récupère un élément à l'index -1 à partir d'un tableau de valeurs float.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 0-1) // 4.6
Exemple 3
L'exemple suivant récupère un élément pour un index supérieur à la taille du tableau.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 6) // 0.0
Exemple 4
L'exemple suivant récupère un élément à partir d'un tableau vide.
arrays.index_to_float([], 0) // 0.0
Exemple 5
L'exemple suivant récupère un élément à l'index 1 d'un tableau de chaînes.
arrays.index_to_float(["1.2", "3.3", "2.4"], 1) // 3.3
Exemple 6
L'exemple suivant récupère un élément à l'index 2 d'un tableau d'entiers.
arrays.index_to_float([1, 3, 2], 2) // 2.0
arrays.index_to_int
arrays.index_to_int(array_of_inputs, index)
Description
Renvoie la valeur à un index donné dans un tableau sous forme d'entier.
L'index est une valeur entière qui représente la position d'un élément dans le tableau. Par défaut, le premier élément d'un tableau a un index de 0 et le dernier élément a un index de n-1, où n est la taille du tableau. L'indexation négative permet d'accéder aux éléments de tableau par rapport à la fin du tableau. Par exemple, un index de -1 fait référence au dernier élément du tableau et un index de -2 fait référence à l'avant-dernier élément du tableau.
Types de données des paramètres
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Type renvoyé
INT
Exemples de code
Exemple 1
Cet appel de fonction renvoie 0 lorsque la valeur à l'index est une chaîne non numérique.
arrays.index_to_int(["str0", "str1", "str2"], 1) = 0
Exemple 2
Cette fonction renvoie l'élément à l'index -1.
arrays.index_to_int(["44", "11", "22", "33"], 0-1) = 33
Exemple 3
Renvoie 0 pour l'élément hors limites.
arrays.index_to_int(["44", "11", "22", "33"], 5) = 0
Exemple 4
Cette fonction récupère l'élément du tableau float à l'index 1.
arrays.index_to_int([1.100000, 1.200000, 1.300000], 1) = 1
Exemple 5
Cette fonction récupère l'élément du tableau int à l'index 0.
arrays.index_to_int([1, 2, 3], 0) = 1
arrays.index_to_str
arrays.index_to_str(array, index)
Description
Renvoie l'élément à l'index donné du tableau sous forme de chaîne. L'index est une valeur entière qui représente la position d'un élément dans le tableau. Par défaut, le premier élément d'un tableau a un index de 0 et le dernier élément a un index de n-1, où n est la taille du tableau. L'indexation négative permet d'accéder aux éléments du tableau à partir de la fin du tableau. Par exemple, un index de -1 fait référence au dernier élément du tableau et un index de -2 fait référence à l'avant-dernier élément du tableau.
Types de données des paramètres
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant récupère un élément à l'index 1 à partir d'un tableau de chaînes.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 1) // "test2"
Exemple 2
L'exemple suivant récupère un élément à l'index -1 (dernier élément du tableau) à partir d'un tableau de chaînes.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 0-1) // "test4"
Exemple 3
L'exemple suivant récupère un élément pour un index supérieur à la taille du tableau, ce qui renvoie une chaîne vide.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 6) // ""
Exemple 4
L'exemple suivant récupère un élément à partir d'un tableau vide.
arrays.index_to_str([], 0) // ""
Exemple 5
L'exemple suivant récupère un élément à l'index 0 à partir d'un tableau de valeurs float. Le résultat est renvoyé sous forme de chaîne.
arrays.index_to_str([1.200000, 3.300000, 2.400000], 0) // "1.2"
Exemple 6
L'exemple suivant récupère un élément à l'index 2 d'un tableau d'entiers. Le résultat se présente sous la forme d'une chaîne.
arrays.index_to_str([1, 3, 2], 2) // "2"
arrays.join_string
arrays.join_string(array_of_strings, optional_delimiter)
Description
Convertit un tableau de chaînes en une seule chaîne séparée par le paramètre facultatif. Si aucun délimiteur n'est fourni, la chaîne vide est utilisée.
Types de données des paramètres
ARRAY_STRINGS, STRING
Type renvoyé
STRING
Exemples de code
Voici quelques exemples d'utilisation de la fonction :
Exemple 1
Cet exemple joint un tableau avec des éléments non nuls et un délimiteur.
arrays.join_string(["foo", "bar"], ",") = "foo,bar"
Exemple 2
Cet exemple joint un tableau avec un élément nul et un délimiteur.
arrays.join_string(["foo", NULL, "bar"], ",") = "foo,bar"
Exemple 3
Cet exemple joint un tableau avec des éléments non nuls et sans délimiteur.
arrays.join_string(["foo", "bar"]) = "foobar"
arrays.length
arrays.length(repeatedField)
Description
Renvoie le nombre d'éléments de champ répétés.
Types de données des paramètres
LIST
Type renvoyé
NUMBER
Exemples de code
Exemple 1
Renvoie le nombre d'éléments de champ répétés.
arrays.length($e.principal.ip) = 2
Exemple 2
Si plusieurs champs répétés se trouvent sur le chemin d'accès, renvoie le nombre total d'éléments de champ répétés.
arrays.length($e.intermediary.ip) = 3
arrays.max
arrays.max(array_of_ints_or_floats)
Description
Renvoie l'élément le plus grand d'un tableau ou zéro si le tableau est vide.
Types de données des paramètres
ARRAY_INTS|ARRAY_FLOATS
Type renvoyé
FLOAT
Exemples de code
Voici quelques exemples d'utilisation de la fonction :
Exemple 1
Cet exemple renvoie l'élément le plus grand dans un tableau d'entiers.
arrays.max([10, 20]) = 20.000000
Exemple 2
Cet exemple renvoie l'élément le plus grand dans un tableau de valeurs float.
arrays.max([10.000000, 20.000000]) = 20.000000
arrays.min
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])
Description
Renvoie le plus petit élément d'un tableau ou zéro si le tableau est vide. Si le deuxième argument facultatif est défini sur "true", les éléments égaux à zéro sont ignorés.
Types de données des paramètres
ARRAY_INTS|ARRAY_FLOATS, BOOL
Type renvoyé
FLOAT
Exemples de code
Voici quelques exemples d'utilisation de la fonction :
Exemple 1
Cet exemple renvoie le plus petit élément d'un tableau d'entiers.
arrays.min([10, 20]) = 10.000000
Exemple 2
Cet exemple renvoie le plus petit élément d'un tableau de valeurs flottantes.
arrays.min([10.000000, 20.000000]) = 10.000000
Exemple 3
Cet exemple renvoie le plus petit élément d'un tableau de valeurs flottantes, en ignorant les zéros.
arrays.min([10.000000, 20.000000, 0.0], true) = 10.000000
arrays.size
arrays.size( array )
Description
Renvoie la taille du tableau. Renvoie 0 pour un tableau vide.
Types de données des paramètres
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS
Type renvoyé
INT
Exemples de code
Exemple 1
Cet exemple utilise un tableau de chaînes contenant deux éléments.
arrays.size(["test1", "test2"]) = 2
Exemple 2
Cet exemple utilise un tableau int contenant trois éléments.
arrays.size([1, 2, 3]) = 3
Exemple 3
Cet exemple utilise un tableau float contenant un élément.
arrays.size([1.200000]) = 1
Exemple 4
Cet exemple utilise un tableau vide.
arrays.size([]) = 0
bytes.to_base64
bytes.to_base64(bytes, optional_default_string)
Description
La fonction convertit une valeur bytes en base64 encoded string. Les appels de fonction avec des valeurs qui ne peuvent pas être converties renvoient une chaîne vide par défaut.
Types de données des paramètres
BYTES, STRING
Type renvoyé
STRING
Exemples de code
Octets binaires bruts vers chaîne encodée en base64
La fonction convertit les octets binaires bruts en chaîne encodée en base64.
bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Échec de la conversion (par défaut, la chaîne fournie en option)
La fonction est définie par défaut sur "invalid bytes" lorsque la valeur d'octets fournie n'est pas valide.
bytes.to_base64(b'000000006f8ec5586d", "invalid bytes") = "invalid bytes"
cast.as_bool
cast.as_bool(string_or_int)
Description
La fonction convertit une valeur int ou string en valeur booléenne. Les appels de fonction avec des valeurs qui ne peuvent pas être converties renvoient FALSE. Renvoie TRUE uniquement pour l'entier 1 et la chaîne "true" (non sensible à la casse).
Types de données des paramètres
INT|STRING
Type renvoyé
BOOL
Exemples de code
Exemple 1
Cet exemple montre comment caster une chaîne non booléenne.
cast.as_bool("123") = false
Exemple 2
Entier "truthy" (1)
cast.as_bool(1) = true
Exemple 3
Chaîne "truthy"
cast.as_bool("true") = true
Exemple 4
Chaîne "truthy" en majuscules
cast.as_bool("TRUE") = true
Exemple 5
Entier négatif
cast.as_bool(0-1) = false
Exemple 6
Entier "false" (0)
cast.as_bool(0) = false
Exemple 7
chaîne vide
cast.as_bool("") = false
cast.as_float
cast.as_float(string_to_cast)
Description
Convertit une chaîne numérique en float. Tout appel de fonction avec des valeurs qui ne peuvent pas être converties renvoie 0. Les valeurs float conservent une précision allant jusqu'à sept chiffres décimaux.
Types de données des paramètres
STRING
Type renvoyé
FLOAT
Exemples de code
Exemple 1
La conversion d'une chaîne non numérique renvoie 0.
cast.as_float("str") = 0.0000000
Exemple 2
La conversion d'une chaîne vide renvoie 0.
cast.as_float("") = 0.0000000
Exemple 3
Le casting d'une chaîne numérique valide renvoie une valeur float.
cast.as_float("1.012345678") = 1.0123456
cast.as_string
cast.as_string(int_or_bytes_or_bool, optional_default_string)
Description
La fonction cast.as_string transforme une valeur INT, BYTES ou BOOL en sa représentation sous forme de chaîne. Vous pouvez fournir un argument default_string facultatif pour gérer les cas où le cast échoue. Si vous omettez l'argument default_string ou si l'entrée est une séquence d'octets UTF-8 ou BASE64 non valide, la fonction renvoie une chaîne vide.
Types de données des paramètres
INT|BYTES|BOOL, STRING
Type renvoyé
STRING
Exemples de code
Conversion d'un entier en chaîne
La fonction convertit l'entier 123 en chaîne "123".
cast.as_string(123) = "123"
Conversion de float en chaîne
La fonction convertit le float 2.25 en chaîne "2.25".
cast.as_string(2.25) = "2.25"
Conversion d'octets en chaîne
La fonction convertit le code binaire brut b'01 en chaîne "\x01".
cast.as_string(b'01, "") = "\x01"
Conversion de booléen en chaîne
La fonction convertit le booléen true en chaîne "true".
cast.as_string(true, "") = "true"
Échec de la conversion (par défaut, la chaîne fournie en option)
La fonction utilise par défaut la chaîne "casting error" lorsque la valeur fournie n'est pas valide.
cast.as_string(9223372036854775808, "casting error") = "casting error"
fingerprint
hash.fingerprint2011(byteOrString)
Description
Cette fonction calcule le hachage fingerprint2011 d'une séquence d'octets ou d'une chaîne d'entrée. Cette fonction renvoie une valeur INT non signée dans la plage [2, 0xFFFFFFFFFFFFFFFF].
Types de données des paramètres
BTYE, STRING
Type renvoyé
INT
Exemple de code
id_fingerprint = hash.fingerprint2011("user123")
groupe
group(field1, field2, field3, ...)
Description
Regroupez les champs de type similaire dans une variable d'espace réservé.
Dans la recherche UDM, les champs groupés sont utilisés pour effectuer des recherches dans plusieurs champs de type similaire. La fonction de groupe est semblable aux champs groupés, sauf qu'elle vous permet de sélectionner les champs que vous souhaitez regrouper pour déclencher une détection. Vous pouvez utiliser la fonction group pour collecter des informations sur une entité spécifique (par exemple, un nom d'hôte, une adresse IP ou un ID utilisateur) dans différents types de noms.
Exemples de code
Exemple 1
Regroupez toutes les adresses IP et fournissez un décompte décroissant de l'adresse IP la plus répandue dans la plage de temps analysée.
$ip = group(principal.ip, about.ip, target.ip)
$ip != ""
match:
$ip
outcome:
$count = count_distinct(metadata.id)
order:
$count desc
hash.sha256
hash.sha256(string)
Description
Renvoie un hachage SHA-256 de la chaîne d'entrée.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Cet exemple montre le hachage SHA-256 lorsque l'entrée est une chaîne valide.
hash.sha256("str") = "8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a"
Exemple 2
Cet exemple montre le hachage SHA-256 lorsque l'entrée est une chaîne vide.
hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
math.abs
math.abs(numericExpression)
Description
Renvoie la valeur absolue d'une expression entière ou à virgule flottante.
Types de données des paramètres
NUMBER
Type renvoyé
NUMBER
Exemples de code
Exemple 1
Cet exemple renvoie la valeur "True" si l'événement s'est produit plus de cinq minutes avant ou après l'heure spécifiée (en secondes depuis l'epoch Unix). Un appel à math.abs ne peut pas dépendre de plusieurs variables ou espaces réservés. Par exemple, vous ne pouvez pas remplacer la valeur temporelle codée en dur de 1643687343 dans l'exemple suivant par $e2.metadata.event_timestamp.seconds.
300 < math.abs($e1.metadata.event_timestamp.seconds - 1643687343)
math.ceil
math.ceil(number)
Description
Renvoie le plus petit nombre entier qui n'est pas inférieur au nombre donné (arrondi à l'entier supérieur). Renvoie 0 si l'entrée est nulle ou trop volumineuse pour tenir dans un int64.
Types de données des paramètres
FLOAT
Type renvoyé
INT
Exemples de code
Cette section contient des exemples d'utilisation de math.ceil.
Exemple 1
Cet exemple renvoie le plafond d'un nombre entier.
math.ceil(2.000000) = 2
Exemple 2
Cet exemple renvoie le plafond d'un nombre négatif.
math.ceil(0-1.200000) = -1
Exemple 3
Cet exemple renvoie 0 comme plafond d'un nombre trop grand pour un entier de 64 bits.
math.ceil(184467440737095516160.0) = 0
math.floor
math.floor(float_val)
Description
Renvoie la plus grande valeur entière qui n'est pas supérieure à la valeur fournie (arrondi à l'entier inférieur). Renvoie 0 si l'entrée est nulle ou trop grande pour tenir dans un int64.
Types de données des paramètres
FLOAT
Type renvoyé
INT
Exemples de code
Exemple 1
Cet exemple montre un cas de nombre positif.
math.floor(1.234568) = 1
Exemple 2
Cet exemple montre un cas de nombre négatif.
math.floor(0-1.234568) = -2
Exemple 3
Cet exemple montre un cas de zéro.
math.floor(0.000000) = 0
math.geo_distance
math.geo_distance(longitude1, latitude1, longitude2, latitude2))
Description
Renvoie la distance en mètres entre deux positions géographiques (coordonnées). Renvoie -1 si les coordonnées ne sont pas valides.
Types de données de paramètre
FLOAT, FLOAT, FLOAT, FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
L'exemple suivant renvoie la distance lorsque tous les paramètres sont des coordonnées valides :
math.geo_distance(-122.020287, 37.407574, -122.021810, 37.407574) = 134.564318
Exemple 2
L'exemple suivant renvoie la distance lorsque l'un des paramètres est une coordonnée tronquée :
math.geo_distance(-122.000000, 37.407574, -122.021810, 37.407574) = 1926.421905
Exemple 3
L'exemple suivant renvoie -1 lorsqu'un des paramètres est une coordonnée non valide :
math.geo_distance(0-122.897680, 37.407574, 0-122.021810, 97.407574) = -1.000000
Exemple 4
L'exemple suivant renvoie 0 lorsque les coordonnées sont identiques :
math.geo_distance(-122.897680, 37.407574, -122.897680, 37.407574) = 0.000000
math.is_increasing
math.is_increasing(num1, num2, num3)
Description
Prend une liste de valeurs numériques (entiers ou doubles) et renvoie True si les valeurs sont dans l'ordre croissant, et False dans le cas contraire.
Types de données des paramètres
INT|FLOAT, INT|FLOAT, INT|FLOAT
Type renvoyé
BOOL
Exemples de code
Exemple 1
Cet exemple inclut des valeurs de type code temporel en secondes.
math.is_increasing(1716769112, 1716769113, 1716769114) = true
Exemple 2
Cet exemple inclut une valeur double négative, une valeur INT64 nulle et une valeur INT64 positive.
math.is_increasing(-1.200000, 0, 3) = true
Exemple 3
Cet exemple inclut une valeur double négative, une valeur INT64 nulle et une valeur INT64 négative.
math.is_increasing(0-1.200000, 0, 0-3) = false
Exemple 4
Cet exemple inclut deux doubles négatifs et une valeur INT64 égale à zéro.
math.is_increasing(0-1.200000, 0-1.50000, 0) = false
Exemple 5
Cet exemple inclut un double négatif et deux valeurs identiques.
math.is_increasing(0-1.200000, 0, 0) = false
math.log
math.log(numericExpression)
Description
Renvoie la valeur du logarithme naturel d'une expression entière ou à virgule flottante.
Types de données des paramètres
NUMBER
Type renvoyé
NUMBER
Exemples de code
Exemple 1
math.log($e1.network.sent_bytes) > 20
math.pow
math.pow(base, exponent)
Description
Renvoie la valeur du premier argument élevée à la puissance du deuxième argument. Renvoie 0 en cas de débordement.
Types de données des paramètres
base : INT|FLOAT
exposant : INT|FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple montre un cas d'entier.
math.pow(2, 2) // 4.00
Exemple 2
Cet exemple montre un cas de base de fraction.
math.pow(2.200000, 3) // 10.648
Exemple 3
Cet exemple montre un cas de base et de puissance fractionnaires.
math.pow(2.200000, 1.200000) // 2.575771
Exemple 4
Cet exemple montre un cas de puissance négative.
math.pow(3, 0-3) // 0.037037
Exemple 5
Cet exemple montre un cas de puissance fractionnaire.
math.pow(3, 0-1.200000) // 0.267581
Exemple 6
Cet exemple montre un cas de base négatif.
math.pow(0-3, 0-3) // -0.037037
Exemple 7
Cet exemple montre un cas de base nul.
math.pow(0, 3) // 0
Exemple 8
Cet exemple montre un cas de puissance nulle.
math.pow(9223372036854775807, 0) // 1
Exemple 9
Cet exemple montre un cas de base important.
math.pow(9223372036854775807, 1.200000) // 57262152889751593549824
math.random
math.random()
Description
Génère une valeur pseudo-aléatoire de type DOUBLE dans la plage [0, 1), 0 étant inclus et 1 étant exclu.
Type renvoyé
FLOAT
Exemples de code
L'exemple suivant vérifie si la valeur aléatoire se trouve dans la plage [0, 1).
none
if(math.random() >= 0 and math.random() < 1) = true
math.round
math.round(numericExpression, decimalPlaces)
Description
Renvoie une valeur arrondie à l'entier le plus proche ou au nombre de décimales spécifié.
Types de données des paramètres
NUMBER
Type renvoyé
NUMBER
Exemples de code
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
math.sqrt(number)
Description
Renvoie la racine carrée du nombre donné. Renvoie 0 en cas de nombre négatif.
Types de données des paramètres
INT|FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple renvoie la racine carrée d'un argument int.
math.sqrt(3) = 1.732051
Exemple 2
Cet exemple renvoie la racine carrée d'un argument int négatif.
math.sqrt(-3) = 0.000000
Exemple 3
Cet exemple renvoie la racine carrée de l'argument zéro.
math.sqrt(0) = 0.000000
Exemple 4
Cet exemple renvoie la racine carrée d'un argument float.
math.sqrt(9.223372) = 3.037000
Exemple 5
Cet exemple renvoie la racine carrée d'un argument float négatif.
math.sqrt(0-1.200000) = 0.000000
métrique
Les fonctions de métriques peuvent agréger de grandes quantités de données historiques. Vous pouvez l'utiliser dans votre règle à l'aide de metrics.functionName() dans la section "Résultat".
Pour en savoir plus, consultez Métriques YARA-L.
net.ip_in_range_cidr
net.ip_in_range_cidr(ipAddress, subnetworkRange)
Description
Renvoie true lorsque l'adresse IP indiquée se trouve dans le sous-réseau spécifié.
Vous pouvez utiliser YARA-L pour rechercher des événements UDM sur toutes les adresses IP d'un sous-réseau à l'aide de l'instruction net.ip_in_range_cidr().
Les adresses IPv4 et IPv6 sont acceptées.
Pour effectuer une recherche dans une plage d'adresses IP, spécifiez un champ UDM d'adresse IP et une plage CIDR. YARA-L peut gérer les champs d'adresses IP uniques et répétées.
Pour effectuer une recherche dans une plage d'adresses IP, spécifiez un champ UDM ip et une plage CIDR (Classless Inter-Domain Routing). YARA-L peut gérer les champs d'adresses IP uniques et répétées.
Types de données des paramètres
STRING – STRING
Type renvoyé
BOOL
Exemples de code
Exemple 1
Exemple IPv4 :
net.ip_in_range_cidr($e.principal.ip, "192.0.2.0/24")
Exemple 2
Exemple IPv6 :
net.ip_in_range_cidr($e.network.dhcp.yiaddr, "2001:db8::/32")
Pour obtenir un exemple de règle utilisant l'instruction net.ip_in_range_cidr(), consultez l'exemple de règle dans Événement unique dans une plage d'adresses IP.
re.regex
Vous pouvez définir la correspondance d'expressions régulières dans YARA-L 2.0 à l'aide de l'une des syntaxes suivantes :
Utilisation de la syntaxe YARA-L : liée aux événements. Voici une représentation générique de cette syntaxe :
$e.field = /regex/En utilisant la syntaxe YARA-L : en tant que fonction prenant les paramètres suivants :
- Champ auquel l'expression régulière est appliquée.
- Expression régulière spécifiée sous forme de chaîne.
Voici une représentation générique de cette syntaxe :
re.regex($e.field, `regex`)
Description
Cette fonction renvoie true si la chaîne contient une sous-chaîne qui correspond à l'expression régulière fournie. Il n'est pas nécessaire d'ajouter .* au début ou à la fin de l'expression régulière.
Remarques
- Pour faire correspondre la chaîne exacte ou uniquement un préfixe ou un suffixe, incluez les caractères d'ancrage
^(début) et$(fin) dans l'expression régulière. Par exemple,/^full$/correspond exactement à"full", tandis que/full/peut correspondre à"fullest","lawfull"et"joyfully". - Si le champ UDM inclut des caractères de retour à la ligne,
regexpne correspond qu'à la première ligne du champ UDM. Pour forcer la correspondance complète des champs UDM, ajoutez(?s)à l'expression régulière. Par exemple, remplacez/.*allUDM.*/par/(?s).*allUDM.*/. - Vous pouvez utiliser le modificateur
nocaseaprès les chaînes pour indiquer que la recherche doit ignorer la casse.
Types de données des paramètres
STRING – STRING
Types d'expressions de paramètre
ANY – ANY
Type renvoyé
BOOL
Exemples de code
Exemple 1
// Equivalent to $e.principal.hostname = /google/
re.regex($e.principal.hostname, "google")
re.capture
re.capture(stringText, regex)
Description
Capture (extrait) les données d'une chaîne à l'aide du modèle d'expression régulière fourni dans l'argument.
Cette fonction utilise deux arguments :
stringText: chaîne d'origine à rechercher.regex: expression régulière indiquant le modèle à rechercher.
L'expression régulière peut contenir zéro ou un groupe de capture entre parenthèses. Si l'expression régulière ne contient aucun groupe de capture, la fonction renvoie la première sous-chaîne correspondante dans son intégralité. Si l'expression régulière contient un groupe de capture, elle renvoie la première sous-chaîne correspondante pour le groupe de capture. Définir deux groupes de capture ou plus renvoie une erreur de compilation.
Types de données des paramètres
STRING – STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Dans cet exemple, si $e.principal.hostname contient "aaa1bbaa2", l'instruction suivante sera vraie, car la fonction renvoie la première instance. Cet exemple ne comporte aucun groupe de capture.
"aaa1" = re.capture($e.principal.hostname, "a+[1-9]")
Exemple 2
Cet exemple capture tout ce qui se trouve après le symbole @ dans une adresse e-mail. Si le champ $e.network.email.from est test@google.com, l'exemple renvoie google.com. L'exemple suivant contient un groupe de capture.
"google.com" = re.capture($e.network.email.from , "@(.*)")
Exemple 3
Si l'expression régulière ne correspond à aucune sous-chaîne du texte, la fonction renvoie une chaîne vide. Vous pouvez omettre les événements pour lesquels aucune correspondance n'est trouvée en excluant la chaîne vide. Cela est particulièrement important lorsque vous utilisez re.capture() avec une inégalité :
// 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
re.replace(stringText, replaceRegex, replacementText)
Description
Effectue un remplacement d'expression régulière.
Cette fonction utilise trois arguments :
stringText: chaîne d'origine.replaceRegex: expression régulière indiquant le modèle à rechercher.replacementText: texte à insérer dans chaque correspondance.
Renvoie une nouvelle chaîne dérivée de la chaîne stringText d'origine, dans laquelle toutes les sous-chaînes correspondant au modèle de replaceRegex sont remplacées par la valeur de replacementText. Vous pouvez utiliser des chiffres échappés par une barre oblique inverse (\1 à \9) dans replacementText pour insérer du texte associé au groupe entre parenthèses correspondant dans le schéma replaceRegex. Utilisez \0 pour faire référence à l'ensemble du texte correspondant.
La fonction remplace les correspondances qui ne se chevauchent pas et remplace en priorité la première occurrence trouvée. Par exemple, re.replace("banana", "ana", "111") renvoie la chaîne "b111na".
Types de données des paramètres
STRING, STRING, STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Cet exemple capture tout ce qui se trouve après le symbole @ dans une adresse e-mail, remplace com par org, puis renvoie le résultat. Notez l'utilisation de fonctions imbriquées.
"email@google.org" = re.replace($e.network.email.from, "com", "org")
Exemple 2
Cet exemple utilise des chiffres échappés par une barre oblique inverse dans l'argument replacementText pour faire référence aux correspondances avec le modèle 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"
)
Exemple 3
Notez les cas suivants lorsque vous traitez des chaînes vides et re.replace() :
Utiliser une chaîne vide comme 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")
Pour remplacer une chaîne vide, vous pouvez utiliser "^$" comme 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
optimization.sample_rate(byteOrString, rateNumerator, rateDenominator)
Description
Cette fonction détermine s'il faut inclure un événement en fonction d'une stratégie d'échantillonnage déterministe. Cette fonction renvoie :
truepour une fraction des valeurs d'entrée, équivalente à (rateNumerator/rateDenominator), indiquant que l'événement doit être inclus dans l'échantillon.falseindiquant que l'événement ne doit pas être inclus dans l'échantillon.
Cette fonction est utile pour les scénarios d'optimisation dans lesquels vous ne souhaitez traiter qu'un sous-ensemble d'événements. Équivalent à :
hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator
Types de données des paramètres
- byteOrString : expression qui renvoie
BYTEouSTRING. - rateNumerator : "INT"
- rateDenominator: 'INT'
Type renvoyé
BOOL
Exemple de code
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
strings.base64_decode(encodedString)
Description
Renvoie une chaîne contenant la version décodée en base64 de la chaîne encodée.
Cette fonction prend une chaîne encodée en base64 comme argument. Si encodedString n'est pas une chaîne valide encodée en base64, la fonction renvoie encodedString sans le modifier.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
"test" = strings.base64_decode($e.principal.domain.name)
strings.coalesce
strings.coalesce(a, b, c, ...)
Description
Cette fonction accepte un nombre illimité d'arguments et renvoie la valeur de la première expression qui n'est pas évaluée comme une chaîne vide (par exemple, "valeur non nulle"). Si tous les arguments renvoient une chaîne vide, l'appel de fonction renvoie une chaîne vide.
Les arguments peuvent être des littéraux, des champs d'événement ou des appels de fonction. Tous les arguments doivent être de type STRING. Si des arguments sont des champs d'événement, les attributs doivent provenir du même événement.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant inclut des variables de chaîne en tant qu'arguments. La condition est définie sur "true" lorsque (1) $e.network.email.from est suspicious@gmail.com ou (2) $e.network.email.from est vide et $e.network.email.to est suspicious@gmail.com.
"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
Exemple 2
L'exemple suivant appelle la fonction coalesce avec plus de deux arguments. Cette condition compare la première adresse IP non nulle de l'événement $e aux valeurs de la liste de référence ip_watchlist. L'ordre dans lequel les arguments sont fusionnés dans cet appel est le même que celui dans lequel ils sont énumérés dans la condition de règle :
$e.principal.ipest évalué en premier.$e.src.ipest ensuite évalué.$e.target.ipest ensuite évalué.- Enfin, la chaîne "No IP" est renvoyée comme valeur par défaut si les champs
ipprécédents ne sont pas définis.
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Exemple 3
L'exemple suivant tente de regrouper principal.hostname à partir de l'événement $e1 et de l'événement $e2. Une erreur de compilation sera renvoyée, car les arguments sont des variables d'événement différentes.
// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)
strings.concat
strings.concat(a, b, c, ...)
Description
Renvoie la concaténation d'un nombre illimité d'éléments, chacun pouvant être une chaîne, un entier ou un float.
Si des arguments sont des champs d'événement, les attributs doivent provenir du même événement.
Types de données des paramètres
STRING, FLOAT, INT
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant inclut une variable de chaîne et une variable entière en tant qu'arguments. principal.hostname et principal.port proviennent du même événement, $e, et sont concaténés pour renvoyer une chaîne.
"google:80" = strings.concat($e.principal.hostname, ":", $e.principal.port)
Exemple 2
L'exemple suivant inclut une variable de chaîne et un littéral de chaîne en tant qu'arguments.
"google-test" = strings.concat($e.principal.hostname, "-test") // Matches the event when $e.principal.hostname = "google"
Exemple 3
L'exemple suivant inclut une variable de chaîne et un littéral float comme arguments. Lorsqu'ils sont représentés sous forme de chaînes, les nombres à virgule flottante entiers sont mis en forme sans point décimal (par exemple, 1,0 est représenté par "1"). De plus, les nombres à virgule flottante qui dépassent seize chiffres décimaux sont tronqués au seizième chiffre décimal.
"google2.5" = strings.concat($e.principal.hostname, 2.5)
Exemple 4
L'exemple suivant inclut une variable de chaîne, un littéral de chaîne, une variable entière et un littéral flottant en tant qu'arguments. Toutes les variables proviennent du même événement, $e, et sont concaténées avec les littéraux pour renvoyer une chaîne.
"google-test802.5" = strings.concat($e.principal.hostname, "-test", $e.principal.port, 2.5)
Exemple 5
L'exemple suivant tente de concaténer principal.port de l'événement $e1 avec principal.hostname de l'événement $e2. Une erreur de compilation sera renvoyée, car les arguments sont des variables d'événement différentes.
// Will not compile
"test" = strings.concat($e1.principal.port, $e2.principal.hostname)
strings.contains
strings.contains( str, substr )
Description
Renvoie "true" si une chaîne donnée contient la sous-chaîne spécifiée. Sinon, elle renvoie la valeur "false".
Types de données des paramètres
STRING – STRING
Type renvoyé
BOOL
Exemples de code
Exemple 1
Cet exemple renvoie "true", car la chaîne contient la sous-chaîne "is".
strings.contains("thisisastring", "is") = true
Exemple 2
Cet exemple renvoie "false", car la chaîne ne contient pas la sous-chaîne "that".
strings.contains("thisisastring", "that") = false
strings.count_substrings
strings.count_substrings(string_to_search_in, substring_to_count)
Description
Lorsqu'une chaîne et une sous-chaîne sont fournies, renvoie un int64 du nombre d'occurrences sans chevauchement de la sous-chaîne dans la chaîne.
Types de données des paramètres
STRING – STRING
Type renvoyé
INT
Exemples de code
Cette section contient des exemples qui calculent le nombre de fois qu'une sous-chaîne apparaît dans une chaîne donnée.
Exemple 1
Cet exemple utilise une chaîne non nulle et un caractère de sous-chaîne unique non nul.
strings.count_substrings("this`string`has`four`backticks", "`") = 4
Exemple 2
Cet exemple utilise une chaîne non nulle et une sous-chaîne non nulle de plus d'un caractère.
strings.count_substrings("str", "str") = 1
Exemple 3
Cet exemple utilise une chaîne non nulle et une sous-chaîne vide.
strings.count_substrings("str", "") = 0
Exemple 4
Cet exemple utilise une chaîne vide et une sous-chaîne non nulle comportant plus d'un caractère.
strings.count_substrings("", "str") = 0
Exemple 5
Cet exemple utilise une chaîne vide et une sous-chaîne vide.
strings.count_substrings("", "") = 0
Exemple 6
Cet exemple utilise une chaîne non nulle et une sous-chaîne non nulle comportant plus d'un caractère et plus d'une occurrence.
strings.count_substrings("fooABAbarABAbazABA", "AB") = 3
Exemple 7
Cet exemple utilise une chaîne non nulle et une sous-chaîne non nulle comportant plus d'un caractère et plus d'une occurrence. Il met en évidence la limite avec les occurrences de sous-chaînes qui se chevauchent.
strings.count_substrings("ABABABA", "ABA") = 2
strings.ends_with
strings.ends_with(value, suffix)
Description
La fonction accepte deux chaînes (value, suffix). Renvoie "true" si le suffixe n'est pas vide et se trouve à la fin de la valeur.
Types de données des paramètres
STRING – STRING
Type renvoyé
BOOL
Exemples de code
Les exemples de code suivants illustrent certaines des façons dont vous pouvez utiliser la fonction strings.ends_with.
Exemple : renvoie "true"
Renvoie la valeur "true" lorsque le suffixe est trouvé à la fin de la valeur.
strings.ends_with(target.hostname, "com") = true
Exemple : renvoie "false"
Renvoie la valeur "false" lorsque le suffixe ne se trouve pas à la fin de la valeur.
strings.ends_with(target.hostname, "com") = false
Exemple : renvoie "false" lorsque les valeurs sont identiques
Renvoie "false" lorsque le suffixe et la valeur sont identiques.
target.hostname != "example.com"
strings.ends_with("str", "str") = true
Exemple : renvoie "false" lorsque le suffixe est vide
Renvoie "false" lorsque le suffixe est une chaîne vide.
target.hostname != "example.com"
strings.ends_with("str", "") = false
Exemple : renvoie "false" lorsque la valeur est vide
Renvoie "false" lorsque la valeur est une chaîne vide.
target.hostname != "example.com"
strings.ends_with("", "str") = false
Exemple : renvoie "false" lorsque le suffixe et la valeur sont vides
Renvoie "false" lorsque le suffixe et la valeur sont des chaînes vides.
target.hostname != "example.com"
strings.ends_with("", "") = false
strings.extract_domain
strings.extract_domain(url_string)
Description
Extrait le domaine d'une chaîne.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Cet exemple montre une chaîne vide
strings.extract_domain("") = ""
Exemple 2
Chaîne aléatoire, pas une URL
strings.extract_domain("1234") = ""
Exemple 3
plusieurs barres obliques inverses
strings.extract_domain("\\\\") = ""
Exemple 4
Gestion optimale des caractères non alphabétiques
strings.extract_domain("http://例子.卷筒纸.中国") = "卷筒纸.中国"
Exemple 5
Gestion des URI
strings.extract_domain("mailto:?to=&subject=&body=") = ""
Exemple 6
plusieurs caractères avant l'URL réelle ;
strings.extract_domain(" \t !$5*^)&dahgsdfs;http://www.google.com") = "google.com"
Exemple 7
Caractères spéciaux dans l'URI #
strings.extract_domain("test#@google.com") = ""
Exemple 8
Caractères spéciaux dans l'URL #
strings.extract_domain("https://test#@google.com") = ""
Exemple 9
scénario de test positif
strings.extract_domain("https://google.co.in") = "google.co.in"
strings.extract_hostname
strings.extract_hostname(string)
Description
Extrait le nom d'hôte d'une chaîne. Cette fonction est sensible à la casse.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Cet exemple renvoie une chaîne vide.
strings.extract_hostname("") = ""
Exemple 2
Chaîne aléatoire, pas une URL
strings.extract_hostname("1234") = "1234"
Exemple 3
plusieurs barres obliques inverses
strings.extract_hostname("\\\\") = ""
Exemple 4
Gestion optimale des caractères non anglais
strings.extract_hostname("http://例子.卷筒纸.中国") = "例子.卷筒纸.中国"
Exemple 5
Gestion des URI
strings.extract_hostname("mailto:?to=&subject=&body=") = "mailto"
Exemple 6
plusieurs caractères avant l'URL réelle ;
strings.extract_hostname(" \t !$5*^)&dahgsdfs;http://www.google.com") = "www.google.com"
Exemple 7
Caractères spéciaux dans l'URI #
strings.extract_hostname("test#@google.com") = "test"
Exemple 8
Caractères spéciaux dans l'URL #
strings.extract_hostname("https://test#@google.com") = "test"
strings.from_base64
strings.from_base64(base64_encoded_string)
Description
La fonction convertit une valeur STRING encodée en base64 en valeur BYTES binaire brute. Les appels de fonction avec des valeurs qui ne peuvent pas être converties renvoient un BYTES vide par défaut.
Types de données des paramètres
STRING
Type renvoyé
BYTES
Exemples de code
Conversion d'une chaîne encodée en base64 en octets
La fonction convertit une chaîne encodée en base64 en sa représentation brute en octets binaires.
strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Échec de la conversion (valeur par défaut : octets vides)
Si la valeur fournie n'est pas valide, la fonction renvoie par défaut des octets vides.
strings.from_base64("invalid-value") = b'
strings.from_hex
strings.from_hex(hex_string)
Description
Renvoie les octets associés à la chaîne hexadécimale donnée.
Types de données des paramètres
STRING
Type renvoyé
BYTES
Exemples de code
Obtenez les octets associés à une chaîne hexadécimale donnée.
Exemple 1
Cet exemple montre les conversions de caractères non hexadécimaux.
strings.from_hex("str") // returns empty bytes
Exemple 2
Cet exemple montre une entrée avec une chaîne vide.
strings.from_hex("") // returns empty bytes
Exemple 3
Cet exemple montre la conversion d'une chaîne hexadécimale.
strings.from_hex("1234") // returns 1234 bytes
Exemple 4
Cet exemple montre la conversion de caractères non ASCII.
strings.from_hex("筒纸.中国") // returns empty bytes
strings.ltrim
strings.ltrim(string_to_trim, cutset)
Description
Supprime les espaces blancs de début d'une chaîne donnée. Cette fonction supprime les caractères de début présents dans ce cutset.
Types de données des paramètres
STRING – STRING
Type renvoyé
STRING
Exemples de code
Voici quelques exemples de cas d'utilisation.
Exemple 1
Cet exemple utilise les mêmes premier et deuxième arguments.
strings.ltrim("str", "str") = ""
Exemple 2
Cet exemple utilise une chaîne vide comme deuxième argument.
strings.ltrim("str", "") = "str"
Exemple 3
Cet exemple utilise une chaîne vide comme premier argument et une chaîne comme deuxième argument.
strings.ltrim("", "str") = ""
Exemple 4
Cet exemple utilise des chaînes contenant des espaces et une chaîne comme deuxième argument.
strings.ltrim("a aastraa aa ", " a") = "straa aa "
strings.reverse
strings.reverse(STRING)
Description
Renvoie une chaîne qui est l'inverse de la chaîne d'entrée.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant transmet une chaîne courte.
strings.reverse("str") = "rts" // The function returns 'rts'.
Exemple 2
L'exemple suivant transmet une chaîne vide.
strings.reverse("") = ""
Exemple 3
L'exemple suivant transmet un palindrome.
strings.reverse("tacocat") = "tacocat"
strings.rtrim
strings.rtrim(string_to_trim, cutset)
Description
Supprime les espaces blancs de fin d'une chaîne donnée. Supprime les caractères de fin présents dans ce cutset.
Types de données des paramètres
STRING – STRING
Type renvoyé
STRING
Exemples de code
Voici quelques exemples de cas d'utilisation.
Exemple 1
L'exemple suivant transmet la même chaîne en tant que premier et deuxième arguments.
strings.rtrim("str", "str") = ""
Exemple 2
L'exemple suivant transmet une chaîne vide comme deuxième argument.
strings.rtrim("str", "") = "str"
Exemple 3
L'exemple suivant transmet une chaîne vide comme premier argument et une chaîne non vide comme deuxième argument.
strings.rtrim("", "str") = ""
Exemple 4
L'exemple suivant transmet une chaîne contenant des espaces blancs comme premier argument et une chaîne non vide comme deuxième argument.
strings.rtrim("a aastraa aa ", " a") = "a aasstr"
strings.split
strings.split(string, delimiter)
Description
Fractionne la valeur de chaîne à l'aide de l'argument "delimiter". Le délimiteur par défaut est une virgule (,).
Types de données des paramètres
STRING – STRING
Type renvoyé
ARRAY_STRINGS
Exemples de code
Les exemples de code suivants illustrent certaines des façons dont vous pouvez utiliser la fonction strings.split.
Exemple : fractionner une chaîne avec la valeur par défaut
L'exemple suivant divise la chaîne à l'aide du délimiteur par défaut, qui est une virgule.
strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Exemple : fractionner une chaîne avec un deux-points
L'exemple suivant divise la chaîne à chaque deux-points (:).
strings.split("a:b:c:d", ":") = ["a", "b", "c", "d"]
Exemple : délimiteur manquant
Dans l'exemple suivant, le délimiteur est manquant dans la valeur de chaîne.
strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Exemple : délimiteur vide
L'exemple suivant comporte une chaîne de délimiteur vide.
strings.split("abc", "") = ["a", "b", "c"]
strings.to_lower
strings.to_lower(stringText)
Description
Cette fonction prend une chaîne d'entrée et renvoie une chaîne après avoir converti tous les caractères en minuscules.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant renvoie true.
"test@google.com" = strings.to_lower($e.network.email.to)
strings.to_upper
strings.to_upper(string_val)
Description
Renvoie la chaîne d'origine avec tous les caractères alphabétiques en majuscules.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
L'exemple suivant renvoie l'argument fourni en majuscules.
strings.to_upper("example") = "EXAMPLE"
strings.trim
strings.trim(string_to_trim, cutset)
Description
Supprime les espaces blancs de début et de fin d'une chaîne donnée. Supprime également les caractères indésirables (spécifiés par l'argument cutset) de la chaîne d'entrée.
Types de données des paramètres
STRING – STRING
Type renvoyé
STRING
Exemples de code
Voici quelques exemples de cas d'utilisation.
Exemple 1
Dans l'exemple suivant, la même chaîne est transmise en tant que chaîne d'entrée et cutset, ce qui donne une chaîne vide.
strings.trim("str", "str") // ""
Exemple 2
Dans l'exemple suivant, une chaîne vide est transmise en tant qu'ensemble de caractères à supprimer, ce qui donne la chaîne d'origine "str", car aucun caractère n'est spécifié dans l'ensemble de caractères à supprimer.
strings.trim("str", "") = "str"
Exemple 3
Dans l'exemple suivant, la fonction génère une chaîne vide, car la chaîne d'entrée est déjà vide et qu'il n'y a aucun caractère à supprimer.
strings.trim("", "str") = ""
Exemple 4
Dans l'exemple suivant, la fonction génère "str", car la fonction trim supprime les éléments suivants :
- Espace blanc de fin dans "a aastraa aa "
- les caractères spécifiés dans le cutset (espace, a).
strings.trim("a aastraa aa ", " a") = "str"
strings.url_decode
strings.url_decode(url_string)
Description
Étant donné une chaîne d'URL, décodez les caractères d'échappement et gérez les caractères UTF-8 qui ont été encodés. Renvoie une chaîne vide en cas d'échec du décodage.
Types de données des paramètres
STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Cet exemple montre un cas de test positif.
strings.url_decode("three%20nine%20four") = "three nine four"
Exemple 2
Cet exemple montre un cas de chaîne vide.
strings.url_decode("") // ""
Exemple 3
Cet exemple montre comment gérer les caractères non alphabétiques.
strings.url_decode("%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B") // "上海+中國"
Exemple 4
Cet exemple montre un décodage d'URL.
strings.url_decode("http://www.google.com%3Fparam1%3D%22+1+%3E+2+%22%26param2%3D2%3B") // 'http://www.google.com?param1="+1+>+2+"¶m2=2;'
timestamp.as_unix_seconds
timestamp.as_unix_seconds(timestamp [, time_zone])
Description
Cette fonction renvoie un entier représentant le nombre de secondes écoulées depuis une époque Unix pour la chaîne d'horodatage donnée.
timestampest une chaîne représentant un code temporel Unix valide. Le format doit être%F %T.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si aucune valeur n'est spécifiée, la valeur par défaut estGMT. Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Vous disposez des options suivantes :- Nom de la base de données TZ (par exemple,
America/Los_Angeles). Pour en savoir plus, consultez la liste des fuseaux horaires de la base de données tz sur Wikipédia. - Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
- Nom de la base de données TZ (par exemple,
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
STRING – STRING
Type renvoyé
INT
Exemples de code
Exemple 1
Code temporel epoch valide
timestamp.as_unix_seconds("2024-02-22 10:43:00") = 1708598580
Exemple 2
Code temporel Unix valide avec le fuseau horaire America/New_York
timestamp.as_unix_seconds("2024-02-22 10:43:00", "America/New_York") = 1708616580
timestamp.current_seconds
timestamp.current_seconds()
Description
Renvoie un entier représentant l'heure actuelle en secondes Unix. Elle est approximativement égale au code temporel de détection et est basée sur le moment où la règle est exécutée. Cette fonction est un synonyme de la fonction timestamp.now().
Types de données des paramètres
NONE
Type renvoyé
INT
Exemples de code
Exemple 1
L'exemple suivant renvoie true si le certificat a expiré depuis plus de 24 heures. Il calcule la différence de temps en soustrayant les secondes Unix actuelles, puis en comparant à l'aide d'un opérateur supérieur à.
86400 < timestamp.current_seconds() - $e.network.tls.certificate.not_after
timestamp.get_date
timestamp.get_date(unix_seconds [, time_zone])
Description
Cette fonction renvoie une chaîne au format YYYY-MM-DD, représentant le jour auquel appartient un code temporel.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si elle est omise, la valeur par défaut est "GMT". Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Les options sont les suivantes :- Nom de la base de données TZ, par exemple "America/Los_Angeles". Pour en savoir plus, consultez la colonne Nom de la base de données TZ sur cette page.
- Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. La valeur par défaut "GMT" est donc utilisée.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts) = "2024-02-19"
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts, "America/Los_Angeles") = "2024-02-20"
timestamp.get_minute
timestamp.get_minute(unix_seconds [, time_zone])
Description
Cette fonction renvoie un entier compris dans la plage [0, 59] représentant la minute.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si elle est omise, la valeur par défaut est "GMT". Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Les options sont les suivantes :- Nom de la base de données TZ, par exemple "America/Los_Angeles". Pour en savoir plus, consultez la colonne Nom de la base de données TZ sur cette page.
- Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING
Type renvoyé
INT
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. La valeur par défaut "GMT" est donc utilisée.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts, "America/Los_Angeles") = 15
timestamp.get_hour
timestamp.get_hour(unix_seconds [, time_zone])
Description
Cette fonction renvoie un entier compris dans la plage [0, 23] représentant l'heure.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si elle est omise, la valeur par défaut est "GMT". Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Les options sont les suivantes :- Nom de la base de données TZ, par exemple "America/Los_Angeles". Pour en savoir plus, consultez la colonne Nom de la base de données TZ sur cette page.
- Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING
Type renvoyé
INT
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. La valeur par défaut "GMT" est donc utilisée.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts, "America/Los_Angeles") = 15
timestamp.get_day_of_week
timestamp.get_day_of_week(unix_seconds [, time_zone])
Description
Cette fonction renvoie un entier compris dans la plage [1, 7], qui représente le jour de la semaine en commençant par le dimanche. Par exemple, 1 = dimanche et 2 = lundi.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si elle est omise, la valeur par défaut est "GMT". Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Les options sont les suivantes :- Nom de la base de données TZ, par exemple "America/Los_Angeles". Pour en savoir plus, consultez la colonne Nom de la base de données TZ sur cette page.
- Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING
Type renvoyé
INT
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. La valeur par défaut "GMT" est donc utilisée.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts) = 6
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts, "America/Los_Angeles") = 6
timestamp.get_timestamp
timestamp.get_timestamp(unix_seconds, optional timestamp_format/time_granularity, optional timezone)
Description
Cette fonction renvoie une chaîne au format YYYY-MM-DD, représentant le jour auquel appartient un code temporel.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.timestamp_formatest facultatif et correspond à une chaîne représentant le format de l'horodatage. Si aucune valeur n'est spécifiée, la valeur par défaut est%F %T. Vous pouvez spécifier le format à l'aide d'une chaîne de format de date et d'heure ou de l'une des granularités temporelles suivantes :SECOND,MINUTE,HOUR,DATE,WEEK,MONTHouYEAR. Pour plus d'options de mise en forme, consultez Mettre en forme les éléments des parties date et heure.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si aucune valeur n'est spécifiée, la valeur par défaut estGMT. Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Vous disposez des options suivantes :- Nom de la base de données des fuseaux horaires IANA (TZ), par exemple
America/Los_Angeles. Pour en savoir plus, consultez la liste des fuseaux horaires de la base de données tz sur Wikipédia. - Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
- Nom de la base de données des fuseaux horaires IANA (TZ), par exemple
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING, STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. Il est donc défini par défaut sur GMT.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts) = "2024-02-22 10:43:51"
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%F %T", "America/Los_Angeles") = "2024-02-22 10:43:51"
Exemple 3
Cet exemple utilise un littéral de chaîne pour définir le timestamp_format.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%Y-%m", "GMT") = "2024-02"
Exemple 4
Cet exemple met en forme un code temporel Unix sous forme de chaîne avec une précision à la seconde.
timestamp.get_timestamp(1708598631, "SECOND", "GMT") = "2024-02-22 10:43:51"
Exemple 5
Cet exemple met en forme un horodatage Unix sous forme de chaîne avec une précision à la minute.
timestamp.get_timestamp(1708598631, "MINUTE", "GMT") = "2024-02-22 10:43"
Exemple 6
Cet exemple formate un code temporel Unix sous forme de chaîne avec une précision à l'heure près.
timestamp.get_timestamp(1708598631, "HOUR", "GMT") = "2024-02-22 10"
Exemple 7
Cet exemple met en forme un horodatage Unix sous forme de chaîne avec une précision au jour près.
timestamp.get_timestamp(1708598631, "DATE", "GMT") = "2024-02-22"
Exemple 8
Cet exemple formate un code temporel Unix sous forme de chaîne avec une précision à la semaine.
timestamp.get_timestamp(1708598631, "WEEK", "GMT") = "2024-02-18"
Exemple 9
Cet exemple met en forme un horodatage Unix sous forme de chaîne avec une précision au mois près.
timestamp.get_timestamp(1708598631, "MONTH", "GMT") = "2024-02"
Exemple 10
Cet exemple formate un code temporel Unix sous forme de chaîne avec une précision d'année.
timestamp.get_timestamp(1708598631, "YEAR", "GMT") = "2024"
timestamp.get_week
timestamp.get_week(unix_seconds [, time_zone])
Description
Cette fonction renvoie un entier compris dans la plage [0, 53] représentant la semaine de l'année. Les semaines commencent le dimanche. Les dates antérieures au premier dimanche de l'année correspondent à la semaine 0.
unix_secondsest un entier représentant le nombre de secondes écoulées depuis l'époque Unix, comme$e.metadata.event_timestamp.seconds, ou un espace réservé contenant cette valeur.time_zoneest facultatif et correspond à une chaîne représentant un fuseau horaire. Si elle est omise, la valeur par défaut est "GMT". Vous pouvez spécifier des fuseaux horaires à l'aide de littéraux de chaîne. Les options sont les suivantes :- Nom de la base de données TZ, par exemple "America/Los_Angeles". Pour en savoir plus, consultez la colonne Nom de la base de données TZ sur cette page.
- Décalage du fuseau horaire par rapport à l'heure UTC, au format
(+|-)H[H][:M[M]], par exemple "-08:00".
Voici des exemples de spécificateurs time_zone valides que vous pouvez transmettre en tant que deuxième argument aux fonctions d'extraction de l'heure :
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Types de données des paramètres
INT, STRING
Type renvoyé
INT
Exemples de code
Exemple 1
Dans cet exemple, l'argument time_zone est omis. La valeur par défaut "GMT" est donc utilisée.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts) = 0
Exemple 2
Cet exemple utilise un littéral de chaîne pour définir le time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts, "America/Los_Angeles") = 0
timestamp.now
timestamp.now()
Description
Renvoie le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. On parle également d'heure epoch UNIX.
Type renvoyé
INT
Exemples de code
Exemple 1
L'exemple suivant renvoie un code temporel pour le code exécuté le 22 mai 2024 à 18:16:59.
timestamp.now() = 1716401819 // Unix epoch time in seconds for May 22, 2024 at 18:16:59
window.avg
window.avg(numeric_values [, should_ignore_zero_values])
Description
Renvoie la moyenne des valeurs d'entrée (qui peuvent être des nombres entiers ou à virgule flottante). Si vous définissez le deuxième argument facultatif sur "true", les valeurs nulles sont ignorées.
Types de données des paramètres
INT|FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple montre la moyenne entière.
// 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
Exemple 2
Cet exemple montre la moyenne flottante.
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
Exemple 3
Moyenne des entrées négatives
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
Exemple 4
0 retourne 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
Exemple 5
Ignorer les valeurs nulles
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
window.first(values_to_sort_by, values_to_return)
Description
Cette fonction d'agrégation renvoie une valeur de chaîne dérivée d'un événement avec la valeur int corrélée la plus faible dans la fenêtre de correspondance. Par exemple, vous pouvez obtenir l'ID utilisateur à partir de l'événement avec le code temporel le plus bas dans la fenêtre de correspondance (événement le plus ancien).
Types de données des paramètres
INT, STRING
Type renvoyé
STRING
Exemples de code
Obtenez une valeur de chaîne dérivée d'un événement avec la valeur int corrélée la plus faible dans la fenêtre de correspondance.
// 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
window.last(values_to_sort_by, values_to_return)
Description
Cette fonction d'agrégation renvoie une valeur de chaîne dérivée d'un événement avec la valeur int la plus corrélée dans la fenêtre de correspondance. Un cas d'utilisation consiste à obtenir l'ID utilisateur à partir de l'événement avec le code temporel le plus bas dans la fenêtre de correspondance (code temporel le plus élevé).
Types de données des paramètres
INT, STRING
Type renvoyé
STRING
Exemples de code
Obtenez une valeur de chaîne dérivée d'un événement avec la valeur int la plus corrélée dans la fenêtre de correspondance.
// 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
window.median(numeric_values, should_ignore_zero_values)
Description
Renvoie la médiane des valeurs d'entrée. S'il existe deux valeurs médianes, une seule sera choisie de manière non déterministe comme valeur renvoyée.
Types de données des paramètres
INT|FLOAT, BOOL
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple renvoie la médiane lorsque les valeurs d'entrée ne sont pas nulles.
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
}
Exemple 2
Cet exemple renvoie la médiane lorsque l'entrée inclut des valeurs nulles qui ne doivent pas être ignorées.
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
}
Exemple 3
Cet exemple renvoie la médiane lorsque l'entrée inclut des valeurs nulles qui doivent être ignorées.
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
}
Exemple 4
Cet exemple renvoie la médiane lorsque l'entrée inclut toutes les valeurs nulles qui doivent être ignorées.
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
}
Exemple 5
Cet exemple montre que, lorsqu'il existe plusieurs médianes, une seule est renvoyée.
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
window.mode(values)
Description
Renvoie le mode des valeurs d'entrée. En cas de valeurs de mode multiples possibles, une seule de ces valeurs sera choisie de manière non déterministe comme valeur de retour.
Types de données des paramètres
INT|FLOAT|STRING
Type renvoyé
STRING
Exemples de code
Exemple 1
Obtenez le mode des valeurs dans la fenêtre de correspondance.
// 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
window.range(numeric_values, optional should_ignore_zero_values)
Description
Renvoie la plage des valeurs d'entrée trouvées (min et max inclus). Chaque valeur peut être un entier ou un nombre à virgule flottante. Si vous définissez le deuxième argument facultatif sur "true", les valeurs nulles sont ignorées.
Types de données des paramètres
INT|FLOAT, BOOL
Type renvoyé
ARRAY_FLOATS
Exemples de code
Les exemples de code suivants illustrent certaines des façons dont vous pouvez utiliser la fonction window.range.
Exemple : entier minimal et maximal
Cet exemple montre la valeur entière minimale et maximale.
window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Exemple : virgule flottante minimale et maximale
Cet exemple montre la valeur à virgule flottante minimale et maximale.
window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Exemple : entier négatif minimal et maximal
Cet exemple montre la valeur entière négative minimale et maximale.
window.range([-1.100000, 1.100000, 0.000000, 2.400000], false) = [-1.100000, 2.400000]
Exemple : valeur 0 ignorée
Cet exemple montre comment les valeurs 0 sont ignorées lorsque vous définissez le deuxième paramètre.
window.range([0, 0, 0, 394, 1], true) = [1.000000, 394.000000]
window.stddev
window.stddev(numeric_values)
Description
Renvoie l'écart type des valeurs d'entrée dans une fenêtre de correspondance.
Types de données des paramètres
INT|FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple renvoie l'écart-type des nombres entiers dans une fenêtre de correspondance.
// 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
Exemple 2
Cet exemple renvoie l'écart-type des valeurs float dans une fenêtre de correspondance.
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
Exemple 3
Cet exemple renvoie l'écart type dans une fenêtre de correspondance contenant des nombres négatifs.
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
Exemple 4
Cet exemple renvoie un écart type nul lorsque toutes les valeurs de la fenêtre de correspondance sont identiques.
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
Exemple 5
Cet exemple renvoie l'écart-type d'une fenêtre de correspondance contenant des nombres positifs et négatifs.
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
window.variance(values)
Description
Cette fonction renvoie la variance spécifiée des valeurs d'entrée.
Types de données des paramètres
INT|FLOAT
Type renvoyé
FLOAT
Exemples de code
Exemple 1
Cet exemple renvoie la variance de tous les nombres entiers.
// 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
Exemple 2
Cet exemple renvoie la variance de tous les floats.
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
Exemple 3
Cet exemple renvoie la variance des nombres négatifs.
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
Exemple 4
Cet exemple renvoie une petite valeur de variance.
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
Exemple 5
Cet exemple renvoie une variance nulle.
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
Exemple 6
Cet exemple renvoie la variance des nombres positifs et négatifs.
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
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.