dfirvault/NGINX_Parser
GitHub: dfirvault/NGINX_Parser
一款用于 DFIR 调查的多线程 NGINX 日志合并工具,支持递归扫描并自动解压 .xz 文件,按 access、error、ssl 三类日志分别合并输出。
Stars: 1 | Forks: 0
🧰 日志合并工具
一款快速、多线程的 Python 脚本,可递归扫描文件夹中的 Web 服务器日志(access、error、ssl)——包括 .log 和 .xz 压缩文件——并按类型将它们合并到一个整洁、有序的输出目录中。
.xz 扩展名通常用于 NGINX 环境中预压缩的日志文件。在 DFIR 调查期间,这些文件通常是你仅有的数据。此工具会自动检测并在内存中解压 .xz 文件,让你能够立即解析并合并日志,生成可搜索、易读的文本文件。
然后,你可以将合并后的日志索引到你喜欢的分析工具中——我推荐使用 Splunk。
📸 示例
输入 —— 原始日志(包含 .xz):

输出 —— 整洁的合并文件:

简单、单一文件即可轻松处理:
✨ 功能
🔍 根据文件名自动检测 access、error 和 ssl 日志
📦 同时支持普通的 .log 和压缩的 .xz 文件
⚡ 采用多线程处理,速度极快
🗂️ 在输出中保留原始子文件夹结构
🧑💻 简单的交互式 CLI —— 无需任何参数
🧱 无外部依赖 —— 纯 Python 编写
📌 重要行为 – 日志检测逻辑
该脚本根据文件名中是否包含关键字来匹配文件,而不是依赖严格的命名规范。例如:
像 `access.log`、`access.log-20250623`、`broadway_access_20250623.xz` 这样的文件都会被识别为 access 日志
同样地,任何文件名中带有 error 或 ssl 的文件都会被相应匹配
这种灵活的匹配方式确保了与大多数轮转或归档日志命名方案的兼容性。
📂 示例结构
输入目录 (/logs):
/logs
├── site1
│ ├── access.log
│ ├── error.log
│ ├── access.log-20250623.xz
│ └── access.log-20250624.xz
├── site2
│ ├── ssl.log
│ └── error.log
输出目录 (/combined_logs):
/combined_logs
├── site1
│ ├── combined-access.log
│ ├── combined-error.log
├── site2
│ ├── combined-ssl.log
│ ├── combined-error.log
🚀 如何使用
运行脚本:
python NGINX_Parser.py
出现提示时:
输入包含日志的输入目录
输入用于存放合并日志的输出目录
完成!该工具将按类型处理并将日志合并到输出目录中。
🛠️ 工作原理
📛 扫描文件名中的关键字:
"access" → Access 日志
"error" → Error 日志
"ssl" → SSL 日志
🧩 使用 Python 内置的 lzma 模块在内存中解压 .xz 文件
📝 所有匹配的文件按类型分组,并写入:
combined-access.log
combined-error.log
combined-ssl.log
🧪 环境要求
Python 3.7 或更高版本
无额外依赖(100% 标准库)
📄 许可证
该项目基于 MIT License 授权。
👨💻 由 Jacob Wilson 开发 – [https://dfirvault.com](https://dfirvault.com)
💬 随时欢迎反馈、Fork 和 Pull Request!
标签:NGINX, Python, 代码示例, 恶意活动检测, 数字取证, 数字取证, 数据分析, 无后门, 日志处理, 自动化脚本, 自动化脚本, 逆向工具