Skip to content

eeeeett33/password

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto CTF Challenge Agent

这个项目把 CrewAI 模板改造成了一个密码学 CTF 出题 Agent。

机制与特点

本项目的核心机制不是“让大模型一次性直接出题”,而是把出题过程拆成一个可验收的多阶段工作流:challenge_designer 负责根据 flag 和需求文档生成题目与公开附件,writeup_reproducer 仅基于公开题包独立复现解题过程,validator_reviewer 再对题面、writeup 和恢复出的 flag 做最终审核。三者由 review_flow.py 中的 Flow 统一调度,失败时会根据原因选择“整轮重写”或“仅重做解题阶段”,以降低大模型幻觉导致的假题、错题和不可复现问题。

项目的另一个特点是把“提示词约束”和“代码硬校验”结合在一起。运行时会创建 author_workspacechallenge_workspacesolver_workspace 三个隔离工作区,并通过 Docker 中的代码解释器/Bash 工具限制不同 Agent 只能访问各自允许的目录,避免解题 Agent 直接读取出题私有材料。与此同时,quality_checks.py 会对公开区是否泄露明文 flag、题面是否真正落盘、创意基线是否过低、recovered_flag.txt 是否与目标 flag 完全一致等关键条件进行硬编码校验。也就是说,这个项目真正依赖的是“可执行、可验证、可回退”的机制设计,而不只是提示词本身。

输入

运行时仅保留少量命令行参数:

  • --flag:目标 flag(必填,格式必须是 flag{...}
  • --brief-md:Markdown 需求文档路径(默认 challenge_brief.md
  • --output-root:输出根目录(默认 outputs
  • --plot-flow:是否输出 Flow 可视化图

flag 外的业务需求(题型、难度、提示、创意强度等)统一写在 challenge_brief.md 的自由文本中,不要求固定字段格式。

输出

运行后会在 outputs/ 下自动创建唯一目录(例如 outputs/run_20260319_153012_a1b2c3d4/),避免重名。

该目录内会产生:

  • challenge.md:题目说明、密文或加密文件信息、提示、出题备注
  • writeup.md:完整解题 writeup,要求可执行且可复现
  • 题目附件(密文/加密文件)
  • 复现环境文件(默认要求 Python + uv,例如 pyproject.tomlREADME-repro.md、解题脚本)

任务配置要求 Agent 使用代码解释器执行和验证流程,确保最终可复现到输入的 flag。

示例

python src/CTF-agent/main.py \
	--flag "flag{Gzl1-Su33ess}" \
	--brief-md challenge_brief.md \
	--output-root outputs

运行结束后,终端会打印本次唯一输出目录路径。

依赖

你需要在环境中安装 CrewAI 相关依赖后再运行。若看到 ModuleNotFoundError: No module named 'crewai',先安装 crewaicrewai-tools

推荐使用 uv 管理项目环境:

uv sync
uv run python src/CTF-agent/main.py --flag "flag{example_test_flag}" --brief-md challenge_brief.md

题目指定方式

  1. 直接用自然语言写需求,不要求固定格式。
  2. 运行命令时通过 --brief-md 指定文件路径(默认就是 challenge_brief.md)。
  3. flag 仍通过命令行参数 --flag 传入,且格式必须为 flag{...}

About

CTF Automatic Challenge Generator

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors