Funktionen
In diesem Abschnitt werden die YARA-L 2.0-Funktionen beschrieben, die Sie in Regeln, Such- und Dashboardabfragen verwenden können.
Weitere Informationen finden Sie unter YARA-L 2.0-Funktionen für Dashboards und Statistiken und Aggregationen bei der Suche mit YARA-L 2.0.
Diese Funktionen können in den folgenden Teilen einer YARA-L-Abfrage verwendet werden:
- Abschnitt
events. BOOL_CLAUSEeiner Bedingung im Ergebnisbereich.
arrays.concat
arrays.concat(string_array, string_array)
Beschreibung
Gibt ein neues String-Array zurück, indem Elemente aus den ursprünglichen String-Arrays kopiert werden.
Parameterdatentypen
ARRAY_STRINGS, ARRAY_STRINGS
Rückgabetyp
ARRAY_STRINGS
Codebeispiele
Beispiel 1
Im folgenden Beispiel werden zwei verschiedene String-Arrays verkettet.
arrays.concat(["test1", "test2"], ["test3"]) = ["test1", "test2", "test3"]
Beispiel 2
Im folgenden Beispiel werden Arrays mit einem leeren String verkettet.
arrays.concat([""], [""]) = ["", ""]
Beispiel 3
Im folgenden Beispiel werden leere Arrays verkettet.
arrays.concat([], []) = []
arrays.index_to_float
arrays.index_to_float(array, index)
Beschreibung
Gibt das Element am angegebenen Index eines Arrays zurück. Das Element an diesem Index wird als Gleitkommazahl zurückgegeben.
Der Index ist ein ganzzahliger Wert, der die Position eines Elements im Array darstellt. Standardmäßig hat das erste Element eines Arrays den Index 0 und das letzte Element den Index n-1, wobei n die Größe des Arrays ist. Mit der negativen Indexierung kann auf Arrayelemente relativ zum Ende des Arrays zugegriffen werden. Ein Index von -1 verweist beispielsweise auf das letzte Element im Array und ein Index von -2 auf das vorletzte Element im Array.
Parameterdatentypen
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird ein Element am Index 1 aus einem Array von Gleitkommazahlen abgerufen.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 1) // 2.1
Beispiel 2
Im folgenden Beispiel wird ein Element am Index -1 aus einem Array von Gleitkommazahlen abgerufen.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 0-1) // 4.6
Beispiel 3
Im folgenden Beispiel wird ein Element für einen Index abgerufen, der größer als die Größe des Arrays ist.
arrays.index_to_float([1.2, 2.1, 3.5, 4.6], 6) // 0.0
Beispiel 4
Im folgenden Beispiel wird ein Element aus einem leeren Array abgerufen.
arrays.index_to_float([], 0) // 0.0
Beispiel 5
Im folgenden Beispiel wird ein Element am Index 1 aus einem String-Array abgerufen.
arrays.index_to_float(["1.2", "3.3", "2.4"], 1) // 3.3
Beispiel 6
Im folgenden Beispiel wird ein Element am Index 2 aus einem Array von Ganzzahlen abgerufen.
arrays.index_to_float([1, 3, 2], 2) // 2.0
arrays.index_to_int
arrays.index_to_int(array_of_inputs, index)
Beschreibung
Gibt den Wert an einem bestimmten Index in einem Array als Ganzzahl zurück.
Der Index ist ein ganzzahliger Wert, der die Position eines Elements im Array darstellt. Standardmäßig hat das erste Element eines Arrays den Index 0 und das letzte Element den Index n-1, wobei n die Größe des Arrays ist. Mit der negativen Indexierung kann auf Arrayelemente relativ zum Ende des Arrays zugegriffen werden. Ein Index von -1 verweist beispielsweise auf das letzte Element im Array und ein Index von -2 auf das vorletzte Element im Array.
Parameterdatentypen
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Rückgabetyp
INT
Codebeispiele
Beispiel 1
Dieser Funktionsaufruf gibt 0 zurück, wenn der Wert am Index ein nicht numerischer String ist.
arrays.index_to_int(["str0", "str1", "str2"], 1) = 0
Beispiel 2
Diese Funktion gibt das Element am Index -1 zurück.
arrays.index_to_int(["44", "11", "22", "33"], 0-1) = 33
Beispiel 3
Gibt 0 für das Element außerhalb des gültigen Bereichs zurück.
arrays.index_to_int(["44", "11", "22", "33"], 5) = 0
Beispiel 4
Diese Funktion ruft das Element aus dem Gleitkomma-Array am Index 1 ab.
arrays.index_to_int([1.100000, 1.200000, 1.300000], 1) = 1
Beispiel 5
Diese Funktion ruft das Element aus dem int-Array am Index 0 ab.
arrays.index_to_int([1, 2, 3], 0) = 1
arrays.index_to_str
arrays.index_to_str(array, index)
Beschreibung
Gibt das Element am angegebenen Index aus dem Array als String zurück. Der Index ist ein ganzzahliger Wert, der die Position eines Elements im Array darstellt. Standardmäßig hat das erste Element eines Arrays den Index 0 und das letzte Element den Index n-1, wobei n die Größe des Arrays ist. Mit der negativen Indexierung kann auf Arrayelemente vom Ende des Arrays aus zugegriffen werden. Ein Index von -1 verweist beispielsweise auf das letzte Element im Array und ein Index von -2 auf das vorletzte Element im Array.
Parameterdatentypen
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS, INT
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird ein Element am Index 1 aus einem Array von Strings abgerufen.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 1) // "test2"
Beispiel 2
Im folgenden Beispiel wird ein Element am Index -1 (letztes Element des Arrays) aus einem Array von Strings abgerufen.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 0-1) // "test4"
Beispiel 3
Im folgenden Beispiel wird ein Element für einen Index abgerufen, der größer als die Größe des Arrays ist. In diesem Fall wird ein leerer String zurückgegeben.
arrays.index_to_str(["test1", "test2", "test3", "test4"], 6) // ""
Beispiel 4
Im folgenden Beispiel wird ein Element aus einem leeren Array abgerufen.
arrays.index_to_str([], 0) // ""
Beispiel 5
Im folgenden Beispiel wird ein Element am Index 0 aus einem Array von Gleitkommazahlen abgerufen. Die Ausgabe wird als String zurückgegeben.
arrays.index_to_str([1.200000, 3.300000, 2.400000], 0) // "1.2"
Beispiel 6
Im folgenden Beispiel wird ein Element am Index 2 aus einem Array von Ganzzahlen abgerufen. Die Ausgabe erfolgt in Form eines Strings.
arrays.index_to_str([1, 3, 2], 2) // "2"
arrays.join_string
arrays.join_string(array_of_strings, optional_delimiter)
Beschreibung
Konvertiert ein Array von Strings in einen einzelnen String, der durch den optionalen Parameter getrennt ist. Wenn kein Trennzeichen angegeben ist, wird der leere String verwendet.
Parameterdatentypen
ARRAY_STRINGS, STRING
Rückgabetyp
STRING
Codebeispiele
Hier einige Beispiele für die Verwendung der Funktion:
Beispiel 1
In diesem Beispiel wird ein Array mit Nicht-Null-Elementen und einem Trennzeichen zusammengeführt.
arrays.join_string(["foo", "bar"], ",") = "foo,bar"
Beispiel 2
In diesem Beispiel wird ein Array mit einem Null-Element und einem Trennzeichen zusammengeführt.
arrays.join_string(["foo", NULL, "bar"], ",") = "foo,bar"
Beispiel 3
In diesem Beispiel wird ein Array mit nicht leeren Elementen ohne Trennzeichen zusammengeführt.
arrays.join_string(["foo", "bar"]) = "foobar"
arrays.length
arrays.length(repeatedField)
Beschreibung
Gibt die Anzahl der Elemente des wiederholten Felds zurück.
Parameterdatentypen
LIST
Rückgabetyp
NUMBER
Codebeispiele
Beispiel 1
Gibt die Anzahl der Elemente des wiederholten Felds zurück.
arrays.length($e.principal.ip) = 2
Beispiel 2
Wenn sich mehrere wiederholte Felder auf dem Pfad befinden, wird die Gesamtzahl der Elemente des wiederholten Felds zurückgegeben.
arrays.length($e.intermediary.ip) = 3
arrays.max
arrays.max(array_of_ints_or_floats)
Beschreibung
Gibt das größte Element in einem Array oder null zurück, wenn das Array leer ist.
Parameterdatentypen
ARRAY_INTS|ARRAY_FLOATS
Rückgabetyp
FLOAT
Codebeispiele
Hier einige Beispiele für die Verwendung der Funktion:
Beispiel 1
In diesem Beispiel wird das größere Element in einem Array von Ganzzahlen zurückgegeben.
arrays.max([10, 20]) = 20.000000
Beispiel 2
In diesem Beispiel wird das größere Element in einem Array von Gleitkommazahlen zurückgegeben.
arrays.max([10.000000, 20.000000]) = 20.000000
arrays.min
arrays.min(array_of_ints_or_floats[, ignore_zeros=false])
Beschreibung
Gibt das kleinste Element in einem Array oder null zurück, wenn das Array leer ist. Wenn das zweite optionale Argument auf „true“ gesetzt ist, werden Elemente, die gleich null sind, ignoriert.
Parameterdatentypen
ARRAY_INTS|ARRAY_FLOATS, BOOL
Rückgabetyp
FLOAT
Codebeispiele
Hier einige Beispiele für die Verwendung der Funktion:
Beispiel 1
In diesem Beispiel wird das kleinste Element in einem Array von Ganzzahlen zurückgegeben.
arrays.min([10, 20]) = 10.000000
Beispiel 2
In diesem Beispiel wird das kleinste Element in einem Array von Gleitkommazahlen zurückgegeben.
arrays.min([10.000000, 20.000000]) = 10.000000
Beispiel 3
In diesem Beispiel wird das kleinste Element in einem Array von Gleitkommazahlen zurückgegeben, wobei die Nullen ignoriert werden.
arrays.min([10.000000, 20.000000, 0.0], true) = 10.000000
arrays.size
arrays.size( array )
Beschreibung
Gibt die Größe des Arrays zurück. Gibt 0 für ein leeres Array zurück.
Parameterdatentypen
ARRAY_STRINGS|ARRAY_INTS|ARRAY_FLOATS
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird ein String-Array mit zwei Elementen verwendet.
arrays.size(["test1", "test2"]) = 2
Beispiel 2
In diesem Beispiel wird ein int-Array mit drei Elementen verwendet.
arrays.size([1, 2, 3]) = 3
Beispiel 3
In diesem Beispiel wird ein Float-Array mit einem Element verwendet.
arrays.size([1.200000]) = 1
Beispiel 4
In diesem Beispiel wird ein leeres Array verwendet.
arrays.size([]) = 0
bytes.to_base64
bytes.to_base64(bytes, optional_default_string)
Beschreibung
Die Funktion konvertiert einen bytes-Wert in einen base64 encoded string-Wert. Funktionsaufrufe mit Werten, die nicht umgewandelt werden können, geben standardmäßig einen leeren String zurück.
Parameterdatentypen
BYTES, STRING
Rückgabetyp
STRING
Codebeispiele
Rohe binäre Bytes in einen base64-codierten String umwandeln
Die Funktion konvertiert die binären Rohbytes in einen base64-codierten String.
bytes.to_base64(b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000) = "AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA="
Fehler bei der Umwandlung (Standardwert ist der optional angegebene String)
Die Funktion verwendet standardmäßig "invalid bytes", wenn der angegebene Byte-Wert ungültig ist.
bytes.to_base64(b'000000006f8ec5586d", "invalid bytes") = "invalid bytes"
cast.as_bool
cast.as_bool(string_or_int)
Beschreibung
Die Funktion konvertiert einen Integer- oder Stringwert in einen booleschen Wert. Funktionsaufrufe mit Werten, die nicht umgewandelt werden können, geben FALSE zurück. Gibt nur für die Ganzzahl 1 und den String „true“ (unabhängig von der Groß-/Kleinschreibung) TRUE zurück.
Parameterdatentypen
INT|STRING
Rückgabetyp
BOOL
Codebeispiele
Beispiel 1
In diesem Beispiel wird gezeigt, wie ein nicht boolescher String umgewandelt wird.
cast.as_bool("123") = false
Beispiel 2
Wahrer Integer (1)
cast.as_bool(1) = true
Beispiel 3
Truthy-String
cast.as_bool("true") = true
Beispiel 4
Wahrheitswertiger String in Großbuchstaben
cast.as_bool("TRUE") = true
Beispiel 5
Negative Ganzzahl
cast.as_bool(0-1) = false
Beispiel 6
Falsche Ganzzahl (0)
cast.as_bool(0) = false
Beispiel 7
Leerer String
cast.as_bool("") = false
cast.as_float
cast.as_float(string_to_cast)
Beschreibung
Konvertiert einen numerischen String in eine Gleitkommazahl. Bei Funktionsaufrufen mit Werten, die nicht umgewandelt werden können, wird 0 zurückgegeben. Gleitkommazahlen behalten die Genauigkeit bis zu 7 Dezimalstellen bei.
Parameterdatentypen
STRING
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
Wenn Sie einen nicht numerischen String umwandeln, wird 0 zurückgegeben.
cast.as_float("str") = 0.0000000
Beispiel 2
Wenn Sie einen leeren String umwandeln, wird 0 zurückgegeben.
cast.as_float("") = 0.0000000
Beispiel 3
Beim Umwandeln eines gültigen numerischen Strings wird ein Gleitkommawert zurückgegeben.
cast.as_float("1.012345678") = 1.0123456
cast.as_string
cast.as_string(int_or_bytes_or_bool, optional_default_string)
Beschreibung
Die Funktion cast.as_string wandelt einen INT-, BYTES- oder BOOL-Wert in seine Stringdarstellung um. Sie können ein optionales default_string-Argument angeben, um Fälle zu verarbeiten, in denen die Übertragung fehlschlägt. Wenn Sie das Argument default_string weglassen oder die Eingabe eine ungültige UTF-8- oder BASE64-Bytefolge ist, gibt die Funktion einen leeren String zurück.
Parameterdatentypen
INT|BYTES|BOOL, STRING
Rückgabetyp
STRING
Codebeispiele
Ganzzahl zu String konvertieren
Die Funktion konvertiert die Ganzzahl 123 in den String "123".
cast.as_string(123) = "123"
Float- in Stringkonvertierung
Die Funktion konvertiert die Gleitkommazahl 2.25 in den String "2.25".
cast.as_string(2.25) = "2.25"
Konvertierung von Byte in String
Die Funktion konvertiert den binären Rohwert b'01 in den String "\x01".
cast.as_string(b'01, "") = "\x01"
Boolesche Werte in Strings umwandeln
Die Funktion konvertiert den booleschen Wert true in den String "true".
cast.as_string(true, "") = "true"
Fehler bei der Umwandlung (Standardwert ist der optional angegebene String)
Wenn der angegebene Wert ungültig ist, wird standardmäßig der String "casting error" verwendet.
cast.as_string(9223372036854775808, "casting error") = "casting error"
Fingerprint
hash.fingerprint2011(byteOrString)
Beschreibung
Diese Funktion berechnet den fingerprint2011-Hash einer Eingabebytefolge oder eines Eingabestrings. Diese Funktion gibt einen vorzeichenlosen INT-Wert im Bereich [2, 0xFFFFFFFFFFFFFFFF] zurück.
Parameterdatentypen
BTYE, STRING
Rückgabetyp
INT
Codebeispiel
id_fingerprint = hash.fingerprint2011("user123")
Gruppe
group(field1, field2, field3, ...)
Beschreibung
Fassen Sie Felder eines ähnlichen Typs in einer Platzhaltervariablen zusammen.
Bei der UDM-Suche werden gruppierte Felder verwendet, um in mehreren Feldern eines ähnlichen Typs zu suchen. Die Gruppenfunktion ähnelt gruppierten Feldern. Sie können jedoch auswählen, welche Felder gruppiert werden sollen, um eine Erkennung auszulösen. Mit der Gruppenfunktion können Sie Informationen zu einer bestimmten Einheit (z. B. einem Hostnamen, einer IP-Adresse oder einer Nutzer-ID) für verschiedene Substantivtypen abrufen.
Codebeispiele
Beispiel 1
Fassen Sie alle IP-Adressen zusammen und geben Sie eine absteigende Anzahl der häufigsten IP-Adressen im gescannten Zeitraum an.
$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)
Beschreibung
Gibt einen SHA-256-Hash des Eingabestrings zurück.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
In diesem Beispiel wird der SHA-256-Hash angezeigt, wenn die Eingabe ein gültiger String ist.
hash.sha256("str") = "8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a"
Beispiel 2
In diesem Beispiel wird der SHA-256-Hash angezeigt, wenn die Eingabe ein leerer String ist.
hash.sha256("") = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
math.abs
math.abs(numericExpression)
Beschreibung
Gibt den Absolutwert eines Ganzzahl- oder Gleitkommaausdrucks zurück.
Parameterdatentypen
NUMBER
Rückgabetyp
NUMBER
Codebeispiele
Beispiel 1
In diesem Beispiel wird „True“ zurückgegeben, wenn das Ereignis mehr als 5 Minuten vom angegebenen Zeitpunkt (in Sekunden seit der Unix-Epoche) entfernt war, unabhängig davon, ob das Ereignis vor oder nach dem angegebenen Zeitpunkt stattgefunden hat. Ein Aufruf von math.abs darf nicht von mehreren Variablen oder Platzhaltern abhängen. Sie können beispielsweise den fest codierten Zeitwert 1643687343 im folgenden Beispiel nicht durch $e2.metadata.event_timestamp.seconds ersetzen.
300 < math.abs($e1.metadata.event_timestamp.seconds - 1643687343)
math.ceil
math.ceil(number)
Beschreibung
Gibt die kleinste Ganzzahl zurück, die nicht kleiner als die angegebene Zahl ist (Aufrunden). Gibt 0 zurück, wenn die Eingabe NULL oder zu groß für einen int64-Wert ist.
Parameterdatentypen
FLOAT
Rückgabetyp
INT
Codebeispiele
In diesem Abschnitt finden Sie Beispiele für die Verwendung von math.ceil.
Beispiel 1
In diesem Beispiel wird die kleinste Ganzzahl zurückgegeben, die größer oder gleich einer ganzen Zahl ist.
math.ceil(2.000000) = 2
Beispiel 2
In diesem Beispiel wird die kleinste ganze Zahl zurückgegeben, die größer oder gleich einer negativen Zahl ist.
math.ceil(0-1.200000) = -1
Beispiel 3
In diesem Beispiel wird 0 als Obergrenze einer Zahl zurückgegeben, die zu groß für eine 64-Bit-Ganzzahl ist.
math.ceil(184467440737095516160.0) = 0
math.floor
math.floor(float_val)
Beschreibung
Gibt den größten Ganzzahlwert zurück, der nicht größer als der angegebene Wert ist (Abrunden). Gibt 0 zurück, wenn die Eingabe null oder zu groß für einen int64-Wert ist.
Parameterdatentypen
FLOAT
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird ein Fall mit einer positiven Zahl gezeigt.
math.floor(1.234568) = 1
Beispiel 2
In diesem Beispiel wird ein Fall mit einer negativen Zahl gezeigt.
math.floor(0-1.234568) = -2
Beispiel 3
Dieses Beispiel zeigt einen Fall mit dem Wert „0“.
math.floor(0.000000) = 0
math.geo_distance
math.geo_distance(longitude1, latitude1, longitude2, latitude2))
Beschreibung
Gibt die Entfernung zwischen zwei geografischen Standorten (Koordinaten) in Metern zurück. Gibt -1 zurück, wenn die Koordinaten ungültig sind.
Parameterdatentypen
FLOAT, FLOAT, FLOAT, FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird die Entfernung zurückgegeben, wenn alle Parameter gültige Koordinaten sind:
math.geo_distance(-122.020287, 37.407574, -122.021810, 37.407574) = 134.564318
Beispiel 2
Im folgenden Beispiel wird die Entfernung zurückgegeben, wenn einer der Parameter eine gekürzte Koordinate ist:
math.geo_distance(-122.000000, 37.407574, -122.021810, 37.407574) = 1926.421905
Beispiel 3
Im folgenden Beispiel wird -1 zurückgegeben, wenn einer der Parameter eine ungültige Koordinate ist:
math.geo_distance(0-122.897680, 37.407574, 0-122.021810, 97.407574) = -1.000000
Beispiel 4
Im folgenden Beispiel wird 0 zurückgegeben, wenn die Koordinaten identisch sind:
math.geo_distance(-122.897680, 37.407574, -122.897680, 37.407574) = 0.000000
math.is_increasing
math.is_increasing(num1, num2, num3)
Beschreibung
Akzeptiert eine Liste numerischer Werte (Ganzzahlen oder Gleitkommazahlen) und gibt True zurück, wenn die Werte in aufsteigender Reihenfolge sind, andernfalls False.
Parameterdatentypen
INT|FLOAT, INT|FLOAT, INT|FLOAT
Rückgabetyp
BOOL
Codebeispiele
Beispiel 1
Dieses Beispiel enthält zeitstempelähnliche Werte in Sekunden.
math.is_increasing(1716769112, 1716769113, 1716769114) = true
Beispiel 2
Dieses Beispiel enthält einen negativen Double-Wert, einen INT64-Wert von null und einen positiven INT64-Wert.
math.is_increasing(-1.200000, 0, 3) = true
Beispiel 3
Dieses Beispiel enthält einen negativen Double-Wert, einen INT64-Wert von null und einen negativen INT64-Wert.
math.is_increasing(0-1.200000, 0, 0-3) = false
Beispiel 4
Dieses Beispiel enthält zwei negative Gleitkommazahlen und einen INT64-Wert von null.
math.is_increasing(0-1.200000, 0-1.50000, 0) = false
Beispiel 5
Dieses Beispiel enthält einen negativen Double-Wert und zwei Werte, die identisch sind.
math.is_increasing(0-1.200000, 0, 0) = false
math.log
math.log(numericExpression)
Beschreibung
Gibt den natürlichen Logarithmus eines Ganzzahl- oder Gleitkommaausdrucks zurück.
Parameterdatentypen
NUMBER
Rückgabetyp
NUMBER
Codebeispiele
Beispiel 1
math.log($e1.network.sent_bytes) > 20
math.pow
math.pow(base, exponent)
Beschreibung
Gibt den Wert des ersten Arguments zurück, potenziert mit dem zweiten Argument. Gibt bei einem Überlauf 0 zurück.
Parameterdatentypen
Basis: INT|FLOAT
Exponent: INT|FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird ein Ganzzahlfall gezeigt.
math.pow(2, 2) // 4.00
Beispiel 2
In diesem Beispiel wird ein Bruch-Basisfall gezeigt.
math.pow(2.200000, 3) // 10.648
Beispiel 3
In diesem Beispiel wird ein Fall mit Bruchbasis und Potenz gezeigt.
math.pow(2.200000, 1.200000) // 2.575771
Beispiel 4
In diesem Beispiel wird ein negativer Potenzfall dargestellt.
math.pow(3, 0-3) // 0.037037
Beispiel 5
In diesem Beispiel wird ein Fall mit einem Bruch als Exponenten gezeigt.
math.pow(3, 0-1.200000) // 0.267581
Beispiel 6
In diesem Beispiel wird ein negativer Basiswert gezeigt.
math.pow(0-3, 0-3) // -0.037037
Beispiel 7
In diesem Beispiel wird ein Fall mit null Basiswerten gezeigt.
math.pow(0, 3) // 0
Beispiel 8
In diesem Beispiel wird ein Fall mit null Leistung gezeigt.
math.pow(9223372036854775807, 0) // 1
Beispiel 9
In diesem Beispiel wird ein großer Basisfall dargestellt.
math.pow(9223372036854775807, 1.200000) // 57262152889751593549824
math.random
math.random()
Beschreibung
Erzeugt einen Pseudozufallswert vom Typ DOUBLE im Bereich von [0, 1), einschließlich 0 und exklusiv 1.
Rückgabetyp
FLOAT
Codebeispiele
Im folgenden Beispiel wird geprüft, ob der Zufallswert im Bereich [0, 1) liegt.
none
if(math.random() >= 0 and math.random() < 1) = true
math.round
math.round(numericExpression, decimalPlaces)
Beschreibung
Gibt einen Wert zurück, der auf die nächste Ganzzahl oder auf die angegebene Anzahl von Dezimalstellen gerundet wurde.
Parameterdatentypen
NUMBER
Rückgabetyp
NUMBER
Codebeispiele
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)
Beschreibung
Gibt die Quadratwurzel der angegebenen Zahl zurück. Gibt bei negativen Zahlen 0 zurück.
Parameterdatentypen
INT|FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird die Quadratwurzel eines int-Arguments zurückgegeben.
math.sqrt(3) = 1.732051
Beispiel 2
In diesem Beispiel wird die Quadratwurzel eines negativen int-Arguments zurückgegeben.
math.sqrt(-3) = 0.000000
Beispiel 3
In diesem Beispiel wird die Quadratwurzel des Arguments „Null“ zurückgegeben.
math.sqrt(0) = 0.000000
Beispiel 4
In diesem Beispiel wird die Quadratwurzel eines Gleitkommaarguments zurückgegeben.
math.sqrt(9.223372) = 3.037000
Beispiel 5
In diesem Beispiel wird die Quadratwurzel eines negativen Gleitkommaarguments zurückgegeben.
math.sqrt(0-1.200000) = 0.000000
Messwerte
Mit Messwertfunktionen lassen sich große Mengen an Verlaufsdaten aggregieren. Sie können dies in Ihrer Regel verwenden, indem Sie metrics.functionName() im Abschnitt „Ergebnis“ angeben.
Weitere Informationen finden Sie unter YARA-L-Messwerte.
net.ip_in_range_cidr
net.ip_in_range_cidr(ipAddress, subnetworkRange)
Beschreibung
Gibt true zurück, wenn sich die angegebene IP-Adresse im angegebenen Subnetz befindet.
Mit YARA-L können Sie mit der Anweisung net.ip_in_range_cidr() nach UDM-Ereignissen für alle IP-Adressen in einem Subnetzwerk suchen.
Sowohl IPv4 als auch IPv6 werden unterstützt.
Wenn Sie in einem Bereich von IP-Adressen suchen möchten, geben Sie ein IP-UDM-Feld und einen CIDR-Bereich an. YARA-L kann sowohl einzelne als auch sich wiederholende IP-Adressfelder verarbeiten.
Wenn Sie in einem Bereich von IP-Adressen suchen möchten, geben Sie ein ip-UDM-Feld und einen CIDR-Bereich (Classless Inter-Domain Routing) an. YARA-L kann sowohl einzelne als auch sich wiederholende IP-Adressfelder verarbeiten.
Parameterdatentypen
STRING, STRING
Rückgabetyp
BOOL
Codebeispiele
Beispiel 1
IPv4-Beispiel:
net.ip_in_range_cidr($e.principal.ip, "192.0.2.0/24")
Beispiel 2
IPv6-Beispiel:
net.ip_in_range_cidr($e.network.dhcp.yiaddr, "2001:db8::/32")
Ein Beispiel für eine Regel mit der net.ip_in_range_cidr()-Anweisung finden Sie unter Einzelnes Ereignis innerhalb eines IP-Adressbereichs.
re.regex
Sie können den Abgleich regulärer Ausdrücke in YARA-L 2.0 mit einer der folgenden Syntax definieren:
YARA-L-Syntax verwenden – bezieht sich auf Ereignisse. Das ist eine allgemeine Darstellung dieser Syntax:
$e.field = /regex/Verwendung der YARA-L-Syntax – als Funktion mit den folgenden Parametern:
- Das Feld, auf das der reguläre Ausdruck angewendet wird.
- Regulärer Ausdruck als String.
Das ist eine allgemeine Darstellung dieser Syntax:
re.regex($e.field, `regex`)
Beschreibung
Diese Funktion gibt true zurück, wenn der String einen Teilstring enthält, der mit dem angegebenen regulären Ausdruck übereinstimmt. Es ist nicht erforderlich, .* am Anfang oder am Ende des regulären Ausdrucks hinzuzufügen.
Hinweise
- Wenn Sie nach dem genauen String oder nur nach einem Präfix oder Suffix suchen möchten, fügen Sie die Ankerzeichen
^(Beginn) und$(Ende) in den regulären Ausdruck ein./^full$/stimmt beispielsweise genau mit"full"überein, während/full/mit"fullest","lawfull"und"joyfully"übereinstimmen kann. - Wenn das UDM-Feld Zeilenumbruchzeichen enthält, entspricht
regexpnur der ersten Zeile des UDM-Felds. Wenn Sie erzwingen möchten, dass das gesamte UDM-Feld übereinstimmt, fügen Sie dem regulären Ausdruck ein(?s)hinzu. Ersetzen Sie beispielsweise/.*allUDM.*/durch/(?s).*allUDM.*/. - Sie können den Modifikator
nocasenach Strings verwenden, um anzugeben, dass bei der Suche die Groß-/Kleinschreibung ignoriert werden soll.
Parameterdatentypen
STRING, STRING
Parameterausdruckstypen
ANY, ANY
Rückgabetyp
BOOL
Codebeispiele
Beispiel 1
// Equivalent to $e.principal.hostname = /google/
re.regex($e.principal.hostname, "google")
re.capture
re.capture(stringText, regex)
Beschreibung
Erfasst (extrahiert) Daten aus einem String mithilfe des im Argument angegebenen Musters für reguläre Ausdrücke.
Diese Funktion akzeptiert zwei Argumente:
stringText: Der ursprüngliche String, in dem gesucht werden soll.regex: Der reguläre Ausdruck, der das Suchmuster angibt.
Der reguläre Ausdruck kann 0 oder 1 Erfassungsgruppen in Klammern enthalten. Wenn der reguläre Ausdruck keine Erfassungsgruppen enthält, gibt die Funktion den ersten gesamten übereinstimmenden Teilstring zurück. Wenn der reguläre Ausdruck eine Erfassungsgruppe enthält, wird der erste übereinstimmende Teilstring für die Erfassungsgruppe zurückgegeben. Wenn Sie zwei oder mehr Erfassungsgruppen definieren, wird ein Compilerfehler zurückgegeben.
Parameterdatentypen
STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Wenn $e.principal.hostname in diesem Beispiel „aaa1bbaa2“ enthält, ist Folgendes wahr, da die Funktion die erste Instanz zurückgibt. Dieses Beispiel enthält keine Erfassungsgruppen.
"aaa1" = re.capture($e.principal.hostname, "a+[1-9]")
Beispiel 2
In diesem Beispiel wird alles nach dem @-Symbol in einer E‑Mail erfasst. Wenn das Feld $e.network.email.from test@google.com ist, wird im Beispiel google.com zurückgegeben. Das folgende Beispiel enthält eine Erfassungsgruppe.
"google.com" = re.capture($e.network.email.from , "@(.*)")
Beispiel 3
Wenn der reguläre Ausdruck mit keinem Teilstring im Text übereinstimmt, gibt die Funktion einen leeren String zurück. Sie können Ereignisse ohne Übereinstimmung auslassen, indem Sie den leeren String ausschließen. Das ist besonders wichtig, wenn Sie re.capture() mit einer Ungleichung verwenden:
// 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)
Beschreibung
Führt einen regulären Ausdrucksersatz durch.
Diese Funktion akzeptiert drei Argumente:
stringText: Der Originalstring.replaceRegex: Der reguläre Ausdruck, der das Suchmuster angibt.replacementText: Der Text, der in jede Übereinstimmung eingefügt werden soll.
Gibt einen neuen String zurück, der aus dem ursprünglichen stringText abgeleitet wird. Dabei werden alle Teilstrings, die mit dem Muster in replaceRegex übereinstimmen, durch den Wert in replacementText ersetzt. Sie können innerhalb von replacementText Escape-Ziffern mit Backslash (\1 bis \9) verwenden, um Text einzufügen, der mit der entsprechenden Klammergruppe im replaceRegex-Muster übereinstimmt. Mit \0 können Sie auf den gesamten übereinstimmenden Text verweisen.
Die Funktion ersetzt nicht überlappende Übereinstimmungen und priorisiert das Ersetzen des ersten gefundenen Vorkommens. Beispiel: re.replace("banana", "ana", "111") gibt den String „b111na“ zurück.
Parameterdatentypen
STRING, STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
In diesem Beispiel wird alles nach dem Symbol @ in einer E-Mail erfasst, com durch org ersetzt und das Ergebnis zurückgegeben. Beachten Sie die Verwendung verschachtelter Funktionen.
"email@google.org" = re.replace($e.network.email.from, "com", "org")
Beispiel 2
In diesem Beispiel werden Escape-Ziffern mit Backslash im replacementText-Argument verwendet, um auf Übereinstimmungen mit dem replaceRegex-Muster zu verweisen.
"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"
)
Beispiel 3
Beachten Sie die folgenden Fälle, wenn Sie mit leeren Strings und re.replace() arbeiten:
Leeren String als replaceRegex verwenden:
// 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")
Wenn Sie einen leeren String ersetzen möchten, können Sie "^$" als replaceRegex verwenden:
// 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)
Beschreibung
Mit dieser Funktion wird anhand einer deterministischen Stichprobenerhebung entschieden, ob ein Ereignis berücksichtigt werden soll. Diese Funktion gibt Folgendes zurück:
truefür einen Bruchteil der Eingabewerte, der (rateNumerator/rateDenominator) entspricht. Dies gibt an, dass das Ereignis in die Stichprobe aufgenommen werden soll.falsegibt an, dass das Ereignis nicht in die Stichprobe aufgenommen werden soll.
Diese Funktion ist nützlich für Optimierungsszenarien, in denen Sie nur eine Teilmenge von Ereignissen verarbeiten möchten. Entspricht:
hash.fingerprint2011(byteOrString) % rateDenominator < rateNumerator
Parameterdatentypen
- byteOrString: Ausdruck, der entweder als
BYTEoderSTRINGausgewertet wird. - rateNumerator: 'INT'
- rateDenominator: 'INT'
Rückgabetyp
BOOL
Codebeispiel
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)
Beschreibung
Gibt einen String mit der base64-decodierten Version des codierten Strings zurück.
Diese Funktion akzeptiert einen base64-codierten String als Argument. Wenn encodedString kein gültiger base64-codierter String ist, gibt die Funktion encodedString unverändert zurück.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
"test" = strings.base64_decode($e.principal.domain.name)
strings.coalesce
strings.coalesce(a, b, c, ...)
Beschreibung
Diese Funktion akzeptiert eine unbegrenzte Anzahl von Argumenten und gibt den Wert des ersten Ausdrucks zurück, der nicht zu einem leeren String ausgewertet wird (z. B. „non-zero value“). Wenn alle Argumente als leerer String ausgewertet werden, gibt der Funktionsaufruf einen leeren String zurück.
Die Argumente können Literale, Ereignisfelder oder Funktionsaufrufe sein. Alle Argumente müssen vom Typ STRING sein. Wenn Argumente Ereignisfelder sind, müssen die Attribute aus demselben Ereignis stammen.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Im folgenden Beispiel werden Stringvariablen als Argumente verwendet. Die Bedingung wird als „true“ ausgewertet, wenn (1) $e.network.email.from gleich suspicious@gmail.com ist oder (2) $e.network.email.from leer ist und $e.network.email.to gleich suspicious@gmail.com ist.
"suspicious@gmail.com" = strings.coalesce($e.network.email.from, $e.network.email.to)
Beispiel 2
Im folgenden Beispiel wird die Funktion coalesce mit mehr als zwei Argumenten aufgerufen. Bei dieser Bedingung wird die erste IP-Adresse ungleich null aus dem Ereignis $e mit den Werten in der Referenzliste ip_watchlist verglichen. Die Reihenfolge, in der die Argumente in diesem Aufruf zusammengeführt werden, entspricht der Reihenfolge, in der sie in der Regelbedingung aufgeführt sind:
$e.principal.ipwird zuerst ausgewertet.- Als Nächstes wird
$e.src.ipausgewertet. - Als Nächstes wird
$e.target.ipausgewertet. - Schließlich wird der String „No IP“ als Standardwert zurückgegeben, wenn die vorherigen
ip-Felder nicht festgelegt sind.
strings.coalesce($e.principal.ip, $e.src.ip, $e.target.ip, "No IP") in %ip_watchlist
Beispiel 3
Im folgenden Beispiel wird versucht, principal.hostname aus Ereignis $e1 und Ereignis $e2 zusammenzuführen. Es wird ein Compilerfehler zurückgegeben, da die Argumente unterschiedliche Ereignisvariablen sind.
// returns a compiler error
"test" = strings.coalesce($e1.principal.hostname, $e2.principal.hostname)
strings.concat
strings.concat(a, b, c, ...)
Beschreibung
Gibt die Verkettung einer unbegrenzten Anzahl von Elementen zurück, die jeweils ein String, eine Ganzzahl oder eine Gleitkommazahl sein können.
Wenn Argumente Ereignisfelder sind, müssen die Attribute aus demselben Ereignis stammen.
Parameterdatentypen
STRING, FLOAT, INT
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Das folgende Beispiel enthält eine String-Variable und eine Integer-Variable als Argumente. Sowohl principal.hostname als auch principal.port stammen aus demselben Ereignis, $e, und werden verkettet, um einen String zurückzugeben.
"google:80" = strings.concat($e.principal.hostname, ":", $e.principal.port)
Beispiel 2
Im folgenden Beispiel werden eine Stringvariable und ein Stringliteral als Argumente verwendet.
"google-test" = strings.concat($e.principal.hostname, "-test") // Matches the event when $e.principal.hostname = "google"
Beispiel 3
Im folgenden Beispiel werden eine String-Variable und ein Gleitkomma-Literal als Argumente verwendet. Wenn sie als Strings dargestellt werden, werden Gleitkommazahlen, die ganze Zahlen sind, ohne Dezimalkomma formatiert (z. B. wird 1,0 als „1“ dargestellt). Außerdem werden Gleitkommazahlen, die mehr als 16 Dezimalstellen haben, auf die 16. Dezimalstelle gekürzt.
"google2.5" = strings.concat($e.principal.hostname, 2.5)
Beispiel 4
Das folgende Beispiel enthält eine Stringvariable, ein Stringliteral, eine Ganzzahlvariable und ein Gleitkommaliteral als Argumente. Alle Variablen stammen aus demselben Ereignis, $e, und werden mit den Literalen verkettet, um einen String zurückzugeben.
"google-test802.5" = strings.concat($e.principal.hostname, "-test", $e.principal.port, 2.5)
Beispiel 5
Im folgenden Beispiel wird versucht, „principal.port“ aus dem Ereignis $e1 mit principal.hostname aus dem Ereignis $e2 zu verketten. Es wird ein Compilerfehler zurückgegeben, da die Argumente unterschiedliche Ereignisvariablen sind.
// Will not compile
"test" = strings.concat($e1.principal.port, $e2.principal.hostname)
strings.contains
strings.contains( str, substr )
Beschreibung
Gibt „true“ zurück, wenn ein bestimmter String den angegebenen Teilstring enthält. Andernfalls wird „false“ zurückgegeben.
Parameterdatentypen
STRING, STRING
Rückgabetyp
BOOL
Codebeispiele
Beispiel 1
In diesem Beispiel wird „true“ zurückgegeben, da der String den Teilstring „is“ enthält.
strings.contains("thisisastring", "is") = true
Beispiel 2
In diesem Beispiel wird „false“ zurückgegeben, da der String den Teilstring „that“ nicht enthält.
strings.contains("thisisastring", "that") = false
strings.count_substrings
strings.count_substrings(string_to_search_in, substring_to_count)
Beschreibung
Gibt bei Angabe eines Strings und eines Teilstrings einen int64-Wert zurück, der die Anzahl der sich nicht überschneidenden Vorkommen des Teilstrings im String angibt.
Parameterdatentypen
STRING, STRING
Rückgabetyp
INT
Codebeispiele
Dieser Abschnitt enthält Beispiele, in denen berechnet wird, wie oft ein Teilstring in einem bestimmten String vorkommt.
Beispiel 1
In diesem Beispiel wird ein String verwendet, der nicht null ist, und ein einzelnes Teilstringzeichen, das nicht null ist.
strings.count_substrings("this`string`has`four`backticks", "`") = 4
Beispiel 2
In diesem Beispiel wird ein String verwendet, der nicht null ist, und ein Substring, der nicht null ist und mehr als ein Zeichen enthält.
strings.count_substrings("str", "str") = 1
Beispiel 3
In diesem Beispiel wird ein String verwendet, der nicht null ist, und ein leerer Teilstring.
strings.count_substrings("str", "") = 0
Beispiel 4
In diesem Beispiel werden ein leerer String und ein nicht leeres Substring mit mehr als einem Zeichen verwendet.
strings.count_substrings("", "str") = 0
Beispiel 5
In diesem Beispiel werden ein leerer String und ein leerer Substring verwendet.
strings.count_substrings("", "") = 0
Beispiel 6
In diesem Beispiel werden ein String, der nicht null ist, und ein Substring, der nicht null ist und aus mehr als einem Zeichen besteht und mehr als einmal vorkommt, verwendet.
strings.count_substrings("fooABAbarABAbazABA", "AB") = 3
Beispiel 7
In diesem Beispiel werden ein String, der nicht null ist, und ein Substring, der nicht null ist und aus mehr als einem Zeichen besteht und mehr als einmal vorkommt, verwendet. Es wird die Einschränkung bei sich überschneidenden Teilstring-Vorkommen hervorgehoben.
strings.count_substrings("ABABABA", "ABA") = 2
strings.ends_with
strings.ends_with(value, suffix)
Beschreibung
Die Funktion verwendet zwei Strings (value, suffix). Gibt „true“ zurück, wenn das Suffix nicht leer ist und am Ende des Werts steht.
Parameterdatentypen
STRING, STRING
Rückgabetyp
BOOL
Codebeispiele
Die folgenden Codebeispiele veranschaulichen einige Möglichkeiten, wie Sie die Funktion strings.ends_with verwenden können.
Beispiel: Gibt „true“ zurück
Gibt „true“ zurück, wenn das Suffix am Ende des Werts gefunden wird.
strings.ends_with(target.hostname, "com") = true
Beispiel: Gibt „false“ zurück
Gibt „false“ zurück, wenn das Suffix nicht am Ende des Werts steht.
strings.ends_with(target.hostname, "com") = false
Beispiel: „false“ wird zurückgegeben, wenn die Werte identisch sind
Gibt „false“ zurück, wenn Suffix und Wert identisch sind.
target.hostname != "example.com"
strings.ends_with("str", "str") = true
Beispiel: Gibt „false“ zurück, wenn das Suffix leer ist.
Gibt „false“ zurück, wenn „suffix“ ein leerer String ist.
target.hostname != "example.com"
strings.ends_with("str", "") = false
Beispiel: Gibt „false“ zurück, wenn der Wert leer ist
Gibt „false“ zurück, wenn der Wert ein leerer String ist.
target.hostname != "example.com"
strings.ends_with("", "str") = false
Beispiel: Gibt „false“ zurück, wenn Suffix und Wert leer sind
Gibt „false“ zurück, wenn Suffix und Wert leere Strings sind.
target.hostname != "example.com"
strings.ends_with("", "") = false
strings.extract_domain
strings.extract_domain(url_string)
Beschreibung
Extrahiert die Domain aus einem String.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Dieses Beispiel zeigt einen leeren String.
strings.extract_domain("") = ""
Beispiel 2
Zufälliger String, keine URL
strings.extract_domain("1234") = ""
Beispiel 3
mehrere umgekehrte Schrägstriche
strings.extract_domain("\\\\") = ""
Beispiel 4
Nicht alphabetische Zeichen werden ordnungsgemäß verarbeitet
strings.extract_domain("http://例子.卷筒纸.中国") = "卷筒纸.中国"
Beispiel 5
URIs verarbeiten
strings.extract_domain("mailto:?to=&subject=&body=") = ""
Beispiel 6
Mehrere Zeichen vor der eigentlichen URL
strings.extract_domain(" \t !$5*^)&dahgsdfs;http://www.google.com") = "google.com"
Beispiel 7
Sonderzeichen im URI #
strings.extract_domain("test#@google.com") = ""
Beispiel 8
Sonderzeichen in URL #
strings.extract_domain("https://test#@google.com") = ""
Beispiel 9
positiver Testlauf
strings.extract_domain("https://google.co.in") = "google.co.in"
strings.extract_hostname
strings.extract_hostname(string)
Beschreibung
Extrahiert den Hostnamen aus einem String. Bei dieser Funktion wird zwischen Groß- und Kleinschreibung unterschieden.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
In diesem Beispiel wird ein leerer String zurückgegeben.
strings.extract_hostname("") = ""
Beispiel 2
Zufälliger String, keine URL
strings.extract_hostname("1234") = "1234"
Beispiel 3
mehrere umgekehrte Schrägstriche
strings.extract_hostname("\\\\") = ""
Beispiel 4
Nicht zum lateinischen Alphabet gehörige Zeichen werden korrekt verarbeitet
strings.extract_hostname("http://例子.卷筒纸.中国") = "例子.卷筒纸.中国"
Beispiel 5
URIs verarbeiten
strings.extract_hostname("mailto:?to=&subject=&body=") = "mailto"
Beispiel 6
Mehrere Zeichen vor der eigentlichen URL
strings.extract_hostname(" \t !$5*^)&dahgsdfs;http://www.google.com") = "www.google.com"
Beispiel 7
Sonderzeichen im URI #
strings.extract_hostname("test#@google.com") = "test"
Beispiel 8
Sonderzeichen in URL #
strings.extract_hostname("https://test#@google.com") = "test"
strings.from_base64
strings.from_base64(base64_encoded_string)
Beschreibung
Die Funktion wandelt einen base64-codierten STRING-Wert in einen binären BYTES-Rohwert um. Funktionsaufrufe mit Werten, die nicht umgewandelt werden können, geben standardmäßig ein leeres BYTES zurück.
Parameterdatentypen
STRING
Rückgabetyp
BYTES
Codebeispiele
Umwandlung von Base64-codiertem String in Byte
Die Funktion wandelt einen base64-codierten String in seine binäre Rohdarstellung um.
strings.from_base64("AAAAAG+OxVhtAm+d2sVuny/hW4oAAAAAAQAAAM0AAAA=") = b'000000006f8ec5586d026f9ddac56e9f2fe15b8a0000000001000000cd000000
Fehler bei der Konvertierung (Standardwert: leere Bytes)
Wenn der angegebene Wert ungültig ist, wird standardmäßig ein leerer Byte-String zurückgegeben.
strings.from_base64("invalid-value") = b'
strings.from_hex
strings.from_hex(hex_string)
Beschreibung
Gibt die Bytes zurück, die dem angegebenen Hexadezimalstring zugeordnet sind.
Parameterdatentypen
STRING
Rückgabetyp
BYTES
Codebeispiele
Ruft die Bytes ab, die einem bestimmten Hexadezimalstring zugeordnet sind.
Beispiel 1
In diesem Beispiel werden Zeichen konvertiert, die keine Hexadezimalzeichen sind.
strings.from_hex("str") // returns empty bytes
Beispiel 2
In diesem Beispiel wird eine Eingabe mit einem leeren String gezeigt.
strings.from_hex("") // returns empty bytes
Beispiel 3
In diesem Beispiel wird die Konvertierung von Hexadezimalstrings gezeigt.
strings.from_hex("1234") // returns 1234 bytes
Beispiel 4
Dieses Beispiel zeigt die Konvertierung von Nicht-ASCII-Zeichen.
strings.from_hex("筒纸.中国") // returns empty bytes
strings.ltrim
strings.ltrim(string_to_trim, cutset)
Beschreibung
Entfernt vorangestellte Leerzeichen aus einem bestimmten String. Mit dieser Funktion werden führende Zeichen entfernt, die im Cutset vorhanden sind.
Parameterdatentypen
STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Im Folgenden finden Sie einige Anwendungsbeispiele.
Beispiel 1
In diesem Beispiel werden für das erste und zweite Argument dieselben Werte verwendet.
strings.ltrim("str", "str") = ""
Beispiel 2
In diesem Beispiel wird ein leerer String als zweites Argument verwendet.
strings.ltrim("str", "") = "str"
Beispiel 3
In diesem Beispiel wird ein leerer String als erstes Argument und ein String als zweites Argument verwendet.
strings.ltrim("", "str") = ""
Beispiel 4
In diesem Beispiel werden Strings mit Leerzeichen und ein String als zweites Argument verwendet.
strings.ltrim("a aastraa aa ", " a") = "straa aa "
strings.reverse
strings.reverse(STRING)
Beschreibung
Gibt einen String zurück, der die Umkehrung des Eingabestrings ist.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird ein kurzer String übergeben.
strings.reverse("str") = "rts" // The function returns 'rts'.
Beispiel 2
Im folgenden Beispiel wird ein leerer String übergeben.
strings.reverse("") = ""
Beispiel 3
Im folgenden Beispiel wird ein Palindrom übergeben.
strings.reverse("tacocat") = "tacocat"
strings.rtrim
strings.rtrim(string_to_trim, cutset)
Beschreibung
Entfernt nachfolgende Leerzeichen aus einem bestimmten String. Entfernt nachgestellte Zeichen, die in diesem Cutset vorhanden sind.
Parameterdatentypen
STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Im Folgenden finden Sie einige Anwendungsbeispiele.
Beispiel 1
Im folgenden Beispiel wird derselbe String als erstes und zweites Argument übergeben.
strings.rtrim("str", "str") = ""
Beispiel 2
Im folgenden Beispiel wird ein leerer String als zweites Argument übergeben.
strings.rtrim("str", "") = "str"
Beispiel 3
Im folgenden Beispiel wird ein leerer String als erstes Argument und ein nicht leerer String als zweites Argument übergeben.
strings.rtrim("", "str") = ""
Beispiel 4
Im folgenden Beispiel wird ein String mit Leerzeichen als erstes Argument und ein nicht leerer String als zweites Argument übergeben.
strings.rtrim("a aastraa aa ", " a") = "a aasstr"
strings.split
strings.split(string, delimiter)
Beschreibung
Teilt den Stringwert mithilfe des Arguments „Trennzeichen“ auf. Das Standardtrennzeichen ist ein Komma (,).
Parameterdatentypen
STRING, STRING
Rückgabetyp
ARRAY_STRINGS
Codebeispiele
Die folgenden Codebeispiele veranschaulichen einige Möglichkeiten, wie Sie die Funktion strings.split verwenden können.
Beispiel: String mit Standardwert aufteilen
Im folgenden Beispiel wird der String mit dem Standardtrennzeichen (Komma) aufgeteilt.
strings.split("a,b,c,d") = ["a", "b", "c", "d"]
Beispiel: String mit Doppelpunkt aufteilen
Im folgenden Beispiel wird der String an jedem Doppelpunkt (:) aufgeteilt.
strings.split("a:b:c:d", ":") = ["a", "b", "c", "d"]
Beispiel: Fehlendes Trennzeichen
Im folgenden Beispiel fehlt das Trennzeichen im Stringwert.
strings.split("a,b,c,d", ":") = ["a,b,c,d"]
Beispiel: leeres Trennzeichen
Im folgenden Beispiel ist der Trennzeichenstring leer.
strings.split("abc", "") = ["a", "b", "c"]
strings.to_lower
strings.to_lower(stringText)
Beschreibung
Diese Funktion verwendet einen Eingabestring und gibt einen String zurück, nachdem alle Zeichen in Kleinbuchstaben geändert wurden.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird true zurückgegeben.
"test@google.com" = strings.to_lower($e.network.email.to)
strings.to_upper
strings.to_upper(string_val)
Beschreibung
Gibt den ursprünglichen String mit allen alphabetischen Zeichen in Großbuchstaben zurück.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird das angegebene Argument in Großbuchstaben zurückgegeben.
strings.to_upper("example") = "EXAMPLE"
strings.trim
strings.trim(string_to_trim, cutset)
Beschreibung
Entfernt voran- und nachgestellte Leerzeichen aus einem bestimmten String. Außerdem werden unerwünschte Zeichen (angegeben durch das Argument „cutset“) aus dem Eingabestring entfernt.
Parameterdatentypen
STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Im Folgenden finden Sie einige Anwendungsbeispiele.
Beispiel 1
Im folgenden Beispiel wird derselbe String als Eingabestring und als Cutset übergeben, was zu einem leeren String führt.
strings.trim("str", "str") // ""
Beispiel 2
Im folgenden Beispiel wird ein leerer String als „cutset“ übergeben. Das Ergebnis ist der ursprüngliche String „str“, da im „cutset“ keine zu entfernenden Zeichen angegeben sind.
strings.trim("str", "") = "str"
Beispiel 3
Im folgenden Beispiel gibt die Funktion einen leeren String zurück, da der Eingabestring bereits leer ist und keine Zeichen entfernt werden können.
strings.trim("", "str") = ""
Beispiel 4
Im folgenden Beispiel gibt die Funktion „str“ zurück, da durch die Funktion „trim“ Folgendes entfernt wird:
- Nachfolgende Leerzeichen in „a aastraa aa “
- die im Cutset angegebenen Zeichen (Leerzeichen, a)
strings.trim("a aastraa aa ", " a") = "str"
strings.url_decode
strings.url_decode(url_string)
Beschreibung
Entschlüsselt die Escape-Zeichen in einem URL-String und verarbeitet codierte UTF-8-Zeichen. Gibt einen leeren String zurück, wenn die Decodierung fehlschlägt.
Parameterdatentypen
STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Dieses Beispiel zeigt einen positiven Testlauf.
strings.url_decode("three%20nine%20four") = "three nine four"
Beispiel 2
Dieses Beispiel zeigt einen Fall mit einem leeren String.
strings.url_decode("") // ""
Beispiel 3
In diesem Beispiel wird die Verarbeitung von nicht alphabetischen Zeichen gezeigt.
strings.url_decode("%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B") // "上海+中國"
Beispiel 4
In diesem Beispiel wird eine URL dekodiert.
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])
Beschreibung
Diese Funktion gibt eine Ganzzahl zurück, die die Anzahl der Sekunden seit der Unix-Epoche für den angegebenen Zeitstempelstring darstellt.
timestampist ein String, der einen gültigen Epoch-Zeitstempel darstellt. Das Format muss%F %Tsein.time_zoneist optional und ein String, der eine Zeitzone darstellt. Wenn keine Angabe gemacht wird, lautet der StandardwertGMT. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B.
America/Los_Angeles. Weitere Informationen finden Sie in der Liste der Zeitzonen in der tz-Datenbank auf Wikipedia. - Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
- Der Name der Zeitzonendatenbank, z. B.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
STRING, STRING
Rückgabetyp
INT
Codebeispiele
Beispiel 1
Gültiger Epoch-Zeitstempel
timestamp.as_unix_seconds("2024-02-22 10:43:00") = 1708598580
Beispiel 2
Gültiger Epoch-Zeitstempel mit der Zeitzone „America/New_York“
timestamp.as_unix_seconds("2024-02-22 10:43:00", "America/New_York") = 1708616580
timestamp.current_seconds
timestamp.current_seconds()
Beschreibung
Gibt eine Ganzzahl zurück, die die aktuelle Zeit in Unix-Sekunden darstellt. Dieser Wert entspricht ungefähr dem Zeitstempel der Erkennung und basiert darauf, wann die Regel ausgeführt wird. Diese Funktion ist ein Synonym für die Funktion timestamp.now().
Parameterdatentypen
NONE
Rückgabetyp
INT
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird true zurückgegeben, wenn das Zertifikat seit mehr als 24 Stunden abgelaufen ist. Die Zeitdifferenz wird berechnet, indem die aktuellen Unix-Sekunden subtrahiert und dann mit dem Operator „größer als“ verglichen werden.
86400 < timestamp.current_seconds() - $e.network.tls.certificate.not_after
timestamp.get_date
timestamp.get_date(unix_seconds [, time_zone])
Beschreibung
Diese Funktion gibt einen String im Format YYYY-MM-DD zurück, der den Tag angibt, an dem sich ein Zeitstempel befindet.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.time_zoneist optional und ein String, der eine time_zone darstellt. Wird sie weggelassen, ist der Standardwert „GMT“. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B. „America/Los_Angeles“. Weitere Informationen finden Sie auf dieser Seite in der Spalte TZ Database Name.
- Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Der Standardwert ist also „GMT“.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_date($ts) = "2024-02-19"
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$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])
Beschreibung
Diese Funktion gibt eine Ganzzahl im Bereich [0, 59] zurück, die die Minute darstellt.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.time_zoneist optional und ein String, der eine Zeitzone darstellt. Wenn keine Angabe gemacht wird, lautet der Standardwert „GMT“. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B. „America/Los_Angeles“. Weitere Informationen finden Sie auf dieser Seite in der Spalte TZ Database Name.
- Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Der Standardwert ist also „GMT“.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts, "America/Los_Angeles") = 15
timestamp.get_hour
timestamp.get_hour(unix_seconds [, time_zone])
Beschreibung
Diese Funktion gibt eine Ganzzahl im Bereich [0, 23] zurück, die die Stunde darstellt.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.time_zoneist optional und ein String, der eine Zeitzone darstellt. Wird sie weggelassen, ist der Standardwert „GMT“. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B. „America/Los_Angeles“. Weitere Informationen finden Sie auf dieser Seite in der Spalte TZ Database Name.
- Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Der Standardwert ist also „GMT“.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_hour($ts) = 15
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$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])
Beschreibung
Diese Funktion gibt eine Ganzzahl im Bereich [1, 7] zurück, die den Wochentag ab Sonntag darstellt. Beispiel: 1 = Sonntag und 2 = Montag.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.time_zoneist optional und ein String, der eine time_zone darstellt. Wird sie weggelassen, ist der Standardwert „GMT“. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B. „America/Los_Angeles“. Weitere Informationen finden Sie auf dieser Seite in der Spalte TZ Database Name.
- Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Der Standardwert ist also „GMT“.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_day_of_week($ts) = 6
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$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)
Beschreibung
Diese Funktion gibt einen String im Format YYYY-MM-DD zurück, der den Tag angibt, an dem sich ein Zeitstempel befindet.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.timestamp_formatist optional und ein String, der das Format für den Zeitstempel darstellt. Wenn keine Angabe gemacht wird, lautet der Standardwert%F %T. Sie können das Format mit einem Datums-/Zeitformatstring oder einer der folgenden Zeitgranularitäten angeben:SECOND,MINUTE,HOUR,DATE,WEEK,MONTHoderYEAR. Weitere Formatierungsoptionen finden Sie unter Elemente für Datums- und Uhrzeitangaben formatieren.time_zoneist optional und ein String, der eine Zeitzone darstellt. Wenn keine Angabe gemacht wird, lautet der StandardwertGMT. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der IANA-Zeitzonendatenbank (TZ), z. B.
America/Los_Angeles. Weitere Informationen finden Sie in der Liste der Zeitzonen in der tz-Datenbank auf Wikipedia. - Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
- Der Name der IANA-Zeitzonendatenbank (TZ), z. B.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING, STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Es wird also standardmäßig auf GMT gesetzt.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts) = "2024-02-22 10:43:51"
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%F %T", "America/Los_Angeles") = "2024-02-22 10:43:51"
Beispiel 3
In diesem Beispiel wird ein Stringliteral verwendet, um die timestamp_format zu definieren.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_timestamp($ts, "%Y-%m", "GMT") = "2024-02"
Beispiel 4
In diesem Beispiel wird ein Unix-Zeitstempel als String mit einer Granularität von Sekunden formatiert.
timestamp.get_timestamp(1708598631, "SECOND", "GMT") = "2024-02-22 10:43:51"
Beispiel 5
In diesem Beispiel wird ein Unix-Zeitstempel als String mit einer Granularität von einer Minute formatiert.
timestamp.get_timestamp(1708598631, "MINUTE", "GMT") = "2024-02-22 10:43"
Beispiel 6
In diesem Beispiel wird ein Unix-Zeitstempel als String mit einer Granularität von einer Stunde formatiert.
timestamp.get_timestamp(1708598631, "HOUR", "GMT") = "2024-02-22 10"
Beispiel 7
In diesem Beispiel wird ein Unix-Zeitstempel mit dem Detaillierungsgrad „Tag“ als String formatiert.
timestamp.get_timestamp(1708598631, "DATE", "GMT") = "2024-02-22"
Beispiel 8
In diesem Beispiel wird ein UNIX-Zeitstempel als String mit der Granularität „Woche“ formatiert.
timestamp.get_timestamp(1708598631, "WEEK", "GMT") = "2024-02-18"
Beispiel 9
In diesem Beispiel wird ein Unix-Zeitstempel als String auf Monatsebene formatiert.
timestamp.get_timestamp(1708598631, "MONTH", "GMT") = "2024-02"
Beispiel 10
In diesem Beispiel wird ein UNIX-Zeitstempel als String auf Jahresebene formatiert.
timestamp.get_timestamp(1708598631, "YEAR", "GMT") = "2024"
timestamp.get_week
timestamp.get_week(unix_seconds [, time_zone])
Beschreibung
Diese Funktion gibt eine Ganzzahl im Bereich [0, 53] zurück, die die Woche des Jahres darstellt. Wochen beginnen am Sonntag. Datumsangaben vor dem ersten Sonntag des Jahres liegen in Woche 0.
unix_secondsist eine Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche darstellt, z. B.$e.metadata.event_timestamp.seconds, oder ein Platzhalter, der diesen Wert enthält.time_zoneist optional und ein String, der eine Zeitzone darstellt. Wird sie weggelassen, ist der Standardwert „GMT“. Sie können Zeitzonen mit Stringliteralen angeben. Folgende Optionen sind verfügbar:- Der Name der Zeitzonendatenbank, z. B. „America/Los_Angeles“. Weitere Informationen finden Sie auf dieser Seite in der Spalte TZ Database Name.
- Der Zeitzonenversatz von UTC im Format
(+|-)H[H][:M[M]], z. B. „-08:00“.
Hier sind Beispiele für gültige time_zone-Spezifizierer, die Sie als zweites Argument an Funktionen zur Zeitausgabe übergeben können:
"America/Los_Angeles", or "-08:00". ("PST" is not supported)
"America/New_York", or "-05:00". ("EST" is not supported)
"Europe/London"
"UTC"
"GMT"
Parameterdatentypen
INT, STRING
Rückgabetyp
INT
Codebeispiele
Beispiel 1
In diesem Beispiel wird das Argument time_zone weggelassen. Der Standardwert ist also „GMT“.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts) = 0
Beispiel 2
In diesem Beispiel wird ein Stringliteral verwendet, um die time_zone zu definieren.
$ts = $e.metadata.collected_timestamp.seconds
timestamp.get_week($ts, "America/Los_Angeles") = 0
timestamp.now
timestamp.now()
Beschreibung
Gibt die Anzahl der Sekunden seit dem 01.01.1970 00:00:00 UTC zurück. Dies wird auch als Unix-Epochenzeit bezeichnet.
Rückgabetyp
INT
Codebeispiele
Beispiel 1
Im folgenden Beispiel wird ein Zeitstempel für Code zurückgegeben, der am 22. Mai 2024 um 18:16:59 Uhr ausgeführt wurde.
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])
Beschreibung
Gibt den Durchschnitt der Eingabewerte zurück (die Ganzzahlen oder Gleitkommazahlen sein können). Wenn Sie das optionale zweite Argument auf „true“ setzen, werden Nullwerte ignoriert.
Parameterdatentypen
INT|FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird der durchschnittliche Ganzzahlwert angezeigt.
// 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
Beispiel 2
In diesem Beispiel wird der Gleitkomma-Durchschnitt dargestellt.
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
Beispiel 3
Durchschnittlicher negativer Input
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
Beispiel 4
0 gibt 0 zurück
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
Beispiel 5
0-Werte ignorieren
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)
Beschreibung
Diese Aggregationsfunktion gibt einen Stringwert zurück, der von einem Ereignis mit dem niedrigsten korrelierten Ganzzahlwert im Abgleichszeitraum abgeleitet wird. Ein Beispiel ist das Abrufen der Nutzer-ID aus dem Ereignis mit dem niedrigsten Zeitstempel im Abgleichszeitraum (frühestes Ereignis).
Parameterdatentypen
INT, STRING
Rückgabetyp
STRING
Codebeispiele
Gibt einen Stringwert zurück, der aus einem Ereignis mit dem niedrigsten korrelierten Ganzzahlwert im Abgleichszeitraum abgeleitet wird.
// 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)
Beschreibung
Diese Aggregationsfunktion gibt einen Stringwert zurück, der von einem Ereignis mit dem höchsten korrelierten Ganzzahlwert im Abgleichszeitraum abgeleitet wird. Ein Beispiel für einen Anwendungsfall ist das Abrufen der Nutzer-ID aus dem Ereignis mit dem niedrigsten Zeitstempel im Abgleichszeitraum (höchster Zeitstempel).
Parameterdatentypen
INT, STRING
Rückgabetyp
STRING
Codebeispiele
Gibt einen Stringwert zurück, der aus einem Ereignis mit dem höchsten korrelierten Ganzzahlwert im Abgleichszeitraum abgeleitet wird.
// 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)
Beschreibung
Gibt den Median der Eingabewerte zurück. Wenn es zwei Medianwerte gibt, wird nur einer nicht deterministisch als Rückgabewert ausgewählt.
Parameterdatentypen
INT|FLOAT, BOOL
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird der Median zurückgegeben, wenn die Eingabewerte nicht null sind.
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
}
Beispiel 2
In diesem Beispiel wird der Median zurückgegeben, wenn die Eingabe einige Nullwerte enthält, die nicht ignoriert werden sollten.
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
}
Beispiel 3
In diesem Beispiel wird der Median zurückgegeben, wenn die Eingabe einige Nullwerte enthält, die ignoriert werden sollen.
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
}
Beispiel 4
In diesem Beispiel wird der Median zurückgegeben, wenn die Eingabe alle Nullwerte enthält, die ignoriert werden sollen.
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
}
Beispiel 5
Dieses Beispiel zeigt, dass bei mehreren Medianen nur ein Median zurückgegeben wird.
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)
Beschreibung
Gibt den Modus der Eingabewerte zurück. Bei mehreren möglichen Moduswerten wird nur einer dieser Werte nicht deterministisch als Rückgabewert ausgewählt.
Parameterdatentypen
INT|FLOAT|STRING
Rückgabetyp
STRING
Codebeispiele
Beispiel 1
Den Modus der Werte im Abgleichszeitraum abrufen.
// 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)
Beschreibung
Gibt den Bereich der gefundenen Eingabewerte zurück (einschließlich Min. und Max.). Jeder Wert kann eine Ganzzahl oder eine Gleitkommazahl sein. Wenn Sie das optionale zweite Argument auf „true“ setzen, werden Nullwerte ignoriert.
Parameterdatentypen
INT|FLOAT, BOOL
Rückgabetyp
ARRAY_FLOATS
Codebeispiele
Die folgenden Codebeispiele veranschaulichen einige Möglichkeiten, wie Sie die Funktion window.range verwenden können.
Beispiel: Mindest- und Höchstwert für Ganzzahlen
In diesem Beispiel werden der minimale und der maximale Ganzzahlwert dargestellt.
window.range([1, 2, 3, 4], false) = [1.000000, 4.000000]
Beispiel: Mindest- und Höchstwert für Gleitkommazahlen
In diesem Beispiel werden der minimale und der maximale Gleitkommawert dargestellt.
window.range([1.100000, 39.400000, 2.400000], false) = [1.100000, 39.400000]
Beispiel: Minimale und maximale negative Ganzzahl
In diesem Beispiel werden der minimale und der maximale negative Ganzzahlwert dargestellt.
window.range([-1.100000, 1.100000, 0.000000, 2.400000], false) = [-1.100000, 2.400000]
Beispiel: ignorierter Wert 0
In diesem Beispiel sehen Sie, wie 0-Werte ignoriert werden, wenn Sie den zweiten Parameter festlegen.
window.range([0, 0, 0, 394, 1], true) = [1.000000, 394.000000]
window.stddev
window.stddev(numeric_values)
Beschreibung
Gibt die Standardabweichung der Eingabewerte in einem Abgleichszeitraum zurück.
Parameterdatentypen
INT|FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird die Standardabweichung von Ganzzahlen in einem Abgleichszeitraum zurückgegeben.
// 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
Beispiel 2
In diesem Beispiel wird die Standardabweichung von Gleitkommazahlen in einem Abgleichszeitraum zurückgegeben.
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
Beispiel 3
In diesem Beispiel wird die Standardabweichung in einem Abgleichszeitraum mit negativen Zahlen zurückgegeben.
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
Beispiel 4
In diesem Beispiel wird eine Standardabweichung von null zurückgegeben, wenn alle Werte im Abgleichszeitraum gleich sind.
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
Beispiel 5
In diesem Beispiel wird die Standardabweichung eines Abgleichszeitraums mit positiven und negativen Zahlen zurückgegeben.
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)
Beschreibung
Diese Funktion gibt die angegebene Varianz der Eingabewerte zurück.
Parameterdatentypen
INT|FLOAT
Rückgabetyp
FLOAT
Codebeispiele
Beispiel 1
In diesem Beispiel wird die Varianz aller Ganzzahlen zurückgegeben.
// 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
Beispiel 2
In diesem Beispiel wird die Varianz aller Gleitkommazahlen zurückgegeben.
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
Beispiel 3
In diesem Beispiel wird die Varianz negativer Zahlen zurückgegeben.
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
Beispiel 4
In diesem Beispiel wird ein kleiner Varianzwert zurückgegeben.
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
Beispiel 5
In diesem Beispiel wird eine Varianz von null zurückgegeben.
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
Beispiel 6
In diesem Beispiel wird die Varianz von positiven und negativen Zahlen zurückgegeben.
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
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten