mio-mio/ctf-triage-assistant
GitHub: mio-mio/ctf-triage-assistant
一款实验性的 CTF 题目初步检查 CLI 工具,自动化完成文件信息收集、字符串提取和 flag 模式搜索,并生成可复现的 Markdown 分析报告。
Stars: 0 | Forks: 0
# CTF Triage 助手
一款用于 CTF 题目初步检查的实验性 CLI 工具。
本项目是一个以学习为重点的工具,旨在帮助自动化 CTF 练习中重复的初步检查步骤。它会扫描题目文件夹,收集基本文件信息,提取可读字符串,搜索类似 flag 的模式,并生成可复现的 Markdown 分析报告。
## 目标
- 构建一个小型的人工干预(human-in-the-loop)安全学习工具
- 逐步扩展该工具,引入 LLM 辅助摘要和人工干预工作流
## 设计理念
本项目采用增量开发的方式。每个里程碑都侧重于一个微小且易于理解的改进,而不是从一开始就构建一个完全自动化的解题器。
## 当前功能
### Lv1:基础本地检查
- 交互式输入题目文件夹
- 读取 `description.txt`
- 读取一个目标文件:`files/challenge.txt`
- 使用正则表达式搜索类似 flag 的模式
- 运行基础检查命令:
- `file`
- `strings`
- 生成 Markdown 分析报告
### Lv2:更广泛的本地检查
- 支持 `files/` 下的多个文件
- 运行感知文件类型的检查命令
- 通过共享的辅助函数执行可复用的检查命令
- 在执行前检查外部命令是否可用
- 改进对文件或工具缺失的错误处理
- 生成带有时间戳的 Markdown 分析报告
### Lv3:报告与题目元数据改进
- 在 Markdown 报告中包含题目元数据和描述
- 存储命令执行结果,并使用独立的 status 和 text 字段
- 在报告中显示命令执行状态
- 移除重复的 flag 候选项,同时保留不同的候选项
- 跳过缺失或无效的元数据,而不中断分析过程
- 通过可复用的报告函数生成题目级别的报告部分
- 可选地在报告中包含来自 `metadata.json` 的题目信息
## 检查命令
当前版本支持:
- `file`
- `strings`
- `exiftool` *(图片)*
- `readelf -h` *(ELF)*
- `objdump -f` *(ELF)*
- `unzip -v` *(ZIP)*
## 当前限制
- 该工具一次只能分析一个题目目录。
- 感知文件类型的检查目前依赖于对 `file` 命令输出的简单匹配。
- 可选的检查工具必须单独安装。
- 该工具不会提交 flag,也不会与 CTF 平台进行交互。
- 当前版本使用交互式输入,而不是命令行参数。
## 使用方法
在项目根目录下运行脚本:
```
python3 ctf_assistant.py
```
出现提示时,输入题目文件夹路径:
```
examples/sample_challenge
```
预期的题目文件夹结构如下:
```
examples/sample_challenge/
description.txt
files/
challenge.txt
sample_code
image_with_flag.jpg
Letter_from_Lorem.txt
Letter_from_Lorem.txt.zip
```
报告文件名会包含题目名称和时间戳,例如:
```
reports/sample_challenge_20260713_153003.md
```
## 输出示例
可在以下位置查看生成的示例报告:
`reports/sample_report.md`
## 路线图
- [x] Lv1:基础本地分类
- [x] Lv2:更广泛的本地检查
- [x] Lv3:报告与题目元数据改进
- [ ] Lv4:LLM 辅助摘要
- [ ] Lv5:人工干预命令执行
- [ ] Lv6:可选的题目导入工作流
- [ ] Lv7:批量题目分析
## 注意事项
本项目仅用于 CTF 练习、赛后复盘以及经过授权的学习环境。
本项目有意保持工作流的简单性和交互性,以便在逐步添加新功能的同时,确保代码实现易于理解。该工具旨在辅助分析,而不是取代人类的判断。
标签:文档结构分析, 无线安全, 网络安全审计, 自动化分析, 跨站脚本, 逆向工具