为什么写这个工具
做 CTF 或者安全分析时,经常会遇到这种情况:
拿到一串字符 U0dWc2JIOD0=,不确定是什么编码,打开 CyberChef,试 Base64,解出来还是乱的,再试一次,才发现是双层 Base64。
整个过程费时费力,而且 CyberChef 要开浏览器,不方便集成进脚本。
所以我写了 AutoCyberChef,一个纯命令行的轻量编码检测 + 解码工具。
核心功能
1. 自动识别编码类型
$ python main.py detect SGVsbG8=
Possible encodings:
- Base64
支持识别:Base64、Base32、Hex、Binary、URL Encoding、HTML Entities、ROT13、Morse Code、Caesar Cipher
2. 自动多层解码
$ python main.py auto U0dWc2JIOD0=
Layer 1: [Base64] → SGVsbG8=
Layer 2: [Base64] → Hello
Final result: Hello
最多支持 10 层嵌套,自动循环检测 → 解码,直到拿到明文。
3. 交互式 Shell
$ python main.py shell
autochef > decode 48656c6c6f -e hex
Encoding: hex
Result: Hello
autochef > detect ".... . .-.. .-.. ---"
Possible encodings:
- Morse
autochef > history
autochef > exit
支持 ↑↓ 方向键翻历史命令,适合连续操作场景。
4. 批量解码文件
$ python main.py decode-file encoded.txt
Hello
Hello
HELLO
Processed 3 line(s): 3 decoded, 0 failed
5. 暴力模式 + 置信度评分
$ python main.py brute "Uryyb Jbeyq"
✓ ROT13 Hello World
✓ Caesar Hello World
$ python main.py detect SGVsbG8= --confidence
Base64 ████████████████████ 95.0%
ROT13 ██████░░░░░░░░░░░░░░ 30.0%
技术实现亮点
编码检测的几个细节:
- Base64 / Hex / Binary 用正则 + 字符集判断 + 解码验证三重校验,误判率很低
- ROT13 / Caesar 用字母频率分析 + 英语词汇表打分,短字符串也能准确识别
- 多层解码有死循环保护(结果重复检测)和可读性评分(printability score),防止乱码被当成"成功解码"
项目结构:
autochef/
├── detector.py # 编码识别(正则 + 启发式 + 置信度评分)
├── decoder.py # 各格式解码实现
├── pipeline.py # 多层自动解码编排
├── file_handler.py # 批量文件处理
└── utils.py # 公共工具(熵值、可读性评分、字符串分析)
84 个单元测试,覆盖所有模块。
安装和使用
git clone https://github.com/norniy/auto-cyberchef
cd auto-cyberchef
pip install -r requirements.txt # 只有 pytest,标准库不需要装
python main.py shell
Python 3.9+,无复杂依赖。
和 CyberChef / Ciphey 的区别
| AutoCyberChef | CyberChef | Ciphey | |
|---|---|---|---|
| 运行方式 | 命令行 / Python库 | 浏览器 | 命令行 |
| 依赖 | 仅标准库 | 无需安装 | 需要 Python ML 库 |
| 可脚本集成 | ✅ | ❌ | ✅ |
| 交互式Shell | ✅ | ❌ | ❌ |
| 安装复杂度 | 极低 | 极低 | 较高 |
GitHub 地址:github.com/norniy/auto…
欢迎 Star ⭐,有问题或建议欢迎提 Issue,也欢迎 PR 一起完善。