
Un analizador rápido (y seguro) para el formato de Registro de Eventos XML de Windows (EVTX)
Un analizador multiplataforma para el formato Windows XML EventLog

¿Prefieres una opción sin instalación? Un explorador EVTX con todas las funciones se ejecuta directamente en tu navegador, impulsado por el mismo núcleo Rust compilado a WebAssembly.
👉 Pruébalo ahora: https://omerbenamram.github.io/evtx/
Todo ocurre localmente – los archivos nunca salen de tu máquina. Destacados:
.evtx (o haz clic para explorar) – ¡maneja logs muy grandes!EventData – todo respaldado por DuckDB-WASMEl visor se sirve estáticamente desde GitHub Pages; tras la primera carga funciona completamente sin conexión.
cargo install evtxevtx_dump (Utilidad binaria):La utilidad binaria principal proporcionada con esta crate es evtx_dump, y proporciona una forma rápida de convertir archivos .evtx a diferentes formatos de salida.
Algunos ejemplos
evtx_dump <evtx_file> volcará el contenido de los registros evtx como xml.evtx_dump -o json <evtx_file> volcará el contenido de los registros evtx como JSON.evtx_dump -f <output_file> -o json <input_file> volcará el contenido de los registros evtx como JSON a un archivo dado.cat <evtx_file> | evtx_dump -o jsonl - leerá el archivo EVTX desde stdin (útil para tuberías/descompresión).evtx_dump se puede combinar con fd para el procesamiento por lotes conveniente de archivos:
fd -e evtx -x evtx_dump -o jsonl escaneará una carpeta y volcará todos los archivos evtx a un único archivo jsonlines.fd -e evtx -x evtx_dump '{}' -f '{.}.xml' creará un archivo xml junto a cada archivo evtx, ¡para todos los archivos en la carpeta de forma recursiva!xargs (o gxargs en mac) y jq: fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"Nota: por defecto, evtx_dump intentará utilizar multihilo, esto significa que los registros pueden devolverse desordenados.
Para forzar el uso de un solo hilo (lo que también asegurará el orden), se puede pasar -t 1.
Los registros EVTX pueden hacer referencia a definiciones de plantillas almacenadas en binarios de proveedores (EXE/DLL/SYS). evtx_dump puede extraer esas plantillas en una caché sin conexión y usarlas al renderizar.
Nota: esta funcionalidad requiere compilar evtx_dump con la característica de Cargo wevt_templates (los binarios de lanzamiento pueden ya incluirla).
.wevtcache):
evtx_dump extract-wevt-templates --input <provider.dll> --output /tmp/wevt_cache.wevtcache --overwriteevtx_dump --wevt-cache /tmp/wevt_cache.wevtcache <log.evtx>Ayudantes de depuración:
TemplateInstance de un registro (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>Consulte docs/wevt_templates.md para obtener detalles y antecedentes (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 versión en paralelo se habilita al compilar con la característica "multithreading" (habilitada por defecto).
Al usar multihilo, evtx es significativamente más rápido que cualquier otro analizador disponible. En rendimiento de un solo núcleo, es tanto el más rápido como el único analizador multiplataforma que soporta salidas XML y JSON.
El rendimiento se evaluó en mi máquina usando hyperfine (herramienta de mediciones estadísticas).
Estoy ejecutando pruebas en un AMD Ryzen 3900X de 12 núcleos.
Ejecución del benchmark: Junio 2026 (evtx 0.12.2).
Sistema: Arch Linux (Linux 7.0.11-arch1-1 x86_64).
Commit del benchmark: 99a6def.