文件与页面

多层解码器

本地运行新增

该工具本身是英文的;本页面将用您的语言对它进行说明。

使用 多层解码器

功能介绍

粘贴经过编码或混淆的文本,解码器会一层接一层地剥离,并显示每一步,直到剩下可读文本或已知文件格式为止。全部在你的浏览器中运行。

它完全在您的浏览器中运行:您输入的任何内容都不会被上传。

如何使用多层解码器

  1. 粘贴编码文本. 将字符串粘贴到 Encoded text(编码文本)中:脚本里的 Base64 数据块、较长的十六进制字符串、百分号编码文本或 String.fromCharCode 列表。
  2. 解码. 按 Decode layers(逐层解码)或 Ctrl+Enter。每个识别出的编码层会依次被剥离,最多 12 层。
  3. 查看解码链. 标题行按顺序列出各层。每一步显示所用方法、处理前后的大小以及预览。
  4. 使用结果. 复制解码后的文本,查看 Indicators in the result(结果中的指标),或使用 Send to(发送到)转交给 HTML Attachment Analyzer(HTML 附件分析器)、Link Unwrapper(链接解包器)、IOC Converter(IOC 转换器)或 URL Defanger(URL 无害化工具)。
  5. 手动介入. 如果漏掉了某一层,请在 Decode as 下选择一种方法并应用。Undo last layer 可退回一步。

示例

gzip 数据的 Base64 再经 URL 编码

输入
H4sIAAAAAAACA7MpTi7KLCixK8%2FMS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA
输出(捕获于2026-10-20)
3 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 测试向量

输入
Zm9vYmFy
结果

1 层:Base64,8 → 6 字节。结果是文本 foobar,即 RFC 4648 中公布的值。

十六进制包着 Base64,Base64 包着 URL

输入
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d
结果

2 层:Hex → Base64(88 → 44 → 31 字节)。结果是 https://login.example.net/reset,以无害化形式显示,并列在 Indicators in the result 下。

PowerShell 编码命令

输入
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA
结果

2 层: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 表示 /。

术语说明

PhishDestroy 研究