
Ein schneller (und sicherer) Parser für das Windows XML Event Log (EVTX)-Format
Ein plattformübergreifender Parser für das Windows XML EventLog-Format

Bevorzugen Sie eine installationsfreie Option? Ein voll ausgestatteter EVTX-Explorer läuft direkt in Ihrem Browser, unterstützt von demselben Rust-Kern, der zu WebAssembly kompiliert wurde.
👉 Jetzt ausprobieren: https://omerbenamram.github.io/evtx/
Alles geschieht lokal – Dateien verlassen niemals Ihren Rechner. Highlights:
.evtx-Dateien (oder Klicken zum Durchsuchen) – verarbeitet auch sehr große Logs!EventData-Felder – alle unterstützt durch DuckDB-WASMDer Viewer wird statisch von GitHub Pages ausgeliefert; nach dem ersten Laden funktioniert er vollständig offline.
cargo install evtxevtx_dump (Binärprogramm):Das wichtigste Binärprogramm, das mit dieser Crate bereitgestellt wird, ist evtx_dump, und es bietet eine schnelle Möglichkeit, .evtx-Dateien in verschiedene Ausgabeformate zu konvertieren.
Einige Beispiele
evtx_dump <evtx_datei> gibt den Inhalt der EVTX-Datensätze als XML aus.evtx_dump -o json <evtx_datei> gibt den Inhalt der EVTX-Datensätze als JSON aus.evtx_dump -f <ausgabedatei> -o json <eingabedatei> gibt den Inhalt der EVTX-Datensätze als JSON in eine bestimmte Datei aus.cat <evtx_datei> | evtx_dump -o jsonl - liest die EVTX-Datei von der Standardeingabe (nützlich für Piping/Dekompression).evtx_dump kann mit fd für die bequeme Stapelverarbeitung von Dateien kombiniert werden:
fd -e evtx -x evtx_dump -o jsonl durchsucht einen Ordner und gibt alle EVTX-Dateien in eine einzige JSON-Lines-Datei aus.fd -e evtx -x evtx_dump '{}' -f '{.}.xml' erstellt neben jeder EVTX-Datei eine XML-Datei, und zwar für alle Dateien im Ordner rekursiv!xargs (oder gxargs auf dem Mac) und jq verwendet werden: fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"Hinweis: Standardmäßig versucht evtx_dump, Multithreading zu nutzen. Das bedeutet, dass die Datensätze möglicherweise in falscher Reihenfolge zurückgegeben werden.
Um eine Single-Thread-Nutzung zu erzwingen (die auch die Reihenfolge sicherstellt), kann -t 1 übergeben werden.
EVTX-Datensätze können auf Template-Definitionen verweisen, die in Anbieter-Binärdateien (EXE/DLL/SYS) gespeichert sind. evtx_dump kann diese Templates in einen Offline-Cache extrahieren und sie zur Renderzeit verwenden.
Hinweis: Diese Funktionalität erfordert das Erstellen von evtx_dump mit dem Cargo-Feature wevt_templates (Release-Binärdateien enthalten es möglicherweise bereits).
.wevtcache-Datei):
evtx_dump extract-wevt-templates --input <anbieter.dll> --output /tmp/wevt_cache.wevtcache --overwriteevtx_dump --wevt-cache /tmp/wevt_cache.wevtcache <log.evtx>Debugging-Hilfen:
TemplateInstance eines Datensatzes ausgeben (JSONL):
evtx_dump dump-template-instances --input <log.evtx> --record-id <ID> | head -n1evtx_dump apply-wevt-cache --cache /tmp/wevt_cache.wevtcache --template-guid <GUID> --evtx <log.evtx> --record-id <ID>Siehe docs/wevt_templates.md für Details und Hintergrund (Issue #103).
use evtx::EvtxParser;
use std::path::PathBuf;
// Change this to a path of your .evtx sample.
let fp = PathBuf::from(format!("{}/samples/security.evtx", std::env::var("CARGO_MANIFEST_DIR").unwrap()));
let mut parser = EvtxParser::from_path(fp).unwrap();
for record in parser.records() {
match record {
Ok(r) => println!("Record {}\n{}", r.event_record_id, r.data),
Err(e) => eprintln!("{}", e),
}
}
Die parallele Version ist aktiviert, wenn mit dem Feature "multithreading" kompiliert wird (standardmäßig aktiviert).
Bei Verwendung von Multithreading ist evtx deutlich schneller als jeder andere verfügbare Parser.
Für die Single-Core-Leistung ist es sowohl der schnellste als auch der einzige plattformübergreifende Parser, der sowohl XML- als auch JSON-Ausgaben unterstützt.
Die Leistung wurde auf meinem Rechner mit hyperfine (statistisches Messwerkzeug) gemessen.
Ich führe Tests auf einem 12-Kern AMD Ryzen 3900X durch.
Bench-Lauf: Juni 2026 (evtx 0.12.2).
System: Arch Linux (Linux 7.0.11-arch1-1 x86_64).
Benchmark-Commit: 99a6def.