# 小杰杰取证CTF工坊 **Repository Path**: fiagainster/xjj-forensics-ctf ## Basic Information - **Project Name**: 小杰杰取证CTF工坊 - **Description**: 小杰杰取证CTF工坊是一个面向「人 + 多个智能体」协同作战的取证与 CTF 比赛协作库,用「一题一主、进度只认两处、经验只进经验库」三条铁律,杜绝同一道题被反复做、或谁都没碰的重复劳动,让每一次认领、每一步进度、每一条可迁移的手法都被所有人看见——比赛现场并行推进,赛后经验持续沉淀,真正做到人机同场、各司其职、进度透明。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-10-07 - **Last Updated**: 2026-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小杰杰取证CTF工坊 · AI 时代协作库 > 一个给「人 + 多个智能体」一起打取证/CTF 比赛用的协作仓库。 > 目标只有一个:**杜绝重复劳动,让每一分进度都被所有人看见。** > 🤖 **智能体进场:先读 [`AGENTS.md`](AGENTS.md)** —— 那是面向智能体的入口契约 > (启动顺序 + 硬规则);机读经验索引在 [`经验库/INDEX.json`](经验库/INDEX.json)。人类读者继续往下读。 --- ## 一、我们到底在解决什么问题 AI 时代打比赛的痛点是:**每个智能体都扫得飞快,但彼此不知道对方在干什么**, 于是同一道题被三个人做了三遍,或者一道题谁都没碰。 本仓库用三条铁律把这件事按住: 1. **一题一主** —— 同一时刻,一个题号只有**一个**负责人(人或智能体)。认领即上锁。 2. **进度只认两处** —— 比赛内的进度只写进 `比赛/<某场>/进度日志.md`(追加)和 `分工与进度.md`(汇总); 除此之外的地方写了不算数。 3. **经验只进经验库** —— 一场比赛里提炼出的**通用手法**才进 `经验库/`; 一场比赛的具体答案、flag、检材细节,留在那场比赛的文件夹里,不污染经验库。 --- ## 二、目录导航 ``` 小杰杰取证CTF工坊/ ├─ README.md ← 你正在读的这份;仓库定位与导航 ├─ AGENTS.md ← 【智能体入口】启动顺序 + 硬规则(进仓先读) ├─ CONTRIBUTING.md ← 贡献指南(人 / 智能体) ├─ 协作机制/ ← 【灵魂】智能体/人怎么进场、认领、报进度、提交 │ ├─ 智能体上手指南.md ← 任何智能体开赛前必读 │ ├─ 认领与交接规则.md ← 一题一主、上锁、门锁(密钥等)交接 │ ├─ 进度看板.md ← 全局总览,一眼看清在打什么、进度到哪 │ ├─ 提交与命名规范.md ← 分支/提交信息/大文件约定 │ └─ 经验库维护.md ← 分类约定 + 怎么加 skill + 生成物规则 ├─ 经验库/ ← 【经验】跨比赛复用的手法(按解算机制分类) │ ├─ README.md / INDEX.json ← 总索引(人读 / 机读,自动生成) │ ├─ _模板/SKILL.md ← 新 skill 起步模板 │ ├─ 取证/ ← 总纲 / 磁盘与卷 / 内存与注册表 / 流量与日志 / 移动与固件 / 应用与服务 / 二进制与加密材料 / 图像与编码 / 链上货币 │ ├─ CTF/ ← 总纲 / web / crypto / reverse / pwn / misc / forensics / osint / ai-ml / malware / 应急响应 / 小专题 │ └─ 通用方法/ ← 经验固化 / WP写作 / 安全执行 / 环境与工具链 ├─ 比赛/ ← 【一次比赛一个文件夹】 │ ├─ _模板/ ← 复制它开新比赛(别直接改模板) │ └─ 2026-XX_比赛名/ ├─ .githooks/ ← 仓库内共享 git 钩子(每个 clone 跑 scripts/install_hooks.py 安装) ├─ scripts/ ← 开新场 / 开题 / status.py / task_done.py / check_repo.py / 钩子安装 └─ 归档/ ← 打完的比赛移进来,保持根目录清爽 ``` --- ## 三、30 秒上手 ### 你是人 1. 读 `协作机制/进度看板.md` 看现在在打什么。 2. 进对应 `比赛/<某场>/`,看 `分工与进度.md` 谁在做什么(最新状态跑 `python3 scripts/status.py <场> --stdout`)。 3. 要认领一道题 → 按 `认领与交接规则.md` 操作;手工追一行到 `进度日志/<你的名字>.md`。 ### 你是智能体(任何智能体) **开赛第一件事:加载 `协作机制/智能体上手指南.md`,严格照做。** ```bash python3 scripts/install_hooks.py --owner <人>- # 每个 clone 一次:装钩子 + 记名 + 自动 push ``` 一句话版:`进场 → 读看板&分工 → task_done.py 认领 → 只写自己题目目录 → task_done.py 完成 → 自动同步`。 钩子只是安全网;**解完题不 commit,钩子不会跑**,所以最终用 `task_done.py` 走完最后一公里。 --- ## 四、开一场新比赛(4 步) 1. 复制 `比赛/_模板/` 为 `比赛/YYYY-MM_比赛名/`。 2. 填 `README.md`(比赛信息、链接、赛制、队伍与智能体名单)。 3. 把检材信息登记进 `检材清单.md`(**检材文件本身不进 git**,只记路径/哈希)。 4. 赛前/开赛按 `_模板/分工与进度.md` 起草分工,每人/每智能体认领自己的题串。 **个人赛(N=1)也照做**:角色全兼,题卡 + 日志 + 一链一提交保留;详见《智能体上手指南》§6.5。 > 检材、大镜像、产出物请放在共享盘或对象存储,仓库只留**路径 + 哈希 + 结论**。 --- ## 五、打完一场之后 1. 把该场比赛的 `复盘.md` 写掉(得分/墙钟、哪些该秒没秒、哪些坑烧了时间)。 2. 把其中**可迁移的通用手法**提炼进 `经验库/`(见 `通用方法/experience-consolidation`)。 3. 把整场文件夹移到 `归档/`。 --- ## 六、经验库怎么用、怎么维护 - **智能体路由**:读 `经验库/INDEX.json`(机读索引:name/category/path/description/tags)或 `经验库/README.md`(人读)。 - **检索优先**:判定一个结论前,先 `grep -r "关键词" 经验库/` 或按目录找,别只凭记忆。 - **写新经验**:新手法 → 新建 `经验库/<大类>/<子类>//SKILL.md`, 格式遵循「触发条件 → 编号步骤(确切命令) → 坑 → 验证」,并挂进本目录的分类索引。 - **保持通用**:SKILL.md 只放**可迁移的规则**;这一次的具体答案值(哈希/密钥/域名/UUID/偏移) 一律放进该 skill 的 `references/`,正文保持"换个案例照样成立"。 - **不写具体智能体/本机**:SKILL.md 不写智能体产品名、`skill_view`/`vision_analyze` 这类调用语法、 本机绝对路径/主机名/版本号;这些进 `references/`(或单独的环境文档)。 领域工具名(tshark/vol3/docker)可以留。自检:`python3 scripts/check_repo.py --generic`。 --- ## 七、智能体元数据约定(平台中立) `经验库/` 里每个 skill 的 `SKILL.md` 采用**中立 frontmatter**,任何智能体都能读: ```yaml --- name: description: <一句话触发句,≤60 字符> tags: [..] related: [其他 skill 名] --- ``` 刻意**不带任何厂商专有字段**,任何智能体均可直接加载;正文也不绑定某个具体智能体的调用方式。