密码类型识别器
在 CTF 题目、日志文件或旧文档里发现一段可疑字符串,不知道是 Base64、hex、二进制、摩斯电码还是其他?粘贴文本,识别器会检查字符集和结构,给出最可能的编码和密码排名。在动用专门的解码器之前,这是一个不错的第一步。
识别器的工作原理
-
1
粘贴密文
任意长度。非常短的字符串(<20 字符)信号较弱;较长的文本能给出更稳的分类结果。
-
2
字符集分析
字母、数字和符号的分布可以缩小候选范围(全是 hex、全是 base64 字母表、全是大写拉丁字母等)。
-
3
签名匹配
长度规则(偶数位 hex、base64 每 4 个一组、哈希为 32/40/64 位 hex)、分隔符(JWT 的点、摩斯的点和横线)以及常见前缀(eyJ、$2b$)会与已知签名比对。
-
4
给出排名候选
所有匹配的候选按置信度排序并以百分比显示,方便你决定先试哪个解码器。
识别启发式
| 线索 | 可能的密码 / 编码 |
|---|---|
仅含 A-Z a-z 0-9 + / =,长度是 4 的倍数 |
Base64 |
仅含 0-9 a-f,长度为偶数 |
Hex |
仅含 0-1,8 位或更多 |
二进制 |
| 只有点、横线、斜杠和空格 | 摩斯电码 |
| 仅大写拉丁字母,5 个以上 | 凯撒或替换密码 |
| 20 个以上拉丁字母,无空格 | 单表替换密码 |
| 大小写混合的拉丁字母 | 纯文本,很可能不是密码 |
三个点分隔的片段,以 eyJ 开头 |
JWT 令牌 |
以 $2a$、$2b$ 或 $2y$ 开头 |
bcrypt 哈希 |
| 恰好 32 个 hex 字符 | MD5 哈希 |
| 恰好 40 个 hex 字符 | SHA-1 哈希 |
| 恰好 64 个 hex 字符 | SHA-256 哈希 |
字符之外的判别线索
- Base64:每 4 个字符一组,末尾有
=填充,包含+和/。 - 凯撒或替换:仅大写拉丁字母,无数字。频率与纯文本相同,只是被移位了。
- 摩斯电码:只有点、横线、斜杠和空格。
- JWT:三个点分隔的片段,通常以
eyJ开头。 - 哈希(MD5/SHA):定长 hex(MD5 为 32 位,SHA-1 为 40 位,SHA-256 为 64 位)。不可逆,识别器会标注,免得你去尝试“解码“。
- 二进制:一长串 0 和 1,常以 8 位为一组。
自动识别的局限
- 短输入(<10 字符):置信度普遍偏低,什么都可能。
- 使用一次性密码本(OTP)的自定义 XOR:不掌握密钥时与随机数据无法区分。识别器不会返回任何匹配。
- 多层组合:CTF 常见套路是 Base64 → 反转 → Caesar → hex。一层一层剥。
- 非英文源语言:拉丁字母检查仍然适用,但“纯文本“只是猜测;识别器不做语言检测。
置信度评分
每个候选都有一个固定的置信度,取决于其签名的特异性。80% 以上:可能性较大。50-80%:有可能。50% 以下:不太可能。多个匹配通常意味着输入太短或是混合密码。
常见问题
每种密码识别都依赖统计规律,统计需要足够的数据才可靠。少于 20 字符时,很多密码看起来一模一样;50 字符以上才能得到稳定信号。
它只会给出最可能的方案。解码由专门的解码工具完成,部分方案需要你提供密钥。
先看字符集(出现了哪些字母/符号),再看长度和结构。如果仍不明朗,逐个尝试常见的嫌疑解码器(Base64、hex、Caesar),在 CTF 里,频率分析加猜测通常几下就能破。
一般认不出具体名字:要么没有候选,要么给出低置信度的猜测。将密文的字母表与结构对照上方的启发式表格,足以逆向出简单的自制方案。
相关工具
A1Z26 密码编码器
使用 A1Z26 密码(A=1, B=2, ... Z=26)编码文本,或把数字序列解码回字母,并可自定义分隔符。
bcrypt 哈希生成器
生成 bcrypt 哈希,或用明文密码对照已有的 bcrypt 哈希进行验证。一个工具内并排支持生成和验证。
Base32 编码器和解码器
使用 RFC 4648 字母表编码和解码 Base32 字符串。适用于 TOTP 密钥、大小写不敏感的令牌和人工输入的标识符。
Base64 文件编码器
将任意文件(PDF、ZIP、图片、可执行文件)编码为 Base64 文本,用于嵌入 JSON、邮件、YAML 或 data URI。在浏览器本地运行,无需上传。
凯撒密码编码器
使用凯撒密码加密和解密文本。支持任意 1-25 位移,ROT13 可作为特殊情况处理,并保留标点和大小写。
Base58 编码器和解码器
编码 UTF-8 文本或十六进制字节,并使用 Bitcoin、Ripple 或 Flickr 字母表安全解码 Base58。