williballenthin/python-evtx

GitHub: williballenthin/python-evtx

一个纯 Python 实现的 Windows 事件日志(.evtx)解析器,解决在非 Windows 平台上查看与分析 EVTX 文件的需求。

Stars: 771 | Forks: 167

# python-evtx ## 简介 python-evtx 是一个用于解析近期 Windows 事件日志文件(扩展名为 ".evtx")的纯 Python 解析器。该模块提供了对文件与块头、记录模板以及事件条目的程序化访问。例如,你可以使用 python-evtx 在 Mac 或 Linux 工作站上查看 Windows 7 系统的事件日志。结构定义与解析策略在很大程度上受到 Andreas Schuster 及其 Perl 实现 "Parse-Evtx" 的启发。 ## 背景 随着 Windows Vista 的发布,Microsoft 引入了一种更新的事件日志文件格式。Windows XP 中使用的格式是记录结构的循环缓冲区,每个记录包含一个字符串列表。查看器会解析托管在系统库文件中的模板,并将字符串插入到适当位置。较新的事件日志格式是专有的二进制 XML。从 Windows 7 事件日志文件中解包块会得到一个完整的 XML 文档,其模式可变。这些变更帮助 Microsoft 根据事件日志的实际用途(如数百兆字节数据的长期日志以及与系统无关的模板解析)来优化文件格式。 ## 相关工作 Andreas Schuster 在 2007 年首次公开描述了 .evtx 文件格式。他撰写了题为 "Introducing the Microsoft Vista event log file format" 的详尽文档,描述了格式的动机与细节。Schuster 先生还维护着一个名为 "Parse-Evtx" 的解析器 Perl 实现。我在开发 python-evtx 时广泛参考了该库的源代码。 Joachim Metz 于 2011 年也发布了一个跨平台的、基于 LGPL 许可的 C++ 解析器。他的文档 "Windows XML Event Log (EVTX): Analysis of EVTX" 提供了较新事件日志文件的结构与上下文的详细描述。 ## 依赖 python-evtx 是一个纯 Python 3 模块,因此在 Windows、macOS 和 Linux 等平台上都能良好运行。 python-evtx 操作的是 Windows 操作系统 Vista 之后版本的事件日志文件。这些文件的扩展名通常为 .evtx。`file` 工具的 5.09 版本会将此类文件识别为 "MS Vista Windows Event Log"。若要手动确认文件类型,请查找前七个字节中的 ASCII 字符串 "ElfFile": ``` willi/evtx » xxd -l 32 Security.evtx 0000000: 456c 6646 696c 6500 0000 0000 0000 0000 ElfFile......... 0000010: d300 0000 0000 0000 375e 0000 0000 0000 ........7^...... ``` ## 示例 随解析模块 `Evtx` 一起提供了四个脚本,其功能模仿 Parse-Evtx 分发的工具。`evtx_info.py` 打印事件日志的元数据并验证每个块的校验和。`evtx_templates.py` 构建并打印整个事件日志中使用的模板。`evtx_dump.py` 解析事件日志并将二进制 XML 转换为人类可读的 ASCII XML 格式。最后,`evtx_dump_json.py` 解析事件日志(类似于 `evtx_dump.py`),并将二进制 XML 转换为 JSON,同时支持将 JSON 数组输出到文件。 请注意 `evtx_dump.py` 脚本的长度:它仅有 20 行。现在,查看其内容并注意完整实现的逻辑: ``` print(e_views.XML_HEADER) print('') for record in log.records: print(record.xml()) print('') ``` 使用 python-evtx 真的很简单! ## 安装 对 python-evtx 的更新会推送到 PyPi,因此你可以使用 `pip` 安装该模块。例如: ``` pip install python-evtx ``` python-evtx 的源代码托管在 Github 上,你可以下载、分叉并从该仓库(http://www.github.com/williballenthin/python-evtx)审查它。请通过项目的 Github 问题跟踪器报告问题或功能请求。 ## 开发 关于格式化,请使用 isort: ``` isort --length-sort --profile black --line-length=120 Evtx/ scripts/ tests/ ``` 以及 black: ``` black --line-length=120 Evtx/ scripts/ tests/ ``` 关于代码检查,请使用 ruff: ``` ruff check Evtx/ scripts/ tests/ ``` 或者使用 [just](https://github.com/casey/just) 运行检查器: ``` just lint ``` ## 许可证 python-evtx 根据 Apache License, Version 2.0 授权。这意味着它可用于个人与专业用途的自由使用与修改。
标签:.evtx, EVTX解析, python, Windows 7, Windows Vista, Windows事件日志, 事件日志解析, 事件条目, 二进制XML, 取证工具, 文件格式解析, 日志取证, 日志处理, 日志头解析, 日志查看, 日志结构解析, 日志解析, 日志解析库, 日志逆向, 纯Python, 记录模板, 证书伪造, 跨平台解析, 逆向工具