Ciphey:下一代自动化密文/编码/Hash 识别与解密引擎深度解析
项目概览
Ciphey 是一款自动化解密引擎——你输入一段不知道用了什么算法加密或编码的字符串,Ciphey 会自动尝试所有可能的解密路径,最终输出明文。
传统工具需要你知道数据是 Base64、Caesar 还是 AES,然后手动选择合适的工具。Ciphey 颠覆了这种模式:不需要知道密钥,不需要知道加密算法,只需要输入密文。
| 指标 | 数据 |
|---|---|
| 仓库 | https://github.com/bee-san/Ciphey |
| Stars | 21,442 |
| Forks | 1,439 |
| 编程语言 | Rust |
| 开源协议 | MIT |
| 创建时间 | 2019-07-16 |
| 当前版本 | v5.3.3 |
| 解码器数量 | 23 种 |
| 单元测试 | 120+ |
⚠️ 本文介绍的是下一代 ciphey(Rust 实现,仓库 bee-san/Ciphey),而非旧版 Ciphey(Python 实现,仓库 Ciphey/Ciphey)。新版本速度提升约 7 倍,支持多线程和更好的搜索算法。
一、核心架构与解码流水线
1.1 系统流程图
输入密文
│
├─→ Level 1: 快速解码器(Base64 / Hex / URL 等)
│ ↓
├─→ Level 2: 常规解码器(Caesar / Atbash / RO T47 / Binary 等)
│ ↓
├─→ Level 3: 复杂解码器(Vigenere / 多项式替换 / 键盘密码等)
│ ↓
└─→ 明文检测器(BERT + 三字母/四字母频率 + 英语字典 + 500+ 正则规则)
│
├─→ 匹配 → 反馈寻找到的路径给 A* 搜索
│
└─→ 不匹配 → A* 搜索选择下一个分支继续
1.2 A* 搜索驱动的解密路径寻优
Ciphey 的核心创新之一是使用 A* 搜索算法来指导解密路径选择,而非暴力遍历所有组合。其搜索策略包括:
- 启发式评估:使用
cipher_identifier估算当前字符串属于某种密文的概率 - 快速解码器优先:对 Base64 等极快解码器忽略启发式,优先执行
- 动态优先级:持续记录各解码器的历史成功率,动态调整优先级(如 Caesar 比 Beaufort 更常见,优先级更高)
- 热门配对缓存:记录常见配对(如 Base64 → Base64 的嵌套非常常见),优先走这些路径
- 路径缓存:缓存已计算过的解密路径,避免重复搜索
- 搜索树剪枝:当搜索空间过大时剪枝,控制内存使用
- 统计数据库:持久化存储解码器统计信息,持续优化长期表现
这种搜索策略意味着 Ciphey 的解密速度远快于暴力深度优先搜索——对于每 1 次旧版 Ciphey 的解密,新版本可以完成约 7 次。
1.3 三层明文检测体系
Ciphey 的明文检测系统是判断解密是否成功的关键,由三层构成:
| 检测层 | 技术 | 说明 |
|---|---|---|
| 统计层 | Quadgram / Trigram 频率 + 英语词典 | 计算字符串的 n-gram 频率得分,判定是否像自然语言 |
| 规则层 | 500+ 正则表达式 | 识别 API Key、MAC 地址、IP 地址、Email 等结构化数据 |
| AI 层(可选) | BERT 模型(gibberish-or-not) | 准确率提升约 40%,需 Hugging Face 账户下载 500MB 模型 |
明文检测的灵敏度可根据解码器类型调整:Caesar 等古典密码使用 Low 灵敏度(结果必须”很像英语”),Base64 等编码使用 Medium 灵敏度。
二、支持的解密算法清单
Ciphey 当前内置 23 种解码器,覆盖编码、古典密码、现代密码和分析工具。以下是完整清单:
2.1 编码类
- Base32 解码
- Base58(Bitcoin 变体)解码
- Base58(Flickr 变体)解码
- Base58(Monero 变体)解码
- Base58(Ripple 变体)解码
- Base64 解码
- Base91 解码
- Base65536 解码
- Hexadecimal(十六进制)解码
- URL 编码解码
- Z85 解码
- Binary(二进制)解码
- Braille(盲文)解码
2.2 古典密码类
- Caesar 密码(凯撒密码)——移位替换密码,暴力穷举所有移位 + 频率分析
- Atbash 密码——字母表反转替换密码
- ROT47 密码——ASCII 可打印字符的 47 位循环移位
- Railfence 密码(栅栏密码)——按锯齿形排列文字再按行读取
- Vigenere 密码(维吉尼亚密码)——多表替换密码,使用最先进算法快速破解
- Morse Code(摩斯电码)——点划编码的识别与解码
- A1Z26 密码——字母替换为数字(A=1, B=2, … Z=26)
- Subtitution(通用替换密码)——通用的单表替换密码破解
2.3 特殊类
- Brainfuck 解释器——Brainfuck 语言的解释执行
- Reverse(字符串反转)——字符串字符顺序反转
- Citrix CTX1 解码——Citrix CTX1 编码的解码
2.4 搜索辅助
- LemmeKnow 集成——Rust 重写的 PyWhat,快 33 倍,用于识别字符串类型(IP 地址、API Key、MAC 地址等)
2.5 已规划但尚未实现的算法
根据项目路线图,以下算法正在添加中(持续增长中):
- Base85 / ASCII85 解码
- Base62 解码
- Base 系列更多变体
- 更多古典密码
三、核心性能优势
3.1 速度对比
| 维度 | Ciphey(旧版 Python) | ciphey(新版 Rust) |
|---|---|---|
| 单次解密耗时 | 基准 1x | ~0.14x(快 7 倍) |
| 并行能力 | 无(单线程) | Rayon 多线程原生支持 |
| 启动延迟 | Python 解释器加载 | Rust 原生二进制即时启动 |
| 解码器识别 | 依赖 AI 判断路径 | A* 搜索 + 动态优先级 |
3.2 多层级自动解密
Ciphey 支持多层级解码,即自动识别并处理嵌套编码。例如:
输入: "V2ViIEFwcGxpY2F0aW9u"
→ Base64 解码: "Web Application"(命中明文检测 → 停止)
输入: "Vm96IGV1IHF1ZSBhY2hvIG11aXRv"
→ Base64 解码: "Voz eu que acho muito"
→ 未命中英语检测(葡萄牙语)
→ Caesar 移位尝试 → 命中修复结果
输入: "3q2+7wHl4A=="
→ Base64 解码 → Hex 字节 → 非文本数据
→ 无明文命中
这种多层级递归解密的能力来源于 Ciphey 的时间限制机制——CLI 默认最多尝试 5 秒,Discord Bot 默认 10 秒,超时自动停止并报告失败。对比旧版 Ciphey 的”可能永远跑不完”问题,这是一个关键改进。
3.3 可配置的明文检测敏感度
不同的解码器对输出结果的明文检测使用不同的敏感度阈值:
| 敏感度 | 适用场景 | 说明 |
|---|---|---|
| Low | 古典密码(Caesar 等) | 要求输出非常”像英语” |
| Medium | 大部分编码 | 默认设置,平衡准确性 |
这一设计的合理性在于:Caesar 密码的解码结果应当是语法完整的英文句子,而 Base64 的解码结果可能是任意二进制数据。
四、应用场景
4.1 CTF(Capture The Flag)竞赛
CTF 中最常见的需求之一就是解析”不知道是什么的字符串”。Ciphey 可以将此类分析时间从分钟级缩短到秒级:
$ ciphey "ZmxhZ3tjaXBoZXJfcm9ja3N9"
→ flag{cipher_rocks}
典型的 CTF 题目中编码往往嵌套多层:Base64 → Hex → Caesar → ROT13 → 最终 Flag。Ciphey 自动完成全部路径解码。
4.2 渗透测试与红队
| 场景 | 描述 |
|---|---|
| 配置文件解密 | 从 Web 应用中提取的加密配置字符串,自动识别并解密 |
| 凭据提取 | 从转储文件中提取编码/加密的凭据 |
| 数据泄露分析 | 对泄露数据中的编码字段进行批量反解 |
| Token 识别 | 自动识别 JWT、API Key 等结构化认证数据 |
4.3 安全研究与逆向分析
| 场景 | 描述 |
|---|---|
| 协议逆向 | 分析未知二进制协议中的编码字段 |
| 恶意软件分析 | 对恶意软件中的混淆字符串进行自动化反混淆 |
| 流量分析 | 从网络流量日志中提取并解码异常编码的数据 |
4.4 数据恢复
| 场景 | 描述 |
|---|---|
| 编码损坏恢复 | 当只知道数据被编码但不确定具体编码方式时自动尝试 |
| CSV/日志中的数据字段 | 从结构化数据中提取并自动解码特定字段 |
4.5 开发调试
| 场景 | 描述 |
|---|---|
| API 响应调试 | 自动识别并解码 Base64/Hex 编码的 API 响应字段 |
| 加密方案验证 | 快速验证某段数据是否使用了特定编码/加密 |
五、部署方式
| 方式 | 说明 |
|---|---|
| Discord Bot | 加入 Discord 服务器,使用 $ciphey 命令。最简单的方式 |
| Cargo 安装 | cargo install ciphey → 命令行 ciphey |
| Docker | git clone → docker build . → docker run |
| CLI 直接运行 | 安装后支持标准输入和参数输入 |
CLI 使用示例:
# 直接输入字符串
ciphey "ZmxhZ3tjaXBoZXJfcm9ja3N9"
# 从标准输入
echo "ZmxhZ3tjaXBoZXJfcm9ja3N9" | ciphey
# 从文件输入
ciphey --file encoded.txt
# 启用 AI 增强明文检测(首次需下载 500MB BERT 模型)
ciphey --enable-enhanced-detection
# 设置超时时间(秒)
ciphey --timeout 10 "ZmxhZ3tjaXBoZXJfcm9ja3N9"
六、优劣势分析
| 优势 | 说明 |
|---|---|
| 全自动解密 | 不需要知道算法和密钥,输入密文即得明文 |
| Rust 原生实现 | 比旧版 Python 实现快约 7 倍,二进制体积小,启动零延迟 |
| A* 搜索寻优 | 非暴力遍历,启发式 + 动态优先级 + 搜索树剪枝,效率高 |
| BERT 增强明文检测 | 可选 AI 模型,准确率提升约 40% |
| 多线程原生支持 | 基于 Rayon 库,随解码器增多可横向扩展 |
| 多层级自动解密 | 支持嵌套编码的自动递归解码 |
| 500+ 正则规则 | 可识别 API Key、IP、Email 等结构化数据 |
| 可配置超时 | 防止无限运行 |
| 劣势 | 说明 |
|---|---|
| 不解决现代加密 | AES、RSA 等强加密不在支持范围内,无法解密未知 Key 的对称加密 |
| 解码器覆盖有限 | 当前 23 种解码器,相比 CyberChef 的 480+ 操作差距较大 |
| BERT 模型较大 | 500MB 模型需 Hugging Face 账户下载,非默认开启 |
| 对非英语文本支持有限 | 明文检测器和 n-gram 频率基于英语,中文/日文等语言效果差 |
| 长文本解密变慢 | A* 搜索 + 多层级递归在长文本上耗时增长 |
| 二进制数据误报 | 非文本二进制数据可能被误判为编码并尝试解密 |
| 注释和文档不完整 | 部分解码器缺少详细的技术文档和使用说明 |
七、技术启示
Ciphey 代表了密文分析领域的范式转变:从”手动识别 → 手动选择工具”到”自动识别 + 自动解密的智能化流水线”。
它背后的核心设计思路值得关注:
- 搜索策略比暴力更重要——用 A* 搜索 + 动态优先级代替深度优先遍历,是性能提升的关键
- 明文检测是解密的锚点——没有可靠的明文检测,解码路径就无法终止;三层检测体系(统计+规则+AI)的设计思路值得借鉴
- 解码器是独立可插拔的——每个解码器是一个独立模块,新增解码器的成本极低,生态可扩展
- 统计驱动优化——统计数据库记录了每个解码器的成功率,长期运行后解码路径选择越来越准
八、适合谁用
- CTF 选手——秒级解码嵌套编码字符串,节省大量手动尝试时间
- 渗透测试工程师——快速识别和解码配置文件、凭据中的编码数据
- 安全研究人员——逆向分析中的自动辅助解码工具
- 蓝队分析师——快速还原日志中编码的恶意 Payload
- 任何频繁遇到”不知道是什么编码”的人——把数据扔给 Ciphey,让它自己猜
总结
Ciphey 是自动化密文分析领域的代表性工具。21,000+ Stars 的社区认可证明了它的价值:在安全分析中,”快速识别和解码未知格式的数据”是一个常见但极其耗时的步骤。
Ciphey 用 Rust 重新实现后,速度提升了约 7 倍,A* 搜索算法让解密路径选择更加智能,BERT 增强后的明文检测将准确率提升了约 40%。虽然它不能解密已知密钥的强加密(AES/RSA),但在编码解码和古典密码的自动化处理领域,Ciphey 是目前最优秀的工具之一。
如果说 CyberChef 是”你需要知道用什么工具,然后手动编排 Recipe”,那么 Ciphey 就是”把密文扔进去,它会自己想办法”。两者搭配使用——Ciphey 做自动发现和初步解密,CyberChef 做深入的手工分析——覆盖了从自动到手动、从快速到精细的全场景密文分析需求。
项目地址
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/bee-san/Ciphey |
| Discord | http://discord.skerritt.blog |
| 文档 | https://broadleaf-angora-7db.notion.site/Ciphey2-32d5eea5d38b40c5b95a9442b4425710 |
| 作者博客 | https://skerritt.blog/introducing-ciphey/ |
| 开源协议 | MIT |
参考资料
- GitHub 仓库:源代码、Issue、Milestones。→ https://github.com/bee-san/Ciphey
- 作者博文:Ciphey 设计思路和架构介绍。→ https://skerritt.blog/introducing-ciphey/
- LemmeKnow:Ciphey 集成的 Rust 版 PyWhat 识别引擎。→ https://github.com/swanandx/lemmeknow
- Old Ciphey:Ciphey 的旧版 Python 实现。→ https://github.com/Ciphey/Ciphey
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/sec/ciphey.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)