Проверьте HTML- или SVG-вложение на скрытую нагрузку, цепочки atob/eval и формы, отправляющие данные на сторонние сайты.
Многослойный декодер
Сам инструмент доступен на английском языке; на этой странице приведено его описание на вашем языке.
Используйте Многослойный декодер
Для чего это нужно
Вставьте закодированный или обфусцированный текст, и декодер будет снимать слой за слоем, показывая каждый шаг, пока не останется читаемый текст или известный формат файла. Всё работает в вашем браузере.
Приложение работает полностью в браузере: никакие введенные вами данные не передаются на сервер.
Как использовать Многослойный декодер
- Вставьте закодированный текст. Вставьте строку в поле Encoded text: Base64-блоб из скрипта, длинную hex-строку, текст в процентном кодировании или список String.fromCharCode.
- Декодируйте. Нажмите Decode layers (декодировать слои) или Ctrl+Enter. Каждый распознанный слой снимается по очереди, до 12 слоёв.
- Прочитайте цепочку. Заголовок перечисляет слои по порядку. Для каждого шага показаны метод, размер до и после и предпросмотр.
- Используйте результат. Скопируйте декодированный текст, посмотрите Indicators in the result или используйте Send to для HTML Attachment Analyzer, Link Unwrapper, IOC Converter или URL Defanger.
- Вмешайтесь вручную. Если слой пропущен, выберите метод в Decode as и примените его. Undo last layer возвращает на шаг назад.
Пример
URL-кодированный Base64 от gzip
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), Base64, который декодируется в данные gzip, и сам gzip; в итоге — скрипт, который отправляет браузер на https://example.com/verify.
Что проверяется
| Сигнал | Что это означает |
|---|---|
| Цепочка слоёв | Кодировки по порядку, например Hex → Base64. Несколько слоёв вокруг короткого URL или команды обычно означают, что кто-то хотел их спрятать. |
| Размер на каждом шаге | Байты на входе и выходе каждого слоя. Сильный рост на слое gzip или deflate — обычная распаковка. |
| Текст UTF-16LE | Два байта на символ, типично для PowerShell -EncodedCommand. Декодированная команда, которая что-то скачивает или запускает, — тревожный сигнал. |
| Двоичный результат | Если в итоге получился не текст, показывается hex-дамп первых 512 байт с определённым форматом. Копируйте его как hex или Base64; никогда не запускайте. |
| Indicators in the result (индикаторы в результате) | URL, адреса электронной почты и IPv4-адреса, найденные в декодированном тексте, в обезвреженном виде, с кнопкой для копирования в исходном виде. |
| Сообщение об остановке | Больше не распознано ни одной кодировки, достигнут предел в 12 слоёв или шаг повторил бы прежний результат. При достижении предела слоёв может быть больше. |
| Опция обезвреживания | Включена по умолчанию: URL и адреса электронной почты в результате показываются в обезвреженном виде. Copy всегда даёт исходный текст. |
| Опция продолжения снятия слоёв | После ручного шага Decode as декодирование продолжается автоматически, если вы не снимете этот флажок. |
| Список Decode as | Base64, URL-безопасный Base64, hex, процентное URL-кодирование, HTML-сущности, escape-последовательности, коды символов, quoted-printable, gzip, zlib, raw deflate и UTF-16LE — для шагов, которые автоматический проход пропускает. |
| Кнопки копирования | Copy даёт декодированный текст как есть. Для двоичного результата вместо этого предлагаются Copy as hex и Copy as Base64. |
Еще примеры
Тестовый вектор RFC 4648
Zm9vYmFy1 слой: Base64, 8 → 6 байт. Результат — текст foobar, значение, опубликованное в RFC 4648.
Hex вокруг 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-безопасный, дополнение необязательно), hex в обычной форме, с 0x, \x, через пробелы или двоеточия, процентное URL-кодирование, HTML-сущности, escape-последовательности \x, \u, \u{…} и %u, списки String.fromCharCode, quoted-printable, gzip, zlib и raw deflate, а также текст UTF-16LE, например PowerShell -EncodedCommand. Вызовы вроде atob('…') или base64_decode('…') и data: URI тоже разворачиваются.
Почему он остановился или оставил мой текст без изменений?
Слой принимается, только если результат — читаемый текст, известный формат файла или поток, который чисто распаковывается, поэтому обычные слова, случайно оказавшиеся допустимым Base64, не трогаются. Из-за этого короткие или необычные кодировки могут быть пропущены: используйте Decode as, чтобы применить метод вручную, и Undo, чтобы вернуться на шаг назад. Декодер останавливается после 12 слоёв.
Запускается ли декодированное содержимое или отправляется ли оно куда-нибудь?
Нет. Декодирование использует обычный JavaScript и DecompressionStream браузера; результат показывается как текст или hex-дамп и никогда не выполняется, не отрисовывается и не загружается.
Откуда берутся такие строки?
Фишинговые страницы и вложения прячут URL и код в Base64 или hex, страницы ClickFix копируют закодированные команды PowerShell в ваш буфер обмена, а письма приходят в кодировке quoted-printable. Вставьте строку сюда вместо того, чтобы её запускать.
Можно ли декодировать по одному слою?
Да. Снимите флажок After a manual step, keep peeling automatically, затем для каждого шага выбирайте метод в Decode as и нажимайте Apply to the current result.
Сколько текста можно вставить?
До 5 МБ. Результаты длиннее 200 000 символов на экране сокращаются, но Copy даёт полный текст.
Что такое quoted-printable и процентное кодирование?
Оба записывают байт как знак и две шестнадцатеричные цифры. Quoted-printable пришёл из тел писем, где =3D означает =. Процентное кодирование пришло из URL, где %2F означает /.