
محلل سريع (وآمن) لتنسيق سجل أحداث XML لويندوز (EVTX)
محلل عبر المنصات لصيغة سجل أحداث Windows XML

هل تفضل خيارًا بدون تثبيت؟ مستكشف EVTX كامل الميزات يعمل مباشرة في متصفحك، مدعومًا بنفس نواة Rust المترجمة إلى WebAssembly.
👉 جربه الآن: https://omerbenamram.github.io/evtx/
كل شيء يحدث محليًا – الملفات لا تغادر جهازك أبدًا. أبرز الميزات:
.evtx (أو النقر للتصفح) – يتعامل مع سجلات كبيرة جدًا!EventData الديناميكية – جميعها مدعومة بـ DuckDB-WASMيتم تقديم العارض بشكل ثابت من GitHub Pages؛ بعد التحميل الأول يعمل بالكامل دون اتصال.
cargo install evtxevtx_dump (أداة ثنائية):الأداة الثنائية الرئيسية المقدمة مع هذه الحزمة هي evtx_dump، وتوفر وسيلة سريعة لتحويل ملفات .evtx إلى صيغ إخراج مختلفة.
بعض الأمثلة:
evtx_dump <evtx_file> يفرغ محتويات سجلات evtx بتنسيق XML.evtx_dump -o json <evtx_file> يفرغ محتويات سجلات evtx بتنسيق JSON.evtx_dump -f <output_file> -o json <input_file> يفرغ محتويات سجلات evtx بتنسيق JSON إلى ملف معين.cat <evtx_file> | evtx_dump -o jsonl - يقرأ ملف EVTX من الإدخال القياسي (مفيد للأنابيب/فك الضغط).يمكن دمج evtx_dump مع fd لمعالجة دفعية مريحة للملفات:
fd -e evtx -x evtx_dump -o jsonl سيقوم بمسح مجلد وتفريغ جميع ملفات evtx إلى ملف واحد بتنسيق jsonlines.fd -e evtx -x evtx_dump '{}' -f '{.}.xml' سينشئ ملف xml بجوار كل ملف evtx، لجميع الملفات في المجلد بشكل متكرر!xargs (أو gxargs على mac) و jq: fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"ملاحظة: بشكل افتراضي، سيحاول evtx_dump استخدام تعدد الخيوط، مما يعني أن السجلات قد تُعاد خارج الترتيب.
لفرض الاستخدام أحادي الخيط (والذي سيضمن الترتيب أيضًا)، يمكن تمرير -t 1.
يمكن لسجلات EVTX أن تشير إلى تعريفات القوالب المخزنة في ملفات ثنائية للمزود (EXE/DLL/SYS). يستطيع evtx_dump استخراج تلك القوالب إلى ذاكرة تخزين مؤقتة غير متصلة واستخدامها وقت العرض.
ملاحظة: تتطلب هذه الوظيفة بناء evtx_dump مع ميزة Cargo wevt_templates (قد تتضمنها الإصدارات الثنائية بالفعل).
.wevtcache محمول واحد):
evtx_dump extract-wevt-templates --input <provider.dll> --output /tmp/wevt_cache.wevtcache --overwriteevtx_dump --wevt-cache /tmp/wevt_cache.wevtcache <log.evtx>أدوات المساعدة في التصحيح:
TemplateInstance لسجل (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>انظر docs/wevt_templates.md للتفاصيل والخلفية (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),
}
}
يتم تمكين الإصدار المتوازي عند التجميع مع ميزة "multithreading" (ممكّنة افتراضيًا).
عند استخدام تعدد الخيوط - يكون evtx أسرع بشكل ملحوظ من أي محلل آخر متاح. بالنسبة لأداء النواة الواحدة، فهو الأسرع والمحلل الوحيد عبر المنصات الذي يدعم مخرجات XML و JSON.
تم قياس الأداء على جهازي باستخدام hyperfine (أداة قياس إحصائية).
أجري الاختبارات على معالج AMD Ryzen 3900X ذو 12 نواة.
تشغيل القياس: يونيو 2026 (evtx 0.12.2).
النظام: Arch Linux (Linux 7.0.11-arch1-1 x86_64).
Commit القياس: 99a6def.
تم إعادة قياس أعمدة evtx — و pyevtx-rs، روابط Python الخاصة بنا، والتي تغلف نفس نواة Rust — في يونيو 2026 على نفس الجهاز، بعد تنفيذ إعادة كتابة القوالب المترجمة (انظر docs/compiled-templates.html). كلاهما هما بنيات PGO التي تُشحن لنظامي Linux/macOS (الملف الثنائي للإصدار وعجلة PyPI؛ التفاصيل أدناه). pyevtx-rs مقيد بـ Python marshaling لكل سجل (قاموس واحد لكل سجل) وليس بالمحلل، لذلك لا يرى تسريع النواة الكامل. أرقام المنافسين المتبقية (libevtx، velocidex/evtx، golang-evtx، python-evtx) منقولة بدون تغيير من تشغيل يناير 2026 على نفس الجهاز — أدوات خارجية لم يتغير أداؤها.
المكتبات التي تم قياسها:
python-evtx(https://github.com/williballenthin/python-evtx) - مع CPython و PyPypyevtx-rs(https://github.com/omerbenamram/pyevtx-rs) / evtx(https://pypi.org/project/evtx/) - روابط Python لهذه المكتبةlibevtx(https://github.com/libyal/libevtx)golang-evtx(https://github.com/0xrawsec/golang-evtx.git) - JSON فقط (يستخدم تعدد الخيوط)evtx(https://github.com/Velocidex/evtx) - JSON فقط.evtx (هذه المكتبة)