扫描 HTML 或 SVG 附件中的隐藏载荷、atob/eval 调用链和提交到外部站点的表单。
多层解码器
该工具本身是英文的;本页面将用您的语言对它进行说明。
使用 多层解码器
功能介绍
粘贴经过编码或混淆的文本,解码器会一层接一层地剥离,并显示每一步,直到剩下可读文本或已知文件格式为止。全部在你的浏览器中运行。
它完全在您的浏览器中运行:您输入的任何内容都不会被上传。
如何使用多层解码器
- 粘贴编码文本. 将字符串粘贴到 Encoded text(编码文本)中:脚本里的 Base64 数据块、较长的十六进制字符串、百分号编码文本或 String.fromCharCode 列表。
- 解码. 按 Decode layers(逐层解码)或 Ctrl+Enter。每个识别出的编码层会依次被剥离,最多 12 层。
- 查看解码链. 标题行按顺序列出各层。每一步显示所用方法、处理前后的大小以及预览。
- 使用结果. 复制解码后的文本,查看 Indicators in the result(结果中的指标),或使用 Send to(发送到)转交给 HTML Attachment Analyzer(HTML 附件分析器)、Link Unwrapper(链接解包器)、IOC Converter(IOC 转换器)或 URL Defanger(URL 无害化工具)。
- 手动介入. 如果漏掉了某一层,请在 Decode as 下选择一种方法并应用。Undo last layer 可退回一步。
示例
gzip 数据的 Base64 再经 URL 编码
H4sIAAAAAAACA7MpTi7KLCixK8%2FMS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA3 layers: URL percent-encoding → Base64 → gzip
No further encoding recognised.
1
URL percent-encoding
1 escape · 130 → 128 bytes
H4sIAAAAAAACA7MpTi7KLCixK8/MS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA
2
Base64
decodes to gzip · 128 → 96 bytes
00000000 1f 8b 08 00 00 00 00 00 02 03 b3 29 4e 2e ca 2c |...........)N..,|
00000010 28 b1 2b cf cc 4b c9 2f d7 cb c9 4f 4e 2c c9 cc |(.+..K./...ON,..|
00000020 cf d3 cb 28 4a 4d 53 b0 55 50 ca 28 29 29 28 b6 |...(JMS.UP.())(.|
… 48 more bytes
3
gzip
96 → 82 bytes
<script>window.location.href = "hxxps://example[.]com/verify?session=7f3a";</script>
Result
Text, 82 bytes.
<script>window.location.href = "hxxps://example[.]com/verify?session=7f3a";</script>
Indicators in the result (1)
URL
hxxps://example[.]com/verify?session=7f3a
Copy indicators (raw)三层:URL 百分号编码(%2F)、解码后得到 gzip 数据的 Base64,以及 gzip 本身,最终得到一段把浏览器跳转到 https://example.com/verify 的脚本。
检查内容
| 信号 | 其含义 |
|---|---|
| 编码层链 | 按顺序排列的编码,例如 Hex → Base64。一条短 URL 或命令外面包了好几层,通常意味着有人想隐藏它。 |
| 每一步的大小 | 每一层输入和输出的字节数。gzip 或 deflate 层大幅增大是正常的解压现象。 |
| UTF-16LE 文本 | 每个字符两个字节,是 PowerShell -EncodedCommand 的典型特征。解码出的命令如果会下载或启动某些东西,就是危险信号。 |
| 二进制结果 | 如果最终结果不是文本,会显示前 512 字节的十六进制转储以及检测到的格式。可以将其复制为十六进制或 Base64;切勿运行它。 |
| Indicators in the result(结果中的指标) | 在解码文本中找到的 URL、电子邮件地址和 IPv4 地址,以无害化形式显示,并附有复制原始值的按钮。 |
| 停止消息 | 没有识别出更多编码、达到 12 层上限,或某一步会重复之前的结果。达到上限时,可能还有更多层。 |
| 无害化选项 | 默认开启:结果中的 URL 和电子邮件地址以无害化形式显示。Copy 始终给出原始文本。 |
| 继续剥离选项 | 手动执行 Decode as 一步之后,解码会自动继续,除非你取消勾选。 |
| Decode as 列表 | Base64、URL 安全 Base64、十六进制、URL 百分号编码、HTML 实体、转义序列、字符码、quoted-printable、gzip、zlib、原始 deflate 和 UTF-16LE,用于自动处理跳过的步骤。 |
| 复制按钮 | Copy 给出原始的解码文本。如果是二进制结果,则改为提供 Copy as hex 和 Copy as Base64。 |
更多示例
RFC 4648 测试向量
Zm9vYmFy1 层:Base64,8 → 6 字节。结果是文本 foobar,即 RFC 4648 中公布的值。
十六进制包着 Base64,Base64 包着 URL
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d2 层:Hex → Base64(88 → 44 → 31 字节)。结果是 https://login.example.net/reset,以无害化形式显示,并列在 Indicators in the result 下。
PowerShell 编码命令
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA2 层:Base64 → UTF-16LE 文本,并注明这是 PowerShell -EncodedCommand 的典型特征。结果是 Start-Process 'https://example.org/update',其中的 URL 列为指标。
常见问题解答
它能识别哪些编码?
Base64(标准与 URL 安全形式,填充可有可无);纯文本、0x、\x、空格分隔或冒号分隔形式的十六进制;URL 百分号编码;HTML 实体;\x、\u、\u{…} 和 %u 转义;String.fromCharCode 列表;quoted-printable;gzip、zlib 和原始 deflate;以及 UTF-16LE 文本,例如 PowerShell -EncodedCommand。atob('…') 或 base64_decode('…') 之类的调用以及 data: URI 也会被拆开。
为什么它停止了,或者原样保留了我的文本?
只有当某一层的输出是可读文本、已知文件格式或能顺利解压的数据流时,该层才会被接受,因此恰好是有效 Base64 的普通单词不会被处理。所以较短或不常见的编码可能会被漏掉:可以用 Decode as 手动应用某种方法,用 Undo 退回一步。最多处理 12 层后停止。
解码后的内容会被运行或发送到任何地方吗?
不会。解码使用普通 JavaScript 和浏览器的 DecompressionStream;结果以文本或十六进制转储形式显示,从不执行、渲染或上传。
这类字符串来自哪里?
钓鱼页面和附件会把 URL 和代码藏在 Base64 或十六进制中,ClickFix 页面会把经过编码的 PowerShell 命令复制到你的剪贴板,而电子邮件常以 quoted-printable 形式传送。请把字符串粘贴到这里,而不是运行它。
可以一次只解码一层吗?
可以。取消勾选 After a manual step, keep peeling automatically(手动步骤后自动继续剥离),然后在 Decode as 下选择方法,并对每一步按 Apply to the current result(应用到当前结果)。
我可以粘贴多少文本?
最多 5 MB。超过 200,000 个字符的结果在屏幕上会被截短,但 Copy 会给出完整文本。
什么是 quoted-printable 和百分号编码?
两者都把一个字节写成一个符号加两位十六进制数字。quoted-printable 来自邮件正文,其中 =3D 表示 =。百分号编码来自 URL,其中 %2F 表示 /。