编码解码与加解密 Skill
针对渗透测试中常见的编码、加密、混淆场景,提供全面的编解码和加解密能力。
重要:遇到任何编码/加密字符串时,优先使用 crypto_decode 工具进行解码,而非靠直觉猜测。
核心原则
- 工具优先 — 遇到 base64、hex、URL编码等字符串,调用
crypto_decode 工具解码,不要自行脑补
- 多格式尝试 — 如果一种解码方式结果不合理,尝试其他编码格式
- 链式解码 — CTF 中常见多层编码(如 base64→hex→ROT13),解码后检查结果是否还需再次解码
- 验证结果 — 解码后验证结果的合理性(是否为可读文本、是否像路径/URL/flag 等)
1. 编码识别与解码
常见编码特征识别
| 编码类型 |
特征 |
示例 |
| Base64 |
A-Za-z0-9+/= 结尾常有 = 填充 |
TnNTY1RmLnBocA== |
| Base32 |
A-Z2-7= |
OBZHK5DFN2A==== |
| Hex |
0-9a-f 偶数长度 |
4e73536354662e706870 |
| URL编码 |
%XX 格式 |
%2F%61%64%6D%69%6E |
| HTML实体 |
&#xNN; 或 &#NNN; |
<script> |
| Unicode转义 |
\uXXXX 或 \UXXXXXXXX |
\u003c\u0073\u0063 |
| JWT |
三段 . 分隔的 base64 |
eyJhbG... |
解码策略
- 识别编码类型 → 调用
crypto_decode 工具指定对应操作
- 检查解码结果是否可读/合理
- 不合理则尝试其他编码格式
- 如果结果仍像编码,重复步骤 1-3
2. 哈希与散列
常见哈希类型
| 类型 |
输出长度 |
特征 |
| MD5 |
32 hex |
e10adc3949ba59abbe56e057f20f883e |
| SHA1 |
40 hex |
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
| SHA256 |
64 hex |
2c26b46b68ffc68ff99b453c1d30413413422d7064... |
| SHA512 |
128 hex |
更长的hex字符串 |
| NTLM |
32 hex |
Windows hash |
| MySQL5 |
41字符 |
*E6CC90B878B948C35E92B003C792C46758BF4 |
哈希处理策略
- 识别哈希类型(通过长度和字符集)
- 尝试在线彩虹表查询(通过 fetch 工具访问 crackstation 等)
- 对于已知盐值的哈希,尝试带盐值暴力破解
3. 对称加密
AES/DES/3DES
- 需要密钥和模式(ECB/CBC/CTR 等)
- CBC 模式需要 IV
- 常见填充:PKCS7/ZeroPadding
- 渗透中常遇到硬编码密钥,优先从源码中提取
4. 非对称加密
RSA
- 从公钥/私钥文件中提取参数
- 模数过小的 RSA 可分解
- 已知私钥可直接解密
5. 古典密码
| 类型 |
特征 |
破解方法 |
| Caesar/ROT13 |
字母位移 |
暴力25种位移 |
| Vigenere |
多表替换 |
Kasiski/频率分析 |
| 栅栏密码 |
字符分组重组 |
尝试常见栏数 |
| 培根密码 |
AB 五元组 |
查表 |
| Morse |
.- 点划 |
查表 |
6. JWT 处理
- 解码 Header + Payload(base64url)
- 检查算法:
none 算法绕过、RS256→HS256 算法混淆
- 尝试弱密钥签名伪造
- 检查 exp/nbf 等时间声明
工具使用
crypto_decode 工具
当遇到需要编码/解码/加密/解密的操作时,调用此工具:
crypto_decode(operation="base64_decode", input="TnNTY1RmLnBocA==")
支持的操作列表:
- 编码:
base64_encode, base32_encode, hex_encode, url_encode, html_encode, unicode_encode, rot13_encode, morse_encode, caesar_encode, base58_encode
- 解码:
base64_decode, base32_decode, hex_decode, url_decode, html_decode, unicode_decode, rot13_decode, morse_decode, caesar_decode, base58_decode
- 哈希:
md5_hash, sha1_hash, sha256_hash, sha512_hash
- 加密/解密:
aes_encrypt, aes_decrypt, des_encrypt, des_decrypt, rsa_encrypt, rsa_decrypt
- JWT:
jwt_decode, jwt_encode
- 自动识别:
auto_decode (自动识别编码类型并解码)
CTF 密码学攻击路由
当遇到密码学攻击场景(已知加密算法,需要恢复明文或密钥)时,优先使用 ctf-crypto Skill:
| 攻击场景 |
路由到 ctf-crypto |
参考文档 |
| RSA 小指数/共模/Wiener |
ctf-crypto |
references/rsa-attacks-cheatsheet.md |
| AES Padding Oracle/ECB 翻转 |
ctf-crypto |
references/aes-and-block-cipher-attacks.md |
| ECC 小子群/离散对数 |
ctf-crypto |
references/ecc-attacks-cheatsheet.md |
| PRNG/MT19937 预测 |
ctf-crypto |
references/prng-and-stream-cipher-attacks.md |
| 古典密码(Vigenere/XOR) |
ctf-crypto |
references/classic-cipher-attacks.md |
| 格攻击/LWE |
ctf-crypto |
references/lattice-and-lwe-attacks.md |
本 Skill 侧重编解码操作工具,密码学具体攻击方法和参数请参考 ctf-crypto。
参考文档
references/encoding-cheatsheet.md — 编码识别速查表
references/crypto-attacks.md — 密码学攻击手法
references/crypto-attacks-roadmap.md — 密码学攻击分类路由(根据题目特征选择攻击方法)
1---2name: crypto-toolkit3description: 编码解码与加解密工具 — base64/URL/Hex/HTML实体编码解码,MD5/SHA哈希,AES/DES/RSA加解密,JWT解析,Caesar/ROT13密码,栅栏/Vigenere密码,Unicode转义,Morse电码等4---5
6# 编码解码与加解密 Skill
7
8针对渗透测试中常见的编码、加密、混淆场景,提供全面的编解码和加解密能力。
9**重要**:遇到任何编码/加密字符串时,优先使用 `crypto_decode` 工具进行解码,而非靠直觉猜测。
10
11## 核心原则
12
131. **工具优先** — 遇到 base64、hex、URL编码等字符串,调用 `crypto_decode` 工具解码,不要自行脑补
142. **多格式尝试** — 如果一种解码方式结果不合理,尝试其他编码格式
153. **链式解码** — CTF 中常见多层编码(如 base64→hex→ROT13),解码后检查结果是否还需再次解码
164. **验证结果** — 解码后验证结果的合理性(是否为可读文本、是否像路径/URL/flag 等)
17
18## 1. 编码识别与解码
19
20### 常见编码特征识别
21
22| 编码类型 | 特征 | 示例 |
23|---------|------|------|
24| Base64 | `A-Za-z0-9+/=` 结尾常有 `=` 填充 | `TnNTY1RmLnBocA==` |
25| Base32 | `A-Z2-7=` | `OBZHK5DFN2A====` |
26| Hex | `0-9a-f` 偶数长度 | `4e73536354662e706870` |
27| URL编码 | `%XX` 格式 | `%2F%61%64%6D%69%6E` |
28| HTML实体 | `&#xNN;` 或 `&#NNN;` | `<script>` |
29| Unicode转义 | `\uXXXX` 或 `\UXXXXXXXX` | `\u003c\u0073\u0063` |
30| JWT | 三段 `.` 分隔的 base64 | `eyJhbG...` |
31
32### 解码策略
33
341. 识别编码类型 → 调用 `crypto_decode` 工具指定对应操作
352. 检查解码结果是否可读/合理
363. 不合理则尝试其他编码格式
374. 如果结果仍像编码,重复步骤 1-3
38
39## 2. 哈希与散列
40
41### 常见哈希类型
42
43| 类型 | 输出长度 | 特征 |
44|------|---------|------|
45| MD5 | 32 hex | `e10adc3949ba59abbe56e057f20f883e` |
46| SHA1 | 40 hex | `aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d` |
47| SHA256 | 64 hex | `2c26b46b68ffc68ff99b453c1d30413413422d7064...` |
48| SHA512 | 128 hex | 更长的hex字符串 |
49| NTLM | 32 hex | Windows hash |
50| MySQL5 | 41字符 | `*E6CC90B878B948C35E92B003C792C46758BF4` |
51
52### 哈希处理策略
53
54- 识别哈希类型(通过长度和字符集)
55- 尝试在线彩虹表查询(通过 fetch 工具访问 crackstation 等)
56- 对于已知盐值的哈希,尝试带盐值暴力破解
57
58## 3. 对称加密
59
60### AES/DES/3DES
61
62- 需要密钥和模式(ECB/CBC/CTR 等)
63- CBC 模式需要 IV
64- 常见填充:PKCS7/ZeroPadding
65- 渗透中常遇到硬编码密钥,优先从源码中提取
66
67## 4. 非对称加密
68
69### RSA
70
71- 从公钥/私钥文件中提取参数
72- 模数过小的 RSA 可分解
73- 已知私钥可直接解密
74
75## 5. 古典密码
76
77| 类型 | 特征 | 破解方法 |
78|------|------|---------|
79| Caesar/ROT13 | 字母位移 | 暴力25种位移 |
80| Vigenere | 多表替换 | Kasiski/频率分析 |
81| 栅栏密码 | 字符分组重组 | 尝试常见栏数 |
82| 培根密码 | AB 五元组 | 查表 |
83| Morse | `.-` 点划 | 查表 |
84
85## 6. JWT 处理
86
87- 解码 Header + Payload(base64url)
88- 检查算法:`none` 算法绕过、RS256→HS256 算法混淆
89- 尝试弱密钥签名伪造
90- 检查 exp/nbf 等时间声明
91
92## 工具使用
93
94### `crypto_decode` 工具
95
96当遇到需要编码/解码/加密/解密的操作时,调用此工具:
97
98```
99crypto_decode(operation="base64_decode", input="TnNTY1RmLnBocA==")
100```
101
102支持的操作列表:
103- **编码**: `base64_encode`, `base32_encode`, `hex_encode`, `url_encode`, `html_encode`, `unicode_encode`, `rot13_encode`, `morse_encode`, `caesar_encode`, `base58_encode`
104- **解码**: `base64_decode`, `base32_decode`, `hex_decode`, `url_decode`, `html_decode`, `unicode_decode`, `rot13_decode`, `morse_decode`, `caesar_decode`, `base58_decode`
105- **哈希**: `md5_hash`, `sha1_hash`, `sha256_hash`, `sha512_hash`
106- **加密/解密**: `aes_encrypt`, `aes_decrypt`, `des_encrypt`, `des_decrypt`, `rsa_encrypt`, `rsa_decrypt`
107- **JWT**: `jwt_decode`, `jwt_encode`
108- **自动识别**: `auto_decode` (自动识别编码类型并解码)
109
110## CTF 密码学攻击路由
111
112> 当遇到密码学攻击场景(已知加密算法,需要恢复明文或密钥)时,优先使用 `ctf-crypto` Skill:
113
114| 攻击场景 | 路由到 ctf-crypto | 参考文档 |
115|---------|-----------------|---------|
116| RSA 小指数/共模/Wiener | `ctf-crypto` | `references/rsa-attacks-cheatsheet.md` |
117| AES Padding Oracle/ECB 翻转 | `ctf-crypto` | `references/aes-and-block-cipher-attacks.md` |
118| ECC 小子群/离散对数 | `ctf-crypto` | `references/ecc-attacks-cheatsheet.md` |
119| PRNG/MT19937 预测 | `ctf-crypto` | `references/prng-and-stream-cipher-attacks.md` |
120| 古典密码(Vigenere/XOR) | `ctf-crypto` | `references/classic-cipher-attacks.md` |
121| 格攻击/LWE | `ctf-crypto` | `references/lattice-and-lwe-attacks.md` |
122
123**本 Skill 侧重编解码操作工具**,密码学具体攻击方法和参数请参考 `ctf-crypto`。
124
125## 参考文档
126
127- `references/encoding-cheatsheet.md` — 编码识别速查表
128- `references/crypto-attacks.md` — 密码学攻击手法
129- `references/crypto-attacks-roadmap.md` — 密码学攻击分类路由(根据题目特征选择攻击方法)
130