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, 取证, 无后门, 网络调试, 自动化, 逆向工具, 隐写术