
Un analyseur rapide (et sûr) pour le format de journal d'événements XML Windows (EVTX)
Un analyseur multiplateforme pour le format Windows XML EventLog

Vous préférez une option sans installation ? Un explorateur EVTX complet s'exécute directement dans votre navigateur, propulsé par le même noyau Rust compilé en WebAssembly.
👉 Essayez-le maintenant : https://omerbenamram.github.io/evtx/
Tout se passe localement – les fichiers ne quittent jamais votre machine. Points forts :
.evtx (ou cliquez pour parcourir) – gère de très gros fichiers journaux !EventData dynamiques – tous soutenus par DuckDB‑WASMLe visualiseur est servi statiquement depuis GitHub Pages ; après le premier chargement, il fonctionne complètement hors ligne.
cargo install evtxevtx_dump (Utilitaire binaire) :L'utilitaire binaire principal fourni avec cette crate est evtx_dump, et il offre un moyen rapide de convertir des fichiers .evtx en différents formats de sortie.
Quelques exemples
evtx_dump <evtx_file> exportera le contenu des enregistrements evtx en xml.evtx_dump -o json <evtx_file> exportera le contenu des enregistrements evtx en JSON.evtx_dump -f <output_file> -o json <input_file> exportera le contenu des enregistrements evtx en JSON vers un fichier donné.cat <evtx_file> | evtx_dump -o jsonl - lira le fichier EVTX depuis stdin (utile pour le pipe/décompression).evtx_dump peut être combiné avec fd pour un traitement par lots pratique des fichiers :
fd -e evtx -x evtx_dump -o jsonl analysera un dossier et exportera tous les fichiers evtx vers un seul fichier jsonlines.fd -e evtx -x evtx_dump '{}' -f '{.}.xml' créera un fichier xml à côté de chaque fichier evtx, pour tous les fichiers du dossier de manière récursive !xargs (ou gxargs sur mac) et jq peuvent être utilisés : fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"Remarque : par défaut, evtx_dump essaiera d'utiliser le multithreading, ce qui signifie que les enregistrements peuvent être retournés dans le désordre.
Pour forcer l'utilisation d'un seul thread (ce qui garantira également l'ordre), -t 1 peut être passé.
Les enregistrements EVTX peuvent référencer des définitions de modèle stockées dans les binaires du fournisseur (EXE/DLL/SYS). evtx_dump peut extraire ces modèles dans un cache hors ligne et les utiliser au moment du rendu.
Remarque : cette fonctionnalité nécessite de construire evtx_dump avec la fonctionnalité Cargo wevt_templates (les binaires de version peuvent déjà l'inclure).
.wevtcache portable unique) :
evtx_dump extract-wevt-templates --input <provider.dll> --output /tmp/wevt_cache.wevtcache --overwriteevtx_dump --wevt-cache /tmp/wevt_cache.wevtcache <log.evtx>Aides au débogage :
TemplateInstance d'un enregistrement (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>Voir docs/wevt_templates.md pour les détails et le contexte (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),
}
}
La version parallèle est activée lors de la compilation avec la fonctionnalité "multithreading" (activée par défaut).
En utilisant le multithreading - evtx est significativement plus rapide que tout autre analyseur disponible.
Pour les performances monocœur, il est à la fois le plus rapide et le seul analyseur multiplateforme qui prend en charge les sorties xml et JSON.
Les performances ont été mesurées sur ma machine avec hyperfine (outil de mesures statistiques).
Je lance les tests sur un AMD Ryzen 3900X 12 cœurs.
Exécution du benchmark : Juin 2026 (evtx 0.12.2).
Système : Arch Linux (Linux 7.0.11-arch1-1 x86_64).
Commit du benchmark : 99a6def.