开源 | 用 Python 写了个 CTF 编码自动解码工具,支持多层嵌套 + 交互式 Shell

6 阅读2分钟

为什么写这个工具

做 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 的区别

AutoCyberChefCyberChefCiphey
运行方式命令行 / Python库浏览器命令行
依赖仅标准库无需安装需要 Python ML 库
可脚本集成
交互式Shell
安装复杂度极低极低较高

GitHub 地址:github.com/norniy/auto…

欢迎 Star ⭐,有问题或建议欢迎提 Issue,也欢迎 PR 一起完善。