CTF-BTFly_CTF工具介绍
一题一容器!CTF-BTFly把AI解题做成可观察、可接管的桌面平台
桌面工作台 · Go控制平面 · Docker隔离沙箱 · 中文Writeup自动生成
—— 深度解析开源项目 CTF-BTFly
【配图:CTF-BTFly桌面端截图 / 系统架构图】
◆ ◇ ◆

◆ ◇ ◆
01 项目介绍 |
CTF-BTFly 到底是个什么东西? |
CTF-BTFly 是一个自动化 CTF 解题工作台。它把桌面 GUI、独立 Go 控制平面、Docker 隔离沙箱、Pi Agent 和模型网关组合在一起,为每道题提供可观察、可复现、可人工接管的自主分析环境。
它的定位不是“把题目贴给大模型聊一聊”,而是把完整解题链路工程化:创建题目、上传附件、选择题型、启动沙箱、让 Agent 执行工具、保存 Artifact、生成中文 WRITEUP.md,最后从固定章节提取已验证 Flag。
最关键的是 GUI 和高权限控制平面分离。前端负责管理和展示,daemon 负责 SQLite、Docker、任务状态机、模型凭据和 Agent 生命周期。即使 GUI 退出或隐藏,daemon 仍然可以继续管理任务。
▎核心亮点速览
▸ Wails + React桌面端:题目管理、状态展示、文件预览、Writeup和模型用量
▸ 独立Go daemon:GUI退出后仍可管理任务,控制面和展示面分离
▸ 一题一沙箱:每道题独立容器、工作区、Agent会话和短期模型Token
▸ 实时事件流:Agent消息、工具调用、stderr、沙箱状态和Flag候选统一记录
▸ 断线重放:SQLite持久事件 + WebSocket实时推送,前端可按sequence补齐历史
▸ 中文Writeup:强制生成可复现的中文题解和关键分析产物
💡 一句话理解 CTF-BTFly = 桌面CTF任务台 + Go控制平面 + Docker专项沙箱 + Pi Agent + 模型网关 不是只让AI想答案,而是把CTF解题过程变成可观察、可复盘、可接管的自动化流水线。 |
02 能力数据 |
README没有公开比赛成绩,但工程指标很扎实 |
我没有找到 CTF-BTFly 公开披露的比赛名次、解题率或第三方评测结果,所以这里不编造“实测战绩”。我们只放两条 README 里可核验的量化能力数据:
指标 | 数值 | 说明 |
题型覆盖 | 6类 | Web、Crypto、Pwn、Reverse、Forensics、Misc 六类专项 Docker 镜像 |
默认沙箱资源 | 4GiB / 4核 / 512PID | 每题沙箱默认内存、CPU配额和PID限制,适合受控执行与资源隔离 |
▎为什么这两个指标重要?
CTF自动化最怕两个问题:第一,所有题型塞进一个通用环境,工具混乱、依赖冲突;第二,AI可以随便跑命令,但没有边界、没有日志、没有成本记录。CTF-BTFly 正好在这两点上做了工程化处理。
▸ 六类专项镜像意味着不同题型走不同工具链:Web用扫描与请求工具,Pwn用GDB和pwntools,取证用binwalk、tshark、volatility等。
▸ 默认资源限制意味着每道题不是无限制乱跑,而是在可控容器里执行,便于隔离、观察和回收。
▸ 模型网关只把题目级短期Token交给容器,真实API Key留在daemon侧,降低凭据暴露面。
▸ Flag只从 WRITEUP.md 的“最终 Flag”章节代码块提取,避免AI聊天里随口猜flag造成误判。
03 使用场景 |
它能帮你干什么? |
CTF-BTFly 的优势不只是“自动解题”,更像一个面向 CTF 的安全实验工作台:任务、附件、沙箱、事件、产物、Writeup 都在同一个界面里被管理起来。
▎🏆 场景一:CTF比赛辅助解题
比赛中最直接的用法:创建题目,选择题型,上传附件,让对应专项沙箱启动 Pi Agent 分析。你可以在时间线里看它执行了什么命令、发现了什么线索、生成了哪些脚本和响应文件。
▸ Web题:Nmap、SQLMap、Gobuster、WhatWeb 等工具辅助探测
▸ Crypto题:John、gmpy2、PyCryptodome、SymPy、Z3 等组合分析
▸ Pwn题:GDB、QEMU、Pwntools、Ropper、Checksec 辅助调试利用
▸ Reverse题:Apktool、angr、GDB、Strace、Ltrace 做静态/动态分析
▸ Forensics/Misc:Binwalk、Tshark、Yara、Volatility、FFmpeg、ImageMagick、Steghide、ZBar 等覆盖常见附件题
▎🧪 场景二:赛后复盘与Writeup沉淀
很多自动化工具只给结果,CTF-BTFly 更强调过程沉淀。它会把 Agent 的分析过程、工具调用、产物文件和最终中文 WRITEUP.md 留下来,方便赛后整理题解。
▸ 从事件时间线复盘失败路径和关键转折点
▸ 从 artifacts 里找脚本、响应包、提取文件等证据
▸ 把自动生成的中文 Writeup 作为初稿,再人工修订发布
▎🔐 场景三:不可信附件的隔离分析
CTF题目附件可能包含恶意二进制、脚本或异常样本。CTF-BTFly 的一题一沙箱设计,让每道题都在独立容器和工作区里运行,宿主机目录只挂载当前题目工作区。
README 也明确建议:线上处理不可信题目时,普通题优先 gVisor/runsc,Pwn 优先 Kata Containers 或独立虚拟机。
▎📊 场景四:模型成本与任务状态管理
模型用量账本是这个项目里很实用的细节。它记录请求数、输入/输出/缓存/推理 Token,并支持按题目和日期聚合。对长期训练和比赛复盘来说,这比只看最终答案靠谱得多。
04 部署教程 |
手把手跑起来 |
CTF-BTFly 当前主要开发和验证平台是 Windows。要完整跑起来,需要 Go、Node.js、Docker、Wails v3 CLI,以及一个可用的 OpenAI-compatible 模型接口。
▎环境要求
▸ Go 1.26 —— 后端 daemon 与桌面程序构建
▸ Node.js 24+ 与 npm —— 前端依赖与构建
▸ Docker Desktop 或 Docker Engine —— 运行题型专项沙箱
▸ Wails v3 CLI —— 构建桌面应用
▸ OpenAI-compatible 模型接口 —— Pi Agent 调用模型
▸ Windows —— README 标注为当前主要开发和验证平台
▎第1步:安装前端依赖
git clone https://github.com/huihuilikaile/CTF-BTFly.git |
▎第2步:配置模型网关
在最终 CTF-BTFly.exe 所在目录创建 .env。开发构建默认产物在 bin/,因此通常创建 bin/.env:
CTF_UPSTREAM_MODEL_BASE_URL=https://your-openai-compatible-endpoint/v1 |
▎第3步:构建专项镜像
.\images\build.ps1 -Version 0.1.0 |
▎第4步:启动开发环境
# 构建独立 daemon |
▎第5步:构建桌面程序
wails3 build |
💡 使用流程小抄 新建题目 → 选择题型 → 上传附件 → 启动任务 → 观察时间线 → 查看Artifact → 下载中文Writeup → 提取最终Flag。 GUI会优先连接已有daemon;未检测到可用实例时,会自动启动同目录的ctfagent-daemon.exe。 |
⚠️ 风险警示 |
跑之前,这几件事必须知道 |
⚠️ 只能用于授权CTF与靶场 README 明确提醒:CTF-BTFly 只能用于明确授权的 CTF 题目、靶场和安全研究环境。 不要使用本项目扫描、测试或攻击未授权目标。 当前实现仍使用 Docker bridge 网络,尚未在网络层强制目标白名单,线上使用需额外隔离。 |
⚠️ 不要泄露题目附件、Flag和凭据 不要把比赛附件、Flag、凭据或私有数据上传到第三方服务。 .env 包含真实模型密钥,不要提交到 Git、复制进 Docker 镜像或放入题目工作区。 |
💬 写在最后 |
CTF解题工具正在从脚本集合变成工作台 |
CTF-BTFly 最值得关注的地方,不是某个单点功能,而是它把 CTF 解题做成了一套完整工作流。
传统做题时,我们往往在桌面、终端、浏览器、编辑器和笔记之间来回切换:附件放哪了?脚本跑过什么?模型花了多少?最后的 flag 是真的验证过,还是 AI 猜的?
CTF-BTFly 的答案是:把这些过程都纳入一个可观察、可复现、可接管的桌面工作台。Agent 可以自动干活,但人仍然可以随时看证据、补线索、接管任务。
这也许就是 AI 安全工具接下来最现实的形态:不是替代选手,而是把重复、繁琐、可记录的部分自动化,让人把精力放在判断和创造性突破上。
欢迎在评论区聊聊!觉得有用的话,点赞 + 在看 + 转发三连支持一下~
🔒 关注我,持续分享网安圈硬核干货
项目地址:github.com/huihuilikaile/CTF-BTFly

浙公网安备 33010602011771号