Funktionen

Unterstützt in:

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:

arrays.concat

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:

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

Unterstützt in:
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

Unterstützt in:

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 regexp nur 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 nocase nach 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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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:

  • true für einen Bruchteil der Eingabewerte, der (rateNumerator / rateDenominator) entspricht. Dies gibt an, dass das Ereignis in die Stichprobe aufgenommen werden soll.
  • false gibt 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 BYTE oder STRING ausgewertet 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

Unterstützt in:
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

Unterstützt in:
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:

  1. $e.principal.ip wird zuerst ausgewertet.
  2. Als Nächstes wird $e.src.ip ausgewertet.
  3. Als Nächstes wird $e.target.ip ausgewertet.
  4. 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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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+"&param2=2;'

timestamp.as_unix_seconds

Unterstützt in:
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.

  • timestamp ist ein String, der einen gültigen Epoch-Zeitstempel darstellt. Das Format muss %F %T sein.
  • time_zone ist 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:

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

Unterstützt in:
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

Unterstützt in:
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_seconds ist 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_zone ist 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

Unterstützt in:
timestamp.get_minute(unix_seconds [, time_zone])

Beschreibung

Diese Funktion gibt eine Ganzzahl im Bereich [0, 59] zurück, die die Minute darstellt.

  • unix_seconds ist 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_zone ist 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

Unterstützt in:
timestamp.get_hour(unix_seconds [, time_zone])

Beschreibung

Diese Funktion gibt eine Ganzzahl im Bereich [0, 23] zurück, die die Stunde darstellt.

  • unix_seconds ist 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_zone ist 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

Unterstützt in:
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_seconds ist 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_zone ist 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

Unterstützt in:
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_seconds ist 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_format ist 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, MONTH oder YEAR. Weitere Formatierungsoptionen finden Sie unter Elemente für Datums- und Uhrzeitangaben formatieren.
  • time_zone ist 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:

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

Unterstützt in:
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_seconds ist 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_zone ist 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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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

Unterstützt in:
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