Funzioni
Questa sezione descrive le funzioni YARA-L 2.0 che puoi utilizzare nelle query di regole, ricerca e dashboard.
Consulta anche Funzioni YARA-L 2.0 per i dashboard e Statistiche e aggregazioni nella ricerca utilizzando YARA-L 2.0.
Queste funzioni possono essere utilizzate nelle seguenti parti di una query YARA-L:
- sezione
events. BOOL_CLAUSEdi una condizione nella sezione Risultato.
arrays.concat
arrays.concat(string_array, string_array)
Descrizione
Restituisce un nuovo array di stringhe copiando gli elementi dagli array di stringhe originali.
Tipi di dati dei parametri
ARRAY_STRINGS, ARRAY_STRINGS
Tipo restituito
ARRAY_STRINGS
Esempi di codice
Esempio 1
L'esempio seguente concatena due array di stringhe diversi.
arrays.concat(["test1", "test2"], ["test3"]) = ["test1", "test2", "test3"]
Esempio 2
L'esempio seguente concatena gli array con una stringa vuota.
arrays.concat([""], [""]) = ["", ""]
Esempio 3
L'esempio seguente concatena array vuoti.
arrays.concat([], []) = []
arrays.index_to_float
arrays.index_to_float(array, index)
Descrizione
Restituisce l'elemento all'indice specificato di un array. L'elemento in quell'indice viene restituito come numero float.
L'indice è un valore intero che rappresenta la posizione di un elemento nell'array. Per impostazione predefinita, il primo elemento di un array ha un indice pari a 0 e l'ultimo elemento ha un indice pari a n-1, dove n è la dimensione dell'array. L'indicizzazione negativa consente di accedere agli elementi dell'array rispetto alla fine dell'array. Ad esempio, un indice di -1 si riferisce all'ultimo elemento dell'array e un indice di -2 si riferisce al penultimo elemento dell'array.
Tipi di dati dei parametri
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
L'esempio seguente recupera un elemento all'indice 1 da un array di numeri in virgola mobile.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 1) // 2.1
Esempio 2
L'esempio seguente recupera un elemento all'indice -1 da un array di numeri in virgola mobile.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 0-1) // 4.6
Esempio 3
L'esempio seguente recupera un elemento per un indice maggiore della dimensione dell'array.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 6) // 0.0
Esempio 4
L'esempio seguente recupera un elemento da un array vuoto.
arrays.index_to_float([], 0) // 0.0
Esempio 5
L'esempio seguente recupera un elemento all'indice 1 da un array di stringhe.
arrays.index_to_float(["1.2", "3.3", "2.4"], 1) // 3.3
Esempio 6
L'esempio seguente recupera un elemento all'indice 2 da un array di numeri interi.
arrays.index_to_float([1, 3, 2], 2) // 2.0
arrays.index_to_int
arrays.index_to_int(array_of_inputs, index)
Descrizione
Restituisce il valore in un dato indice di un array come numero intero.
L'indice è un valore intero che rappresenta la posizione di un elemento nell'array. Per impostazione predefinita, il primo elemento di un array ha un indice pari a 0 e l'ultimo elemento ha un indice pari a n-1, dove n è la dimensione dell'array. L'indicizzazione negativa consente di accedere agli elementi dell'array rispetto alla fine dell'array. Ad esempio, un indice di -1 si riferisce all'ultimo elemento dell'array e un indice di -2 si riferisce al penultimo elemento dell'array.
Tipi di dati dei parametri
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo restituito
INT
Esempi di codice
Esempio 1
Questa chiamata di funzione restituisce 0 quando il valore all'indice è una stringa non numerica.
arrays.index_to_int(["str0", "str1", "str2"], 1) = 0
Esempio 2
Questa funzione restituisce l'elemento all'indice -1.
arrays.index_to_int(["44", "11", "22", "33"], 0-1) = 33
Esempio 3
Restituisce 0 per l'elemento fuori dai limiti.
arrays.index_to_int(["44", "11", "22", "33"], 5) = 0
Esempio 4
Questa funzione recupera l'elemento dall'array di numeri in virgola mobile all'indice 1.
arrays.index_to_int([1.100000, 1.200000, 1.300000], 1) = 1
Esempio 5
Questa funzione recupera l'elemento dall'array int all'indice 0.
arrays.index_to_int([1, 2, 3], 0) = 1
arrays.index_to_str
arrays.index_to_str(array, index)
Descrizione
Restituisce l'elemento all'indice specificato dell'array come stringa. L'indice è un valore intero che rappresenta la posizione di un elemento nell'array. Per impostazione predefinita, il primo elemento di un array ha un indice pari a 0 e l'ultimo elemento ha un indice pari a n-1, dove n è la dimensione dell'array. L'indicizzazione negativa consente di accedere agli elementi dell'array dalla fine dell'array. Ad esempio, un indice di -1 si riferisce all'ultimo elemento dell'array e un indice di -2 si riferisce al penultimo elemento dell'array.
Tipi di dati dei parametri
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Tipo restituito
STRING
Esempi di codice
Esempio 1
L'esempio seguente recupera un elemento all'indice 1 da un array di stringhe.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 1) // "test2"
Esempio 2
L'esempio seguente recupera un elemento all'indice -1 (l'ultimo elemento dell'array) da un array di stringhe.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 0-1) // "test4"
Esempio 3
L'esempio seguente recupera un elemento per un indice maggiore della dimensione dell'array, che restituisce una stringa vuota.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 6) // ""
Esempio 4
L'esempio seguente recupera un elemento da un array vuoto.
arrays.index_to_str([], 0) // ""
Esempio 5
L'esempio seguente recupera un elemento all'indice 0 da un array di numeri in virgola mobile. L'output viene restituito come stringa.
arrays.index_to_str([1.200000, 3.300000, 2.400000], 0) // "1.2"
Esempio 6
L'esempio seguente recupera un elemento all'indice 2 da un array di numeri interi. L'output è sotto forma di stringa.
arrays.index_to_str([1, 3, 2], 2) // "2"
arrays.join_string
arrays.join_string(array_of_strings, optional_delimiter)
Descrizione
Converte un array di stringhe in una singola stringa separata dal parametro facoltativo. Se non viene fornito alcun delimitatore, viene utilizzata la stringa vuota.
Tipi di dati dei parametri
ARRAY_STRINGS, STRING
Tipo restituito
STRING
Esempi di codice
Ecco alcuni esempi di utilizzo della funzione:
Esempio 1
Questo esempio unisce un array con elementi non nulli e un delimitatore.
arrays.join_string(["foo", "bar"], ",") = "foo,bar"
Esempio 2
Questo esempio unisce un array con un elemento nullo e un delimitatore.
arrays.join_string(["foo", NULL, "bar"], ",") = "foo,bar"
Esempio 3
Questo esempio unisce un array con elementi non nulli e nessun delimitatore.
arrays.join_string(["foo", "bar"]) = "foobar"
arrays.length
arrays.length(repeatedField)
Descrizione
Restituisce il numero di elementi del campo ripetuto.
Tipi di dati dei parametri
LIST
Tipo restituito
NUMBER
Esempi di codice
Esempio 1
Restituisce il numero di elementi del campo ripetuto.
arrays.length($e.principal.ip) = 2
Esempio 2
Se lungo il percorso sono presenti più campi ripetuti, restituisce il numero totale di elementi dei campi ripetuti.
arrays.length($e.intermediary.ip) = 3
arrays.max
arrays.max(array_of_ints_or_floats)
Descrizione
Restituisce l'elemento più grande di una matrice o zero se la matrice è vuota.
Tipi di dati dei parametri
ARRAY_INTS|ARRAY_FLOATS
Tipo restituito
FLOAT
Esempi di codice
Ecco alcuni esempi di utilizzo della funzione:
Esempio 1
Questo esempio restituisce l'elemento maggiore in un array di numeri interi.
arrays.max([10, 20]) = 20.000000
Esempio 2
Questo esempio restituisce l'elemento maggiore in un array di numeri in virgola mobile.
arrays.max([10.000000, 20.000000]) = 20.000000
arrays.min
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])
Descrizione
Restituisce l'elemento più piccolo di una matrice o zero se la matrice è vuota. Se il secondo argomento facoltativo è impostato su true, gli elementi uguali a zero vengono ignorati.
Tipi di dati dei parametri
ARRAY_INTS|ARRAY_FLOATS, BOOL
Tipo restituito
FLOAT
Esempi di codice
Ecco alcuni esempi di utilizzo della funzione:
Esempio 1
Questo esempio restituisce l'elemento più piccolo in una matrice di numeri interi.
arrays.min([10, 20]) = 10.000000
Esempio 2
Questo esempio restituisce l'elemento più piccolo in un array di numeri in virgola mobile.
arrays.min([10.000000, 20.000000]) = 10.000000
Esempio 3
Questo esempio restituisce l'elemento più piccolo in un array di numeri in virgola mobile, ignorando gli zeri.
arrays.min([10.000000, 20.000000, 0.0], true) = 10.000000
arrays.size
arrays.size( array )
Descrizione
Restituisce la dimensione della matrice. Restituisce 0 per una matrice vuota.
Tipi di dati dei parametri
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS
Tipo restituito
INT
Esempi di codice
Esempio 1
Questo esempio utilizza un array di stringhe che contiene due elementi.
arrays.size(["test1", "test2"]) = 2
Esempio 2
Questo esempio utilizza un array di numeri interi che contiene tre elementi.
arrays.size([1, 2, 3]) = 3
Esempio 3
Questo esempio utilizza un array di numeri in virgola mobile che contiene un elemento
arrays.size([1.200000]) = 1
Esempio 4
Questo esempio utilizza un array vuoto.
arrays.size([]) = 0
bytes.to_base64
bytes.to_base64(bytes, optional_default_string)
Descrizione
La funzione converte un valore bytes in un valore base64 encoded string. Le chiamate di funzioni con valori che non possono essere convertiti restituiscono una stringa vuota per impostazione predefinita.
Tipi di dati dei parametri
BYTES, STRING
Tipo restituito
STRING
Esempi di codice
Byte binari non elaborati in stringa con codifica Base64
La funzione converte i byte binari non elaborati in una stringa con codifica base64.
bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Conversione non riuscita (valore predefinito della stringa fornita facoltativamente)
La funzione utilizza per impostazione predefinita "invalid bytes" quando il valore dei byte fornito non è valido.
bytes.to_base64(b'000000006f8ec5586d", "invalid bytes") = "invalid bytes"
cast.as_bool
cast.as_bool(string_or_int)
Descrizione
La funzione converte un valore int o stringa in un valore booleano. Le chiamate di funzione con valori che non possono essere convertiti restituiranno FALSE. Restituisce TRUE solo per l'intero 1 e la stringa "true" senza distinzione tra maiuscole e minuscole.
Tipi di dati dei parametri
INT|STRING
Tipo restituito
BOOL
Esempi di codice
Esempio 1
Questo esempio mostra come trasmettere una stringa non booleana
cast.as_bool("123") = false
Esempio 2
Intero vero (1)
cast.as_bool(1) = true
Esempio 3
Stringa truthy
cast.as_bool("true") = true
Esempio 4
Stringa truthy in maiuscolo
cast.as_bool("TRUE") = true
Esempio 5
Numero intero negativo
cast.as_bool(0-1) = false
Esempio 6
Numero intero falso (0)
cast.as_bool(0) = false
Esempio 7
stringa vuota
cast.as_bool("") = false
cast.as_float
cast.as_float(string_to_cast)
Descrizione
Converte una stringa numerica in un numero in virgola mobile. Qualsiasi chiamata di funzione con valori che non possono essere convertiti restituisce 0. I valori float mantengono la precisione fino a 7 cifre decimali.
Tipi di dati dei parametri
STRING
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Il casting di una stringa non numerica restituisce 0.
cast.as_float("str") = 0.0000000
Esempio 2
Il casting di una stringa vuota restituisce 0.
cast.as_float("") = 0.0000000
Esempio 3
Il casting di una stringa numerica valida restituisce un valore float.
cast.as_float("1.012345678") = 1.0123456
cast.as_string
cast.as_string(int_or_bytes_or_bool, optional_default_string)
Descrizione
La funzione cast.as_string trasforma un valore INT, BYTES o BOOL nella relativa rappresentazione stringa. Puoi fornire un argomento default_string facoltativo per gestire i casi in cui la conversione non va a buon fine. Se ometti l'argomento default_string o se l'input è una sequenza di byte UTF-8 o BASE64 non valida, la funzione restituisce una stringa vuota.
Tipi di dati dei parametri
INT|BYTES|BOOL, STRING
Tipo restituito
STRING
Esempi di codice
Conversione da numero intero a stringa
La funzione converte l'intero 123 nella stringa "123".
cast.as_string(123) = "123"
Conversione da float a stringa
La funzione converte il numero in virgola mobile 2.25 nella stringa "2.25".
cast.as_string(2.25) = "2.25"
Conversione da byte a stringa
La funzione converte il valore binario non elaborato b'01 nella stringa "\x01".
cast.as_string(b'01, "") = "\x01"
Conversione da booleano a stringa
La funzione converte il valore booleano true nella stringa "true".
cast.as_string(true, "") = "true"
Conversione non riuscita (valore predefinito della stringa fornita facoltativamente)
La funzione utilizza per impostazione predefinita la stringa "casting error" quando il valore fornito non è valido.
cast.as_string(9223372036854775808, "casting error") = "casting error"
impronta
hash.fingerprint2011(byteOrString)
Descrizione
Questa funzione calcola l'hash fingerprint2011 di una sequenza di byte
o di una stringa di input. Questa funzione restituisce un valore INT senza segno nell'intervallo [2, 0xFFFFFFFFFFFFFFFF].
Tipi di dati dei parametri
BTYE, STRING
Tipo restituito
INT
Esempio di codice
id_fingerprint = hash.fingerprint2011("user123")
gruppo
group(field1, field2, field3, ...)
Descrizione
Raggruppa i campi di tipo simile in una variabile segnaposto.
Nella ricerca UDM, i campi raggruppati vengono utilizzati per eseguire ricerche in più campi di un tipo simile. La funzione Group è simile ai campi raggruppati, ma ti consente di selezionare i campi che vuoi raggruppare per attivare un rilevamento. Puoi utilizzare la funzione di raggruppamento per raccogliere informazioni su una specifica entità (ad esempio un nome host, un indirizzo IP o un ID utente) in diversi tipi di sostantivo.
Esempi di codice
Esempio 1
Raggruppa tutti gli indirizzi IP e fornisci un conteggio decrescente dell'indirizzo IP più diffuso nell'intervallo di tempo analizzato.
$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)
Descrizione
Restituisce un hash SHA-256 della stringa di input.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Questo esempio mostra l'hash SHA-256 quando l'input è una stringa valida.
hash.sha256("str") = "8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a"
Esempio 2
Questo esempio mostra l'hash SHA-256 quando l'input è una stringa vuota.
hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
math.abs
math.abs(numericExpression)
Descrizione
Restituisce il valore assoluto di un'espressione intera o mobile.
Tipi di dati dei parametri
NUMBER
Tipo restituito
NUMBER
Esempi di codice
Esempio 1
Questo esempio restituisce True se l'evento si è verificato più di 5 minuti dopo l'ora
specificata (in secondi dall'epoca Unix), indipendentemente dal fatto che l'evento si sia verificato
prima o dopo l'ora specificata. Una chiamata a math.abs non può dipendere da
più variabili o segnaposto. Ad esempio, non puoi sostituire il valore
dell'ora hardcoded 1643687343 nell'esempio seguente con
$e2.metadata.event_timestamp.seconds.
300 < math.abs($e1.metadata.event_timestamp.seconds - 1643687343)
math.ceil
math.ceil(number)
Descrizione
Restituisce il numero intero più piccolo non inferiore al numero specificato (arrotondamento per eccesso). Restituisce 0 se l'input è null o troppo grande per essere contenuto in un int64.
Tipi di dati dei parametri
FLOAT
Tipo restituito
INT
Esempi di codice
Questa sezione contiene esempi di utilizzo di math.ceil.
Esempio 1
Questo esempio restituisce il valore di ceil di un numero intero.
math.ceil(2.000000) = 2
Esempio 2
Questo esempio restituisce il valore di ceil di un numero negativo.
math.ceil(0-1.200000) = -1
Esempio 3
Questo esempio restituisce 0 come valore di ceil di un numero troppo grande per un intero a 64 bit.
math.ceil(184467440737095516160.0) = 0
math.floor
math.floor(float_val)
Descrizione
Restituisce il valore intero più grande che non è maggiore del valore fornito (arrotondamento per difetto). Restituisce 0 se l'input è null o troppo grande per essere inserito in un int64.
Tipi di dati dei parametri
FLOAT
Tipo restituito
INT
Esempi di codice
Esempio 1
Questo esempio mostra un caso di numero positivo.
math.floor(1.234568) = 1
Esempio 2
Questo esempio mostra un caso di numero negativo.
math.floor(0-1.234568) = -2
Esempio 3
Questo esempio mostra un caso di zero.
math.floor(0.000000) = 0
math.geo_distance
math.geo_distance(longitude1, latitude1, longitude2, latitude2))
Descrizione
Restituisce la distanza tra due posizioni geografiche (coordinate) in metri. Restituisce -1 se le coordinate non sono valide.
Tipi di dati dei parametri
FLOAT, FLOAT, FLOAT, FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
L'esempio seguente restituisce la distanza quando tutti i parametri sono coordinate valide:
math.geo_distance(-122.020287, 37.407574, -122.021810, 37.407574) = 134.564318
Esempio 2
L'esempio seguente restituisce la distanza quando uno dei parametri è una coordinata troncata:
math.geo_distance(-122.000000, 37.407574, -122.021810, 37.407574) = 1926.421905
Esempio 3
L'esempio seguente restituisce -1 quando uno dei parametri è una coordinata non valida:
math.geo_distance(0-122.897680, 37.407574, 0-122.021810, 97.407574) = -1.000000
Esempio 4
Il seguente esempio restituisce 0 quando le coordinate sono le stesse:
math.geo_distance(-122.897680, 37.407574, -122.897680, 37.407574) = 0.000000
math.is_increasing
math.is_increasing(num1, num2, num3)
Descrizione
Accetta un elenco di valori numerici (interi o doppi) e restituisce True se
i valori sono in ordine crescente e False in caso contrario.
Tipi di dati dei parametri
INT|FLOAT, INT|FLOAT, INT|FLOAT
Tipo restituito
BOOL
Esempi di codice
Esempio 1
Questo esempio include valori simili a timestamp in secondi.
math.is_increasing(1716769112, 1716769113, 1716769114) = true
Esempio 2
Questo esempio include un valore double negativo, un valore INT64 pari a zero e un valore INT64 positivo.
math.is_increasing(-1.200000, 0, 3) = true
Esempio 3
Questo esempio include un valore double negativo, un valore INT64 pari a zero e un valore INT64 negativo.
math.is_increasing(0-1.200000, 0, 0-3) = false
Esempio 4
Questo esempio include due numeri doppi negativi e un valore INT64 pari a zero.
math.is_increasing(0-1.200000, 0-1.50000, 0) = false
Esempio 5
Questo esempio include un numero negativo con doppia precisione e due valori uguali.
math.is_increasing(0-1.200000, 0, 0) = false
math.log
math.log(numericExpression)
Descrizione
Restituisce il valore del logaritmo naturale di un'espressione intera o mobile.
Tipi di dati dei parametri
NUMBER
Tipo restituito
NUMBER
Esempi di codice
Esempio 1
math.log($e1.network.sent_bytes) > 20
math.pow
math.pow(base, exponent)
Descrizione
Restituisce il valore del primo argomento elevato alla potenza del secondo argomento. Restituisce 0 in caso di overflow.
Tipi di dati dei parametri
base: INT|FLOAT
esponente: INT|FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio mostra un caso di numeri interi.
math.pow(2, 2) // 4.00
Esempio 2
Questo esempio mostra un caso base di frazione.
math.pow(2.200000, 3) // 10.648
Esempio 3
Questo esempio mostra un caso di base e di potenza di una frazione.
math.pow(2.200000, 1.200000) // 2.575771
Esempio 4
Questo esempio mostra un caso di potenza negativa.
math.pow(3, 0-3) // 0.037037
Esempio 5
Questo esempio mostra un caso di potenza frazionaria.
math.pow(3, 0-1.200000) // 0.267581
Esempio 6
Questo esempio mostra un caso base negativo.
math.pow(0-3, 0-3) // -0.037037
Esempio 7
Questo esempio mostra un caso base pari a zero.
math.pow(0, 3) // 0
Esempio 8
Questo esempio mostra un caso di consumo energetico pari a zero.
math.pow(9223372036854775807, 0) // 1
Esempio 9
Questo esempio mostra un caso base di grandi dimensioni.
math.pow(9223372036854775807, 1.200000) // 57262152889751593549824
math.random
math.random()
Descrizione
Genera un valore pseudocasuale di tipo DOUBLE nell'intervallo di [0, 1), inclusi 0 ed escluso 1.
Tipo restituito
FLOAT
Esempi di codice
Il seguente esempio verifica se il valore casuale rientra nell'intervallo [0, 1).
none
if(math.random() >= 0 and math.random() < 1) = true
math.round
math.round(numericExpression, decimalPlaces)
Descrizione
Restituisce un valore arrotondato al numero intero più vicino o al numero specificato di cifre decimali.
Tipi di dati dei parametri
NUMBER
Tipo restituito
NUMBER
Esempi di codice
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)
Descrizione
Restituisce la radice quadrata del numero specificato. Restituisce 0 in caso di numeri negativi.
Tipi di dati dei parametri
INT|FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio restituisce la radice quadrata di un argomento int.
math.sqrt(3) = 1.732051
Esempio 2
Questo esempio restituisce la radice quadrata di un argomento int negativo.
math.sqrt(-3) = 0.000000
Esempio 3
Questo esempio restituisce la radice quadrata dell'argomento zero.
math.sqrt(0) = 0.000000
Esempio 4
Questo esempio restituisce la radice quadrata di un argomento float.
math.sqrt(9.223372) = 3.037000
Esempio 5
Questo esempio restituisce la radice quadrata di un argomento in virgola mobile negativo.
math.sqrt(0-1.200000) = 0.000000
metriche
Le funzioni delle metriche possono aggregare grandi quantità di dati storici. Puoi utilizzare
questo valore nella regola utilizzando metrics.functionName() nella sezione
Risultato.
Per ulteriori informazioni, consulta Metriche YARA-L.
net.ip_in_range_cidr
net.ip_in_range_cidr(ipAddress, subnetworkRange)
Descrizione
Restituisce true quando l'indirizzo IP specificato si trova all'interno della subnet specificata.
Puoi utilizzare YARA-L per cercare eventi UDM in tutti gli indirizzi IP
all'interno di una subnet utilizzando l'istruzione net.ip_in_range_cidr().
Sono supportati sia IPv4 che IPv6.
Per eseguire una ricerca in un intervallo di indirizzi IP, specifica un campo UDM IP e un intervallo CIDR. YARA-L può gestire campi di indirizzi IP singoli e ripetuti.
Per eseguire una ricerca in un intervallo di indirizzi IP, specifica un campo ip UDM e un intervallo CIDR (Classless Inter-Domain Routing). YARA-L può gestire campi di indirizzi IP singoli e ripetuti.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
BOOL
Esempi di codice
Esempio 1
Esempio IPv4:
net.ip_in_range_cidr($e.principal.ip, "192.0.2.0/24")
Esempio 2
Esempio di IPv6:
net.ip_in_range_cidr($e.network.dhcp.yiaddr, "2001:db8::/32")
Per una regola di esempio che utilizza l'istruzione net.ip_in_range_cidr(), vedi la regola di esempio in Singolo evento all'interno dell'intervallo di indirizzi IP.
re.regex
Puoi definire la corrispondenza con espressioni regolari in YARA-L 2.0 utilizzando una delle seguenti sintassi:
Utilizzo della sintassi YARA-L: correlata agli eventi. Di seguito è riportata una rappresentazione generica di questa sintassi:
$e.field = /regex/Utilizzando la sintassi YARA-L, come funzione che accetta i seguenti parametri:
- Campo a cui viene applicata l'espressione regolare.
- Espressione regolare specificata come stringa.
Di seguito è riportata una rappresentazione generica di questa sintassi:
re.regex($e.field, `regex`)
Descrizione
Questa funzione restituisce true se la stringa contiene una sottostringa che corrisponde all'espressione regolare fornita. Non è necessario aggiungere .* all'inizio o alla fine dell'espressione regolare.
Note
- Per trovare la corrispondenza esatta della stringa o solo di un prefisso o un suffisso, includi i caratteri di ancoraggio
^(iniziale) e$(finale) nell'espressione regolare. Ad esempio,/^full$/corrisponde esattamente a"full", mentre/full/potrebbe corrispondere a"fullest","lawfull"e"joyfully". - Se il campo UDM include caratteri di nuova riga,
regexpcorrisponde solo alla prima riga del campo UDM. Per applicare la corrispondenza completa dei campi UDM, aggiungi(?s)all'espressione regolare. Ad esempio, sostituisci/.*allUDM.*/con/(?s).*allUDM.*/. - Puoi utilizzare il modificatore
nocasedopo le stringhe per indicare che la ricerca deve ignorare le maiuscole.
Tipi di dati dei parametri
STRING, STRING
Tipi di espressioni dei parametri
ANY, ANY
Tipo restituito
BOOL
Esempi di codice
Esempio 1
// Equivalent to $e.principal.hostname = /google/
re.regex($e.principal.hostname, "google")
re.capture
re.capture(stringText, regex)
Descrizione
Acquisisce (estrae) i dati da una stringa utilizzando il pattern di espressione regolare fornito nell'argomento.
Questa funzione accetta due argomenti:
stringText: la stringa originale da cercare.regex: l'espressione regolare che indica il pattern da cercare.
L'espressione regolare può contenere 0 o 1 gruppi di acquisizione tra parentesi. Se l'espressione regolare contiene 0 gruppi di acquisizione, la funzione restituisce la prima sottostringa corrispondente. Se l'espressione regolare contiene un gruppo Capture, restituisce la prima sottostringa corrispondente per il gruppo Capture. La definizione di due o più gruppi di acquisizione restituisce un errore del compilatore.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
In questo esempio, se $e.principal.hostname contiene "aaa1bbaa2", la seguente condizione è vera perché la funzione
restituisce la prima istanza. Questo esempio non ha gruppi di acquisizione.
"aaa1" = re.capture($e.principal.hostname, "a+[1-9]")
Esempio 2
Questo esempio acquisisce tutto ciò che segue il simbolo @ in un'email. Se il
campo $e.network.email.from è test@google.com, l'esempio restituisce
google.com. L'esempio seguente contiene un gruppo di acquisizione.
"google.com" = re.capture($e.network.email.from , "@(.*)")
Esempio 3
Se l'espressione regolare non corrisponde ad alcuna sottostringa nel testo, la funzione restituisce una stringa vuota. Puoi omettere gli eventi in cui non si verifica alcuna corrispondenza
escludendo la stringa vuota, il che è particolarmente importante quando utilizzi
re.capture() con una disuguaglianza:
// 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)
Descrizione
Esegue una sostituzione di espressioni regolari.
Questa funzione accetta tre argomenti:
stringText: la stringa originale.replaceRegex: l'espressione regolare che indica il pattern da cercare.replacementText: il testo da inserire in ogni corrispondenza.
Restituisce una nuova stringa derivata dalla stringa stringText originale, in cui tutte le sottostringhe che corrispondono al pattern in replaceRegex vengono sostituite con il valore in replacementText. Puoi utilizzare cifre con una barra rovesciata come carattere di escape (da \1 a \9) all'interno di
replacementText per inserire il testo corrispondente al gruppo racchiuso tra parentesi
nel pattern replaceRegex. Utilizza \0 per fare riferimento all'intero testo corrispondente.
La funzione sostituisce le corrispondenze non sovrapposte e dà la priorità alla sostituzione della
prima occorrenza trovata. Ad esempio, re.replace("banana", "ana", "111")
restituisce la stringa "b111na".
Tipi di dati dei parametri
STRING, STRING, STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Questo esempio acquisisce tutto ciò che segue il simbolo @ in un'email, sostituisce com
con org e poi restituisce il risultato. Nota l'utilizzo di funzioni nidificate.
"email@google.org" = re.replace($e.network.email.from, "com", "org")
Esempio 2
Questo esempio utilizza cifre con interpretazione letterale a una barra rovesciata nell'argomento replacementText per
fare riferimento alle corrispondenze con il pattern 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"
)
Esempio 3
Tieni presente i seguenti casi quando gestisci stringhe vuote e re.replace():
Utilizzo della stringa vuota come 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")
Per sostituire una stringa vuota, puoi utilizzare "^$" come 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)
Descrizione
Questa funzione determina se includere un evento in base a una strategia di campionamento deterministico. Questa funzione restituisce:
trueper una frazione dei valori di input, equivalente a (rateNumerator/rateDenominator), a indicare che l'evento deve essere incluso nel campione.falseche indica che l'evento non deve essere incluso nel campione.
Questa funzione è utile per gli scenari di ottimizzazione in cui vuoi elaborare solo un sottoinsieme di eventi. Equivalente a:
hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator
Tipi di dati dei parametri
- byteOrString: espressione che restituisce un valore
BYTEoSTRING. - rateNumerator: "INT"
- rateDenominator: 'INT'
Tipo restituito
BOOL
Esempio di codice
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)
Descrizione
Restituisce una stringa contenente la versione decodificata in base64 della stringa codificata.
Questa funzione accetta una stringa con codifica base64 come argomento. Se encodedString
non è una stringa con codifica base64 valida, la funzione restituisce encodedString invariato.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
"test" = strings.base64_decode($e.principal.domain.name)
strings.coalesce
strings.coalesce(a, b, c, ...)
Descrizione
Questa funzione accetta un numero illimitato di argomenti e restituisce il valore della prima espressione che non restituisce una stringa vuota (ad esempio "valore diverso da zero"). Se tutti gli argomenti restituiscono una stringa vuota, la chiamata di funzione restituisce una stringa vuota.
Gli argomenti possono essere valori letterali, campi evento o chiamate di funzioni. Tutti gli argomenti devono essere di tipo STRING. Se alcuni argomenti sono campi evento, gli attributi devono provenire dallo stesso evento.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Il seguente esempio include variabili stringa come argomenti. La condizione
restituisce true quando (1) $e.network.email.from è suspicious@gmail.com o
(2) $e.network.email.from è vuoto e $e.network.email.to è
suspicious@gmail.com.
"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
Esempio 2
L'esempio seguente chiama la funzione coalesce con più di due argomenti. Questa condizione confronta il primo indirizzo IP non nullo dell'evento $e
con i valori nell'elenco di riferimento ip_watchlist. L'ordine in cui gli argomenti vengono uniti in questa chiamata è lo stesso in cui vengono enumerati nella condizione della regola:
$e.principal.ipviene valutato per primo.$e.src.ipviene valutato successivamente.$e.target.ipviene valutato successivamente.- Infine, la stringa "No IP" viene restituita come valore predefinito se i campi
ipprecedenti non sono impostati.
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Esempio 3
L'esempio seguente tenta di unire principal.hostname dall'evento
$e1 e dall'evento $e2. Restituirà un errore del compilatore perché gli argomenti sono
variabili evento diverse.
// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)
strings.concat
strings.concat(a, b, c, ...)
Descrizione
Restituisce la concatenazione di un numero illimitato di elementi, ognuno dei quali può essere una stringa, un numero intero o un numero in virgola mobile.
Se alcuni argomenti sono campi evento, gli attributi devono provenire dallo stesso evento.
Tipi di dati dei parametri
STRING, FLOAT, INT
Tipo restituito
STRING
Esempi di codice
Esempio 1
L'esempio seguente include una variabile stringa e una variabile intera come
argomenti. Sia principal.hostname che principal.port provengono dallo stesso
evento, $e, e vengono concatenati per restituire una stringa.
"google:80" = strings.concat($e.principal.hostname, ":", $e.principal.port)
Esempio 2
L'esempio seguente include una variabile stringa e un valore letterale stringa come argomenti.
"google-test" = strings.concat($e.principal.hostname, "-test") // Matches the event when $e.principal.hostname = "google"
Esempio 3
Il seguente esempio include una variabile stringa e un valore letterale float come argomenti. Quando sono rappresentati come stringhe, i numeri in virgola mobile che sono numeri interi vengono formattati senza la virgola decimale (ad esempio, 1.0 è rappresentato come "1"). Inoltre, i numeri in virgola mobile che superano le sedici cifre decimali vengono troncati alla sedicesima cifra decimale.
"google2.5" = strings.concat($e.principal.hostname, 2.5)
Esempio 4
L'esempio seguente include una variabile stringa, un valore letterale stringa, una variabile intera e un valore letterale float come argomenti. Tutte le variabili provengono dallo stesso evento, $e, e vengono concatenate con i valori letterali per restituire una stringa.
"google-test802.5" = strings.concat($e.principal.hostname, "-test", $e.principal.port, 2.5)
Esempio 5
L'esempio seguente tenta di concatenare principal.port dall'evento $e1,
con principal.hostname dall'evento $e2. Restituirà un errore del compilatore
perché gli argomenti sono variabili evento diverse.
// Will not compile
"test" = strings.concat($e1.principal.port, $e2.principal.hostname)
strings.contains
strings.contains( str, substr )
Descrizione
Restituisce true se una determinata stringa contiene la sottostringa specificata. In caso contrario, restituisce false.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
BOOL
Esempi di codice
Esempio 1
Questo esempio restituisce true perché la stringa contiene la sottostringa "is".
strings.contains("thisisastring", "is") = true
Esempio 2
Questo esempio restituisce false perché la stringa non contiene la sottostringa "that".
strings.contains("thisisastring", "that") = false
strings.count_substrings
strings.count_substrings(string_to_search_in, substring_to_count)
Descrizione
Data una stringa e una sottostringa, restituisce un int64 del conteggio delle occorrenze non sovrapposte della sottostringa all'interno della stringa.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
INT
Esempi di codice
Questa sezione contiene esempi che calcolano il numero di volte in cui una sottostringa viene visualizzata in una determinata stringa.
Esempio 1
Questo esempio utilizza una stringa non nulla e un carattere di sottostringa singola non nullo.
strings.count_substrings("this`string`has`four`backticks", "`") = 4
Esempio 2
Questo esempio utilizza una stringa non nulla e una sottostringa non nulla di più di un carattere.
strings.count_substrings("str", "str") = 1
Esempio 3
Questo esempio utilizza una stringa non nulla e una sottostringa vuota.
strings.count_substrings("str", "") = 0
Esempio 4
Questo esempio utilizza una stringa vuota e una sottostringa non nulla di più di un carattere.
strings.count_substrings("", "str") = 0
Esempio 5
Questo esempio utilizza una stringa vuota e una sottostringa vuota.
strings.count_substrings("", "") = 0
Esempio 6
Questo esempio utilizza una stringa non nulla e una sottostringa non nulla composta da più di un carattere e con più di un'occorrenza.
strings.count_substrings("fooABAbarABAbazABA", "AB") = 3
Esempio 7
Questo esempio utilizza una stringa non nulla e una sottostringa non nulla composta da più di un carattere e con più di un'occorrenza. Evidenzia la limitazione con le occorrenze di sottostringhe sovrapposte
strings.count_substrings("ABABABA", "ABA") = 2
strings.ends_with
strings.ends_with(value, suffix)
Descrizione
La funzione accetta due stringhe (value, suffix). Restituisce true se il suffisso non è vuoto e si trova alla fine del valore.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
BOOL
Esempi di codice
I seguenti esempi di codice illustrano alcuni dei modi in cui potresti utilizzare la funzione
strings.ends_with.
Esempio: restituisce true
Restituisce true quando il suffisso viene trovato alla fine del valore.
strings.ends_with(target.hostname, "com") = true
Esempio: restituisce false
Restituisce false quando il suffisso non si trova alla fine del valore.
strings.ends_with(target.hostname, "com") = false
Esempio: restituisce false quando sono identici
Restituisce false quando il suffisso e il valore sono identici.
target.hostname != "example.com"
strings.ends_with("str", "str") = true
Esempio: restituisce false quando il suffisso è vuoto
Restituisce false quando il suffisso è una stringa vuota.
target.hostname != "example.com"
strings.ends_with("str", "") = false
Esempio: restituisce false quando il valore è vuoto
Restituisce false quando il valore è una stringa vuota.
target.hostname != "example.com"
strings.ends_with("", "str") = false
Esempio: restituisce false quando il suffisso e il valore sono vuoti
Restituisce false quando il suffisso e il valore sono stringhe vuote.
target.hostname != "example.com"
strings.ends_with("", "") = false
strings.extract_domain
strings.extract_domain(url_string)
Descrizione
Estrae il dominio da una stringa.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Questo esempio mostra una stringa vuota
strings.extract_domain("") = ""
Esempio 2
stringa casuale, non un URL
strings.extract_domain("1234") = ""
Esempio 3
più barre rovesciate
strings.extract_domain("\\\\") = ""
Esempio 4
gestione corretta dei caratteri non alfabetici
strings.extract_domain("http://例子.卷筒纸.中国") = "卷筒纸.中国"
Esempio 5
gestione degli URI
strings.extract_domain("mailto:?to=&subject=&body=") = ""
Esempio 6
più caratteri prima dell'URL effettivo
strings.extract_domain(" \t !$5*^)&dahgsdfs;http://www.google.com") = "google.com"
Esempio 7
caratteri speciali nell'URI #
strings.extract_domain("test#@google.com") = ""
Esempio 8
caratteri speciali nell'URL #
strings.extract_domain("https://test#@google.com") = ""
Esempio 9
scenario di test positivo
strings.extract_domain("https://google.co.in") = "google.co.in"
strings.extract_hostname
strings.extract_hostname(string)
Descrizione
Estrae il nome host da una stringa. Questa funzione è sensibile alle maiuscole.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Questo esempio restituisce una stringa vuota.
strings.extract_hostname("") = ""
Esempio 2
stringa casuale, non un URL
strings.extract_hostname("1234") = "1234"
Esempio 3
più barre inverse
strings.extract_hostname("\\\\") = ""
Esempio 4
gestione corretta dei caratteri non inglesi
strings.extract_hostname("http://例子.卷筒纸.中国") = "例子.卷筒纸.中国"
Esempio 5
gestione degli URI
strings.extract_hostname("mailto:?to=&subject=&body=") = "mailto"
Esempio 6
più caratteri prima dell'URL effettivo
strings.extract_hostname(" \t !$5*^)&dahgsdfs;http://www.google.com") = "www.google.com"
Esempio 7
caratteri speciali nell'URI #
strings.extract_hostname("test#@google.com") = "test"
Esempio 8
caratteri speciali nell'URL #
strings.extract_hostname("https://test#@google.com") = "test"
strings.from_base64
strings.from_base64(base64_encoded_string)
Descrizione
La funzione converte un valore STRING con codifica Base64 in un valore BYTES binario non elaborato. Le chiamate di funzioni con valori che non possono essere convertiti restituiscono un BYTES vuoto per impostazione predefinita.
Tipi di dati dei parametri
STRING
Tipo restituito
BYTES
Esempi di codice
Conversione da stringa con codifica Base64 a byte
La funzione converte una stringa con codifica base64 nella sua rappresentazione binaria non elaborata.
strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Conversione non riuscita (valore predefinito: byte vuoti)
Se il valore fornito non è valido, la funzione utilizza i byte vuoti per impostazione predefinita.
strings.from_base64("invalid-value") = b'
strings.from_hex
strings.from_hex(hex_string)
Descrizione
Restituisce i byte associati alla stringa esadecimale specificata.
Tipi di dati dei parametri
STRING
Tipo restituito
BYTES
Esempi di codice
Recupera i byte associati a una determinata stringa esadecimale.
Esempio 1
Questo esempio mostra le conversioni di caratteri non esadecimali.
strings.from_hex("str") // returns empty bytes
Esempio 2
Questo esempio mostra l'input con una stringa vuota.
strings.from_hex("") // returns empty bytes
Esempio 3
Questo esempio mostra la conversione di una stringa esadecimale.
strings.from_hex("1234") // returns 1234 bytes
Esempio 4
Questo esempio mostra la conversione di caratteri non ASCII.
strings.from_hex("筒纸.中国") // returns empty bytes
strings.ltrim
strings.ltrim(string_to_trim, cutset)
Descrizione
Taglia gli spazi bianchi iniziali da una determinata stringa. Questa funzione rimuove i caratteri iniziali presenti nel cutset.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
STRING
Esempi di codice
Di seguito sono riportati alcuni esempi di casi d'uso.
Esempio 1
Questo esempio utilizza lo stesso primo e secondo argomento.
strings.ltrim("str", "str") = ""
Esempio 2
Questo esempio utilizza una stringa vuota come secondo argomento.
strings.ltrim("str", "") = "str"
Esempio 3
Questo esempio utilizza una stringa vuota come primo argomento e una stringa come secondo argomento.
strings.ltrim("", "str") = ""
Esempio 4
Questo esempio utilizza stringhe contenenti spazi bianchi e una stringa come secondo argomento.
strings.ltrim("a aastraa aa ", " a") = "straa aa "
strings.reverse
strings.reverse(STRING)
Descrizione
Restituisce una stringa che è l'inverso della stringa di input.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
L'esempio seguente passa una stringa breve.
strings.reverse("str") = "rts" // The function returns 'rts'.
Esempio 2
L'esempio seguente passa una stringa vuota.
strings.reverse("") = ""
Esempio 3
L'esempio seguente passa un palindromo.
strings.reverse("tacocat") = "tacocat"
strings.rtrim
strings.rtrim(string_to_trim, cutset)
Descrizione
Taglia gli spazi vuoti finali da una determinata stringa. Rimuove i caratteri finali presenti nel cutset.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
STRING
Esempi di codice
Di seguito sono riportati alcuni esempi di casi d'uso.
Esempio 1
Il seguente esempio passa la stessa stringa come primo e secondo argomento.
strings.rtrim("str", "str") = ""
Esempio 2
L'esempio seguente passa una stringa vuota come secondo argomento.
strings.rtrim("str", "") = "str"
Esempio 3
L'esempio seguente passa una stringa vuota come primo argomento e una stringa non vuota come secondo argomento.
strings.rtrim("", "str") = ""
Esempio 4
Il seguente esempio passa una stringa contenente spazi vuoti come primo argomento e una stringa non vuota come secondo argomento.
strings.rtrim("a aastraa aa ", " a") = "a aasstr"
strings.split
strings.split(string, delimiter)
Descrizione
Divide il valore stringa utilizzando l'argomento delimitatore. Il delimitatore predefinito è una
virgola (,).
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
ARRAY_STRINGS
Esempi di codice
I seguenti esempi di codice illustrano alcuni dei modi in cui potresti utilizzare la funzione
strings.split.
Esempio: stringa divisa con valore predefinito
L'esempio seguente suddivide la stringa utilizzando il delimitatore predefinito, ovvero una virgola.
strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Esempio: stringa suddivisa con i due punti
Il seguente esempio suddivide la stringa in corrispondenza di ogni due punti (:).
strings.split("a:b:c:d", ":") = ["a", "b", "c", "d"]
Esempio: delimitatore mancante
Nell'esempio seguente manca il delimitatore nel valore della stringa.
strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Esempio: delimitatore vuoto
L'esempio seguente ha una stringa di delimitatore vuota.
strings.split("abc", "") = ["a", "b", "c"]
strings.to_lower
strings.to_lower(stringText)
Descrizione
Questa funzione accetta una stringa di input e restituisce una stringa dopo aver convertito tutti i caratteri in minuscolo.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
L'esempio seguente restituisce true.
"test@google.com" = strings.to_lower($e.network.email.to)
strings.to_upper
strings.to_upper(string_val)
Descrizione
Restituisce la stringa originale con tutti i caratteri alfabetici in maiuscolo.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
L'esempio seguente restituisce l'argomento fornito in maiuscolo.
strings.to_upper("example") = "EXAMPLE"
strings.trim
strings.trim(string_to_trim, cutset)
Descrizione
Taglia gli spazi vuoti iniziali e finali di una determinata stringa. Inoltre, rimuove i caratteri indesiderati (specificati dall'argomento cutset) dalla stringa di input.
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
STRING
Esempi di codice
Di seguito sono riportati alcuni esempi di casi d'uso.
Esempio 1
Nell'esempio seguente, la stessa stringa viene passata come stringa di input e cutset, il che genera una stringa vuota.
strings.trim("str", "str") // ""
Esempio 2
Nell'esempio seguente, una stringa vuota viene passata come cutset, il che comporta la restituzione della stringa originale str perché non sono stati specificati caratteri da rimuovere nel cutset.
strings.trim("str", "") = "str"
Esempio 3
Nell'esempio seguente, la funzione restituisce una stringa vuota perché la stringa di input è già vuota e non ci sono caratteri da rimuovere.
strings.trim("", "str") = ""
Esempio 4
Nell'esempio seguente, la funzione restituisce str perché la funzione trim rimuove quanto segue:
- spazio vuoto finale in "a aastraa aa "
- i caratteri specificati nel cutset (spazio, a)
strings.trim("a aastraa aa ", " a") = "str"
strings.url_decode
strings.url_decode(url_string)
Descrizione
Data una stringa URL, decodifica i caratteri di escape e gestisci i caratteri UTF-8 che sono stati codificati. Restituisce una stringa vuota se la decodifica non va a buon fine.
Tipi di dati dei parametri
STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Questo esempio mostra uno scenario di test positivo.
strings.url_decode("three%20nine%20four") = "three nine four"
Esempio 2
Questo esempio mostra un caso di stringa vuota.
strings.url_decode("") // ""
Esempio 3
Questo esempio mostra la gestione dei caratteri non alfabetici.
strings.url_decode("%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B") // "上海+中國"
Esempio 4
Questo esempio mostra una decodifica dell'URL di esempio.
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])
Descrizione
Questa funzione restituisce un numero intero che rappresenta il numero di secondi trascorsi da un'epoca Unix per la stringa del timestamp specificata.
timestampè una stringa che rappresenta un timestamp epoch valido. Il formato deve essere%F %T.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito èGMT. Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono le seguenti:- Il nome del database TZ, ad esempio
America/Los_Angeles. Per saperne di più, consulta l'elenco dei fusi orari del database TZ su Wikipedia. - L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
- Il nome del database TZ, ad esempio
Ecco alcuni esempi di specificatori time_zone validi, che puoi passare come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
STRING, STRING
Tipo restituito
INT
Esempi di codice
Esempio 1
Timestamp epoch valido
timestamp.as_unix_seconds("2024-02-22 10:43:00") = 1708598580
Esempio 2
Timestamp Unix valido con il fuso orario America/New_York
timestamp.as_unix_seconds("2024-02-22 10:43:00", "America/New_York") = 1708616580
timestamp.current_seconds
timestamp.current_seconds()
Descrizione
Restituisce un numero intero che rappresenta l'ora corrente in secondi Unix. Questo valore è
approssimativamente uguale al timestamp di rilevamento e si basa sul momento in cui viene eseguita la regola. Questa funzione è un sinonimo della funzione timestamp.now().
Tipi di dati dei parametri
NONE
Tipo restituito
INT
Esempi di codice
Esempio 1
L'esempio seguente restituisce true se il certificato è scaduto da più di 24 ore. Calcola la differenza di tempo sottraendo i secondi Unix
correnti e poi confrontando utilizzando un operatore maggiore di.
86400 < timestamp.current_seconds() - $e.network.tls.certificate.not_after
timestamp.get_date
timestamp.get_date(unix_seconds [, time_zone])
Descrizione
Questa funzione restituisce una stringa nel formato YYYY-MM-DD, che rappresenta il giorno in cui si trova un timestamp.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito è "GMT". Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono:- Il nome del database TZ, ad esempio "America/Los_Angeles". Per saperne di più, consulta la colonna "Nome database TZ" di questa pagina.
- L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
Di seguito sono riportati alcuni esempi di identificatori time_zone validi, che puoi trasmettere come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts) = "2024-02-19"
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire 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])
Descrizione
Questa funzione restituisce un numero intero compreso nell'intervallo [0, 59] che rappresenta il minuto.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito è "GMT". Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono:- Il nome del database TZ, ad esempio "America/Los_Angeles". Per saperne di più, consulta la colonna "Nome database TZ" di questa pagina.
- L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
Ecco alcuni esempi di specificatori time_zone validi, che puoi passare come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING
Tipo restituito
INT
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire 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])
Descrizione
Questa funzione restituisce un numero intero nell'intervallo [0, 23] che rappresenta l'ora.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito è "GMT". Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono:- Il nome del database TZ, ad esempio "America/Los_Angeles". Per saperne di più, consulta la colonna "Nome database TZ" di questa pagina.
- L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
Ecco alcuni esempi di specificatori time_zone validi, che puoi passare come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING
Tipo restituito
INT
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire 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])
Descrizione
Questa funzione restituisce un numero intero compreso nell'intervallo [1, 7] che rappresenta il giorno della
settimana a partire da domenica. Ad esempio, 1 = domenica e 2 = lunedì.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito è "GMT". Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono:- Il nome del database TZ, ad esempio "America/Los_Angeles". Per saperne di più, consulta la colonna "Nome database TZ" di questa pagina.
- L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
Di seguito sono riportati alcuni esempi di identificatori time_zone validi, che puoi trasmettere come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING
Tipo restituito
INT
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts) = 6
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire 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)
Descrizione
Questa funzione restituisce una stringa nel formato YYYY-MM-DD, che rappresenta il giorno in cui si trova un timestamp.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.timestamp_formatè facoltativo ed è una stringa che rappresenta il formato del timestamp. Se omesso, il valore predefinito è%F %T. Puoi specificare il formato utilizzando una stringa di formato data/ora o una delle seguenti granularità temporali:SECOND,MINUTE,HOUR,DATE,WEEK,MONTHoYEAR. Per ulteriori opzioni di formattazione, vedi Elementi di formato per le parti di data e ora.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito èGMT. Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono le seguenti:- Il nome del database del fuso orario IANA (TZ), ad esempio
America/Los_Angeles. Per ulteriori informazioni, consulta l'elenco dei fusi orari del database TZ su Wikipedia. - L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
- Il nome del database del fuso orario IANA (TZ), ad esempio
Ecco alcuni esempi di specificatori time_zone validi, che puoi passare come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING, STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è GMT.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts) = "2024-02-22 10:43:51"
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%F %T", "America/Los_Angeles") = "2024-02-22 10:43:51"
Esempio 3
Questo esempio utilizza un valore letterale stringa per definire timestamp_format.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%Y-%m", "GMT") = "2024-02"
Esempio 4
Questo esempio formatta un timestamp Unix come stringa con granularità di secondo.
timestamp.get_timestamp(1708598631, "SECOND", "GMT") = "2024-02-22 10:43:51"
Esempio 5
Questo esempio formatta un timestamp Unix come stringa con granularità al minuto.
timestamp.get_timestamp(1708598631, "MINUTE", "GMT") = "2024-02-22 10:43"
Esempio 6
Questo esempio formatta un timestamp Unix come stringa con granularità oraria.
timestamp.get_timestamp(1708598631, "HOUR", "GMT") = "2024-02-22 10"
Esempio 7
Questo esempio formatta un timestamp Unix come stringa con granularità giornaliera.
timestamp.get_timestamp(1708598631, "DATE", "GMT") = "2024-02-22"
Esempio 8
Questo esempio formatta un timestamp Unix come stringa con granularità settimanale.
timestamp.get_timestamp(1708598631, "WEEK", "GMT") = "2024-02-18"
Esempio 9
Questo esempio formatta un timestamp Unix come stringa con granularità mensile.
timestamp.get_timestamp(1708598631, "MONTH", "GMT") = "2024-02"
Esempio 10
Questo esempio formatta un timestamp Unix come stringa con granularità annuale.
timestamp.get_timestamp(1708598631, "YEAR", "GMT") = "2024"
timestamp.get_week
timestamp.get_week(unix_seconds [, time_zone])
Descrizione
Questa funzione restituisce un numero intero compreso nell'intervallo [0, 53] che rappresenta la settimana dell'anno. Le settimane iniziano di domenica. Le date antecedenti la prima domenica dell'anno rientrano nella settimana 0.
unix_secondsè un numero intero che rappresenta il numero di secondi trascorsi dall'epoca Unix, ad esempio$e.metadata.event_timestamp.seconds, o un segnaposto contenente questo valore.time_zoneè facoltativo ed è una stringa che rappresenta un fuso orario. Se omesso, il valore predefinito è "GMT". Puoi specificare i fusi orari utilizzando i valori letterali stringa. Le opzioni sono:- Il nome del database TZ, ad esempio "America/Los_Angeles". Per saperne di più, consulta la colonna "Nome database TZ" di questa pagina.
- L'offset del fuso orario rispetto all'UTC, nel formato
(+|-)H[H][:M[M]], ad esempio: "-08:00".
Ecco alcuni esempi di specificatori time_zone validi, che puoi passare come secondo argomento alle funzioni di estrazione dell'ora:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Tipi di dati dei parametri
INT, STRING
Tipo restituito
INT
Esempi di codice
Esempio 1
In questo esempio, l'argomento time_zone viene omesso, quindi il valore predefinito è "GMT".
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts) = 0
Esempio 2
Questo esempio utilizza un valore letterale stringa per definire time_zone.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts, "America/Los_Angeles") = 0
timestamp.now
timestamp.now()
Descrizione
Restituisce il numero di secondi a partire dal 1° gennaio 1970 00:00:00 UTC. Questo valore è noto anche come ora Unix.
Tipo restituito
INT
Esempi di codice
Esempio 1
L'esempio seguente restituisce un timestamp per il codice eseguito il 22 maggio 2024 alle ore 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])
Descrizione
Restituisce la media dei valori di input (che possono essere numeri interi o numeri in virgola mobile). Se imposti il secondo argomento facoltativo su true, i valori zero vengono ignorati.
Tipi di dati dei parametri
INT|FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio mostra la media intera.
// 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
Esempio 2
Questo esempio mostra la media mobile.
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
Esempio 3
Media input negativi
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
Esempio 4
0 resi 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
Esempio 5
Ignorare i valori pari a 0
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$size_mode = window.avg($e.file.size, true) // yields 394 if the event file size values in the match window are 0, 0, 0 and 394
window.first
window.first(values_to_sort_by, values_to_return)
Descrizione
Questa funzione di aggregazione restituisce un valore stringa derivato da un evento con il valore int correlato più basso nella finestra di corrispondenza. Un caso d'uso di esempio è l'ottenimento dell'ID utente dall'evento con il timestamp più basso nella finestra di corrispondenza (l'evento meno recente).
Tipi di dati dei parametri
INT, STRING
Tipo restituito
STRING
Esempi di codice
Ottieni un valore stringa derivato da un evento con il valore int correlato più basso nella finestra di corrispondenza.
// 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)
Descrizione
Questa funzione di aggregazione restituisce un valore stringa derivato da un evento con il valore int correlato più alto nella finestra di corrispondenza. Un caso d'uso di esempio è l'ottenimento dell'ID utente dall'evento con il timestamp più basso nella finestra di corrispondenza (timestamp più alto).
Tipi di dati dei parametri
INT, STRING
Tipo restituito
STRING
Esempi di codice
Ottieni un valore stringa derivato da un evento con il valore int più correlato nella finestra di corrispondenza.
// 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)
Descrizione
Restituisce la mediana dei valori di input. Se sono presenti due valori mediani, ne verrà scelto uno in modo non deterministico come valore restituito.
Tipi di dati dei parametri
INT|FLOAT, BOOL
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio restituisce la mediana quando i valori di input non sono zero.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 2 if the file sizes in the match window are [1, 2, 3]
condition:
$e
}
Esempio 2
Questo esempio restituisce la mediana quando l'input include alcuni valori zero che non devono essere ignorati.
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
}
Esempio 3
Questo esempio restituisce la mediana quando l'input include alcuni valori zero che devono essere ignorati.
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
}
Esempio 4
Questo esempio restituisce la mediana quando l'input include tutti i valori zero che devono essere ignorati.
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
}
Esempio 5
Questo esempio mostra che, quando ci sono più mediane, viene restituita solo una mediana.
rule median_file_size {
meta:
events:
$e.metadata.event_type = "FILE_COPY"
$userid = $e.principal.user.userid
match:
$userid over 1h
outcome:
$median_file_size = window.median($e.principal.file.size) // returns 1 if the file sizes in the match window are [1, 2, 3, 4]
condition:
$e
}
window.mode
window.mode(values)
Descrizione
Restituisce la moda dei valori di input. In caso di più valori di modalità possibili, solo uno di questi valori verrà scelto in modo non deterministico come valore restituito.
Tipi di dati dei parametri
INT|FLOAT|STRING
Tipo restituito
STRING
Esempi di codice
Esempio 1
Ottieni la modalità dei valori nella finestra di corrispondenza.
// 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)
Descrizione
Restituisce l'intervallo dei valori di input trovati (minimo e massimo inclusi). Ogni valore può essere un numero intero o in virgola mobile. Se imposti il secondo argomento facoltativo su true, i valori zero vengono ignorati.
Tipi di dati dei parametri
INT|FLOAT, BOOL
Tipo restituito
ARRAY_FLOATS
Esempi di codice
I seguenti esempi di codice illustrano alcuni dei modi in cui potresti utilizzare la funzione
window.range.
Esempio: numero intero minimo e massimo
Questo esempio mostra il valore intero minimo e massimo.
window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Esempio: virgola mobile minima e massima
Questo esempio mostra il valore minimo e massimo in virgola mobile.
window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Esempio: numero intero negativo minimo e massimo
Questo esempio mostra il valore intero negativo minimo e massimo.
window.range([-1.100000, 1.100000, 0.000000, 2.400000], false) = [-1.100000, 2.400000]
Esempio: valore 0 ignorato
Questo esempio mostra come i valori 0 vengono ignorati quando imposti il secondo parametro.
window.range([0, 0, 0, 394, 1], true) = [1.000000, 394.000000]
window.stddev
window.stddev(numeric_values)
Descrizione
Restituisce la deviazione standard dei valori di input in una finestra di corrispondenza.
Tipi di dati dei parametri
INT|FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio restituisce la deviazione standard degli interi in una finestra di corrispondenza.
// 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
Esempio 2
Questo esempio restituisce la deviazione standard dei valori float in una finestra di corrispondenza.
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
Esempio 3
Questo esempio restituisce la deviazione standard in una finestra di corrispondenza che contiene numeri negativi.
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
Esempio 4
Questo esempio restituisce una deviazione standard pari a zero quando tutti i valori nella finestra di corrispondenza sono uguali.
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
Esempio 5
Questo esempio restituisce la deviazione standard di una finestra di corrispondenza contenente numeri positivi e negativi.
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)
Descrizione
Questa funzione restituisce la varianza specificata dei valori di input.
Tipi di dati dei parametri
INT|FLOAT
Tipo restituito
FLOAT
Esempi di codice
Esempio 1
Questo esempio restituisce la varianza di tutti gli interi.
// 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
Esempio 2
Questo esempio restituisce la varianza di tutti i numeri in virgola mobile.
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
Esempio 3
Questo esempio restituisce la varianza dei numeri negativi.
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
Esempio 4
Questo esempio restituisce un piccolo valore di varianza.
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
Esempio 5
Questo esempio restituisce una varianza pari a zero.
events:
$e.user.userid = $userid
match:
$userid over 5m
outcome:
$p1 = window.variance($e.file.size) // yields 0.000000 if the event file size values in the match window are [1, 1, 1].
condition:
$e and #p1 > 10
Esempio 6
Questo esempio restituisce la varianza dei numeri positivi e negativi.
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
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.