JerenzeLevi/QRPheonix

GitHub: JerenzeLevi/QRPheonix

一个模块化的二维码取证与恢复框架,能够自动诊断并修复扭曲损坏的二维码图像,递归解包嵌套 payload 直至成功解码。

Stars: 1 | Forks: 0

# QRPhoenix 一个模块化的二维码取证与恢复框架,专为 CTF、OSINT 和数字取证挑战而设计。它不仅能解码二维码——它还能假设图像已被故意扭曲(如旋转、反转、模糊、二值化等),并自动搜索使其能够再次被解码所需的转换方法。 ## 工作原理 1. **诊断**图像 (`core/analyzer.py`) —— 包括亮度、对比度、模糊度、反转可能性、旋转倾斜度、探测图形置信度。这些信号决定了优先尝试哪些修复方法。 2. **搜索**转换流水线 (`core/search.py`, `core/transforms.py`) —— 首先尝试单一修复(反转、旋转、二值化、CLAHE、降噪等),然后是小规模的多步骤组合。每次转换后都会尝试解码,一旦成功便立即停止。 3. **解码** (`core/decoders.py`) —— 使用 OpenCV 内置的 `QRCodeDetector`(始终可用);如果已安装 `pyzbar`,则会自动使用。 4. **解包 payload** (`core/payload.py`) —— 如果解码后的文本看起来像是 base64/base32/hex 而不是 flag,它会对其进行递归解码,包括从嵌入的 zip 压缩包中提取图像,并将其重新输入到搜索过程中(二维码 → base64 → zip → 图像 → 二维码 → flag)。 5. **报告** (`core/report.py`) —— 生成 JSON/Markdown 输出,包含成功的流水线、使用的解码器、尝试次数、耗时以及完整的解包路径。 ## 环境要求 ``` opencv-python numpy ``` 可选(自动检测,缺失时系统会自动降级处理): ``` pyzbar # extra decoder backend ``` ## 使用方法 ``` cd qr_framework python qrsolver.py path/to/challenge.png ``` 参数选项: ``` python qrsolver.py challenge.png --max-attempts 300 --time-budget 30 python qrsolver.py challenge.png --json out.json --md out.md ``` 你可以将挑战图像放在任意位置——它不需要存放在此代码库中;只需传入任意有效的路径即可。 ## 项目结构 ``` QRPhoenix/ ├── instruction.txt # original spec this framework was built from └── qr_framework/ ├── qrsolver.py # CLI entry point ├── core/ │ ├── analyzer.py # image diagnostics │ ├── transforms.py # composable image transforms │ ├── search.py # prioritized pipeline search + scoring │ ├── decoders.py # OpenCV / pyzbar decoder backends │ ├── payload.py # recursive payload unwrapping │ └── report.py # JSON / Markdown reporting ├── examples/ # sample challenge images (gitignored) └── reports/ # generated report output (gitignored) ``` ## 当前适用范围 已实现:旋转/镜像/反转/对比度/二值化/形态学/降噪转换、基于诊断的优先级排序、OpenCV + pyzbar 解码、递归 base64/base32/hex/ROT13 及 zip 嵌入图像的解包、JSON/MD 报告。 尚未实现:GUI、隐写术(LSB/位平面)提取、ML 超分辨率/去模糊、打乱图块拼图求解、PDF/SVG/动态 GIF 输入处理、以及超出 base64/hex/ROT13 范围的密码暴力破解。如果你想扩展功能,可以按照相同的插件式模式进行开发(在 `transforms.py` 中添加函数,或者在 `core/` 下添加新模块)。 ## 免责声明 本工具专为 CTF 竞赛、授权的安全研究以及数字取证教育而构建。并非所有被故意破坏的二维码都能恢复——如果超出了纠错容量或关键结构被移除,仅靠自动化是无法将其还原的。
标签:ESC4, OpenCV, OSINT, Python, 二维码, 图像处理, 数字取证, 无后门, 自动化脚本, 逆向工具