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 练习、赛后复盘以及经过授权的学习环境。 本项目有意保持工作流的简单性和交互性,以便在逐步添加新功能的同时,确保代码实现易于理解。该工具旨在辅助分析,而不是取代人类的判断。
标签:文档结构分析, 无线安全, 网络安全审计, 自动化分析, 跨站脚本, 逆向工具