MyBurningToast/CTF-Triage-Tool

GitHub: MyBurningToast/CTF-Triage-Tool

一个面向 CTF 取证与隐写挑战的自动化初筛工具,批量调用常见取证工具并搜索 flag,帮助选手省去重复的手动初筛工作。

Stars: 0 | Forks: 0

# CTF Triage 工具 针对 CTF 取证 / 隐写挑战的自动化首轮分类工具。 将其指向某个文件或包含挑战文件的文件夹,它就会对每个文件运行一套标准的取证工具(`strings`、`exiftool`、`zsteg`、`steghide`、`zbarimg`,以及使用 `7z` 进行压缩包提取),并在所有工具的输出中搜索符合你目标格式的 flag。它的目的是帮你省下每个挑战最开始的五分钟,自动运行那些显而易见的工具。 ## 功能说明 对于每个文件,`ctf-triage-tool` 会: 1. 将文件复制到一个临时目录中 2. 通过 `file --mime-type` 识别真实的文件类型,如果扩展名错误则进行修复 3. 运行 `strings` 和 `exiftool`,并扫描输出以查找你的 flag 格式 4. 运行针对特定格式的工具: - PNG - `zsteg` - JPEG / BMP / WAV / AU - `steghide extract`(空密码) - PNG / JPEG - `zbarimg`(条形码/二维码提取) 5. 如果该文件是压缩包(zip、gzip、tar、7z、rar),则使用 `7z` 进行解压,并递归处理解压出的每一个文件(直到达到最大深度) 6. 最后报告找到的 flag ## 环境要求 - Python 3.9+ - `PATH` 中必须包含以下工具: - [`file`](https://man7.org/linux/man-pages/man1/file.1.html) - [`exiftool`](https://exiftool.org/) - [`zsteg`](https://github.com/zed-0xff/zsteg) - [`steghide`](http://steghide.sourceforge.net/) - [`zbarimg`](https://github.com/mchehab/zbar)(属于 `zbar-tools` 的一部分) - `7z` (`p7zip-full`) 在 Debian/Ubuntu(或 WSL2)上: ``` sudo apt install file exiftool steghide zbar-tools p7zip-full ruby-full gem install zsteg ``` ## 用法 ### 单个文件 ``` python main.py file -f challenge.png -F "flag" ``` 对 `challenge.png` 进行分类处理,搜索类似 `flag{...}` 的 flag ### 批量模式 ``` python main.py batch -d ./challenges -F "flag" ``` 将 `./challenges` 中的每一个顶层条目视为一个独立的挑战。将运行摘要写入 `results.txt`,并在结束时打印出来。 ### 参数标志 | Flag | 描述 | | ---------------- | ----------------------------------------------- | | `-f`, `--file` | 单个目标文件的路径(仅限 `file` 命令) | | `-d`, `--dir` | 挑战文件夹的路径(仅限 `batch` 命令) | | `-F`, `--format` | 要搜索的 flag 前缀,例如 `flag` 对应 `flag{...}` | ## Flag 检测 系统会在每个工具的输出中,以三种编码格式搜索 flag: - **纯文本 (Plain text)** - 直接对 `prefix{...}` 进行正则匹配 - **Hex 编码** - 匹配 `prefix{` 的 hex 字节并向前解码 - **Base64** - 查找符合 base64 特征的子字符串,对其进行解码并检查结果 ## 项目结构 ``` ctf-triage-tool/ ├── main.py # CLI entry point and triage logic ├── tests/ # sample challenge files for testing ├── scratch/ # created and cleaned up automatically at runtime └── results.txt # store any flags found for that run ``` ## AI 声明 `tests/` 中的 flag 是**使用 Claude AI 生成的**。 ## 注意事项 - 这是一个**首轮分类**工具,不能替代人工分析。它能搞定简单的问题,这样你就可以把时间花在真正需要投入精力的挑战上。祝 hacking 愉快 :)
标签:Python, 取证, 无后门, 网络调试, 自动化, 逆向工具, 隐写术