PauliusPukinskas/CTF-Sloper
GitHub: PauliusPukinskas/CTF-Sloper
一款基于浏览器界面运行的本地 CTF 解题工作台,通过自动化提取和递归解码帮助选手快速解决隐写、取证和密码学等文件类挑战。
Stars: 7 | Forks: 0
# CTF Sloper
基于本地浏览器的 CTF 解题工作台,适用于文件类挑战:隐写、杂项、逆向工程、取证、密码学、PCAP、归档、图像、二进制文件、文档、音频、数据库以及生成的制品。
此仓库的结构设计允许其直接上传到 GitHub,并仍可通过一条命令在本地运行。
## 快速开始
```
git clone https://github.com/PauliusPukinskas/CTF-Sloper.git
cd CTF-Sloper
bash START_HERE.sh
```
然后打开:
```
http://127.0.0.1:7860
```
## 上传至 GitHub
阅读 [`GITHUB_UPLOAD.md`](GITHUB_UPLOAD.md),或使用:
```
cd ctf-sloper
bash scripts/git_init_upload.sh YOUR_GITHUB_USERNAME ctf-sloper
```
## 安装外部 CTF 工具
支持 **Ubuntu / Debian / Pop!\_OS** 和 **Arch Linux**
```
bash FULL_INSTALL.sh
```
这将安装常见的 CTF 工具,例如 `binwalk`、`exiftool`、`steghide`、`zsteg`、`tshark`、`qpdf`、`gdb`、`jadx`、OCR 工具,以及 Python/Ruby/Node 辅助包。
在 Arch Linux 上,AUR 包(`foremost`、`steghide`、`apktool`、`jadx` 等)需要 AUR 助手。如果你还没有安装:
```
git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
```
## 清晰的仓库结构
```
ctf-sloper/
├── README.md # Main project overview
├── GITHUB_UPLOAD.md # Step-by-step GitHub upload guide
├── START_HERE.sh # One-command local launcher
├── FULL_INSTALL.sh # Full system tool installer wrapper
├── app.py # Small runtime entrypoint
├── sloper_legacy.py # Legacy solver/app monolith kept for compatibility
├── sloper_v72/ # Modular solver/runtime layers
├── static/ # Browser UI
├── data/ # Tool catalogs, workflows, YARA/rules/configs
├── projects/ # Local generated projects; ignored by git
├── scripts/ # Start/check/package/upload helpers
├── docs/ # Architecture, usage, roadmap, changelog
├── tests/ # Lightweight smoke tests
├── .github/workflows/ # GitHub Actions check workflow
├── requirements.txt # Python runtime dependencies
├── pyproject.toml # Project metadata
├── Makefile # Short commands: make run/check/package
├── .gitignore # Keeps local artifacts/secrets out of commits
└── .gitattributes # Stable line endings and binary handling
```
## 常用命令
```
bash START_HERE.sh # run locally
bash scripts/check.sh # syntax/import checks
make run # same as START_HERE
make check # same as scripts/check.sh
make package # create zip/tar release from repo
```
## CTF 使用流程
1. 在浏览器 UI 中创建一个项目。
2. 上传该任务的所有挑战文件。
3. 首先查看排名靠前的发现。
4. 当 flag 不明显时,检查制品/转换/预览。
5. 将生成的挑战输出保留在 `projects/` 目录内;该文件夹会被 git 忽略。
## 重要安全提示
本工具仅供本地 CTF/实验室使用。请勿提交私有挑战文件、凭据、token、内存转储或来自真实比赛的生成制品。
## v110 重构 + 基准测试模式
此仓库不再将所有运行时代码保存在一个庞大的 `sloper_legacy.py` 文件中。
旧的单体文件已被拆分到 `sloper_legacy_parts/` 中,而 `sloper_legacy.py` 作为兼容性加载器保留。
新的改进应放入 `sloper_v72/` 或未来的 `core/` / `solvers/` 模块中。
运行回归基准测试:
```
python3 scripts/benchmark_solver.py
```
默认启用安全快速通道解题。仅针对旧引擎进行性能分析时:
```
SLOPER_ENABLE_LEGACY_DEEP=1 SLOPER_ENABLE_LEGACY_SUMMARY=1 bash START_HERE.sh
```
## v111:操作员控制的解题
此版本为 CTF 运行添加了真正的控制平面:
- 可选的 flag 格式:`ctf_cs{...}`、`ctf_cm{...}`、`flag{...}`、`picoCTF{...}`、`HTB{...}`、纯 `{...}`、任意前缀或自定义 regex;
- 攻击预设:quick(快速)、balanced(平衡)、deep(深度)、hardcore(硬核);
- 难度提示:easy(简单)、medium(中等)、hard(困难)、multi-step(多步骤);
- 每个项目的 solver 设置保存在 `project.json` 中;
- 更清晰的制品摘要和有界限的基准测试脚本。
运行本地回归基准测试:
```
python3 scripts/benchmark_solver.py
```
## 最终后端解题率提升
此构建保持前端不变,并改进了后端 solver 路径:
- 最终排名现在为每个候选保留证据效力最强的一行,因此早期微弱的
字符串命中无法掩盖后来解码/提取的制品证据;
- 经典密码学仅在类文本输入上运行,减少了二进制
容器产生的虚假 flag;
- `sloper.deep_workflows` 添加了有界递归解码、字节数组转换、
PNG/JPEG/WAV 提取、magic payload carving、ZIP 元数据通道,以及
项目级别的拼接/交错/XOR/ADD/SUB 工作流;
- `sloper.pattern_intelligence` 集成了 `data/ai_ctf_multistep_patterns.jsonl`
并写入 `pattern_hypotheses.json` 和 `workflow_queue.md` 制品,以便
即使未找到最终 flag,操作员也能跟进可能的 CTF 工作流;
- `scripts/benchmark_ai_pattern_corpus.py` 验证所有 3000 行工作流模式
并运行具有代表性的生成 solver 冒烟测试用例。
有用的后端检查:
```
python3 scripts/backend_guard_smoke.py
python3 scripts/benchmark_solver.py
python3 scripts/benchmark_extra_multistep.py
python3 scripts/benchmark_ai_pattern_corpus.py --solver-sample 20
```
## 后端可靠性防护
当前后端在 `sloper/backend_guard.py` 中包含了一个后期的运行时防护。
它保留了现有的 solver 栈,同时收紧了可能会
破坏真实 CTF 会话的高风险边缘:流式上传、项目 ID 验证、原始制品
路径包含、`events.log` 尾部追踪、原子 `report.json` 写入、ZIP
解压限制、自定义 regex 清理、安全的 `.pyc` 字符串提取,以及
阻止自动执行/追踪上传的二进制文件。最终排名
门控还同步了较旧的分流摘要,因此在发现更强的解码
制品后,元数据标签或陈旧的 ROT/路由噪声将不再作为首要候选。
针对本地 CTF writeup/挑战仓库运行公平的基准测试:
```
python3 scripts/benchmark_writeup_repo.py /path/to/CTF
```
## v112:整洁的 UI + 递归解码器基准测试
此版本添加了更整洁的、适配 GitHub 的 UI,并修复了几个控制平面 bug:
- 自定义 flag 格式现在通过 `/api/preferences` 持久化
- 每个 solver 项目的设置会被 fast-lane solver 遵循
- UI 标签页稳定,不再与隐藏面板不匹配
- `/` 重定向到 `/static/index.html`
- `/api/ui_health` 报告重复的路由问题
- 有界递归解码器涵盖 base64/base64url、hex、base32、base85、URL、HTML 实体、ROT、reverse、gzip/zlib/bz2/xz、十进制字节、二进制位、Morse 和小规模 XOR
运行本地检查:
```
bash scripts/check.sh
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python3 -m pytest -q
python3 scripts/benchmark_solver.py
```
最新合成基准测试:`15/15` 通过;参见 `docs/BENCHMARK_RESULTS_v112.json`。
## v113:竞赛证据 + 真实挑战基准测试
此版本在 v112 UI/解码器引擎之上添加了竞赛就绪层:
- 为每个候选 flag 提供排名证据:置信度、风险、判定、链路、原因和警告;
- 虚假/示例/诱饵 flag 降级,使得明显的误导信息不会排在解码证据之上;
- 针对类 ZIP/TAR/Office 容器、图像 LSB 通道、大小写位、空格/制表符位、零宽位、可打印字符串和 data URI payload 的有界提取器;
- 用于 CTF 任务文件夹的真实挑战包基准测试命令;
- UI flag 卡片现在显示置信度/风险/链路,而不仅仅是原始分数。
运行完整的本地验证:
```
bash scripts/check.sh
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python3 -m pytest -q
python3 scripts/benchmark_solver.py
```
对真实的本地挑战包进行基准测试:
```
python3 scripts/benchmark_challenge_pack.py /path/to/challenges \
--flag-format ctf_cs \
--attack-preset deep \
--difficulty multi_step \
--max-depth 5
```
参见 [`docs/COMPETITION_READINESS_v113.md`](docs/COMPETITION_READINESS_v113.md)。
## v114:前沿提取器 + 专门的取证层
v114 在 v113 之上添加了另一个竞赛强化层。它专为更困难的本地文件挑战而设计,这些挑战中的 flag 隐藏在容器、二进制转换、文档格式或视觉/音频侧信道之后。
v114 的新增内容:
- 具有显式转换链的递归 payload 前沿;
- 在纯文本快速通道之外进行 gzip/bz2/xz/zlib/raw-zlib 剥离;
- 针对类 flag 解码 payload 的单字节 XOR 恢复;
- 针对 `.docx`、`.xlsx` 和 `.pptx` XML 文本片段的 Office ZIP 文本规范化;
- SQLite 只读表/文本提取;
- PNG `tEXt`/`iTXt`/`zTXt`/辅助块提取;
- WAV PCM LSB 通道提取;
- 用于快速视觉隐写审查的图像位平面预览制品;
- UI 中的 v114 操作员分流:最佳 flag、置信度、风险桶、制品种类计数;
- 挑战包基准测试现在同时写入 JSON 和 HTML 报告。
运行验证:
```
bash scripts/check.sh
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python3 -m pytest -q
python3 scripts/benchmark_solver.py
```
对真实的本地挑战包进行基准测试并获取 HTML 报告:
```
python3 scripts/benchmark_challenge_pack.py /path/to/challenges \
--flag-format ctf_cs \
--attack-preset deep \
--difficulty multi_step \
--max-depth 6 \
--out docs/CHALLENGE_PACK_BENCHMARK_v114.json \
--html-out docs/CHALLENGE_PACK_BENCHMARK_v114.html
```
参见 [`docs/COMPETITION_READINESS_v114.md`](docs/COMPETITION_READINESS_v114.md)。
验证说明:参见 [`docs/VALIDATION_v114.md`](docs/VALIDATION_v114.md)。
## v115:广泛提取器 + 实时分流升级
此版本在 v114 之上添加了更广泛的竞赛层:
- 跨通道顺序、位位置和像素顺序的深度图像 LSB 提取;
- PDF 流/字符串提取,包括 FlateDecode 流;
- JPEG/GIF 元数据和注释;
- 经典 PCAP 数据包 payload 提取;
- 从本地字符串和挑战名称动态重试 ZIP 密码;
- 针对 data URI、base85/ascii85、quoted-printable 和 uuencode 的 token 恢复;
- v115 可信/有前途/手动分流桶和操作员 playbook 制品。
运行本地验证:
```
bash scripts/check.sh
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python3 -m pytest -q
python3 scripts/benchmark_challenge_pack.py /path/to/challenges --flag-format ctf_cs --attack-preset deep --difficulty multi_step --max-depth 6
```
## v116:Cyber Sprint 基准测试强化
此更新为立陶宛 Cyber Sprint 风格的包添加了一个新的有界纯本地竞赛层:
- 针对 gzip/tar/zip 的递归 payload 前沿,以及在图像或磁盘转储内提取的 ZIP/OOXML;
- Morse 解码和 Morse 派生的归档密码,包括立陶宛语密码变体;
- 短密码文本文件的矩形/路由置换恢复;
- 针对成对挑战文件的兄弟感知 message+key 工作流;
- pcapng 原始 IPv4 payload、IP-ID 和 TTL 通道提取;
- pyc 常量/反汇编提取以及 ELF/PE 静态字符串证据;
- v114 分流降级了短 XOR/非 ASCII/模板虚假 flag。
Cyber Sprint 包基准测试命令:
```
python3 scripts/benchmark_challenge_pack.py "/path/to/Cyber Sprint 2026 1 etapas" \
--recursive-leaves \
--flag-format ctf_cs \
--attack-preset deep \
--difficulty multi_step \
--max-depth 6 \
--out docs/CYBER_SPRINT_2026_STAGE1_v116.json \
--html-out docs/CYBER_SPRINT_2026_STAGE1_v116.html
```
## v117:真实语料库基准测试和分流强化
v117 侧重于在真实 CTF 包上的可靠性,而不仅仅是合成环境下的胜利:
- 硬隔离的基准测试运行器,具有每个挑战子进程/进程组的超时机制;
- 分块基准测试 flag:`--offset`、`--limit`、`--only-regex` 和 `--merge-existing`,适用于大型包;
- 任务说明抑制,使得像 `Vėliavėlės formatas ctf_cs{...}` 这样的指令不再成为虚假 flag;
- 对于要求提供解码消息哈希的任务,进行 Cardan/grille SHA256 提升;
- v117 分流降级了时间戳、元数据 ID、占位符和中间路由文本;
- 用于时间日志异常提取、制品日志重建、EXIF/GPS 提取、ZIP 照片包和 PCAP HTTP/域名文本的新真实语料库路由。
推荐的真实包基准测试:
```
python3 scripts/benchmark_challenge_pack.py "/path/to/Cyber Sprint 2026 1 etapas" \
--recursive-leaves \
--flag-format ctf_cs \
--attack-preset deep \
--difficulty multi_step \
--max-depth 6 \
--per-challenge-timeout 20 \
--out docs/REAL_PACK_v117.json \
--html-out docs/REAL_PACK_v117.html
```
对于大型包,分块运行并合并:
```
python3 scripts/benchmark_challenge_pack.py /path/to/pack --recursive-leaves --offset 0 --limit 6 --merge-existing --out docs/REAL_PACK_v117.json
python3 scripts/benchmark_challenge_pack.py /path/to/pack --recursive-leaves --offset 6 --limit 6 --merge-existing --out docs/REAL_PACK_v117.json
python3 scripts/benchmark_challenge_pack.py /path/to/pack --recursive-leaves --offset 12 --limit 6 --merge-existing --out docs/REAL_PACK_v117.json
```
标签:CTF工具, 云资产清单, 取证, 域环境安全, 多模态安全, 安全, 密码学, 应用安全, 手动系统调用, 数据可视化, 漏洞搜索, 超时处理, 逆向工具, 逆向工程, 隐写术