Scan een HTML- of SVG-bijlage op verborgen payloads, atob/eval-ketens en externe formulieren.
Meerlaagse decoder
De tool zelf is in het Engels; op deze pagina wordt uitgelegd hoe deze werkt in uw taal.
Gebruik Meerlaagse decoder
Wat het doet
Plak gecodeerde of versleutelde tekst en de decoder pelt de tekst laag voor laag af, waarbij elke stap wordt getoond, totdat er leesbare tekst of een bekend bestandsformaat overblijft. Alles gebeurt in je browser.
Het draait volledig in je browser: er wordt niets van wat je invoert geüpload.
Hoe gebruik je Meerlaagse decoder
- Plak de gecodeerde tekst. Plak de tekenreeks in ‘Gecodeerde tekst’: een Base64-blob uit een script, een lange hexadecimale tekenreeks, procentgecodeerde tekst of een String.fromCharCode-lijst.
- Decoderen. Druk op ‘Decode layers’ of op Ctrl+Enter. Elke herkende laag wordt achtereenvolgens verwijderd, tot maximaal 12.
- Lees de keten. In de kop staan de lagen op volgorde vermeld. Bij elke stap worden de methode, de afmetingen voor en na, en een voorbeeld weergegeven.
- Gebruik het resultaat. Kopieer de gedecodeerde tekst, bekijk de indicatoren in het resultaat of gebruik de optie ‘Verzenden naar’ voor HTML Attachment Analyzer, Link Unwrapper, IOC Converter of URL Defanger.
- Met de hand invoeren. Als er een laag ontbreekt, kies dan een methode onder ‘Decode as’ en pas deze toe. Met ‘Undo’ ga je een laag terug.
Voorbeeld
URL-gecodeerde Base64 van 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)Drie lagen: URL-procentcodering (%2F), Base64 dat wordt gedecodeerd naar gzip-gegevens, en gzip zelf, wat uitmondt in een script dat de browser naar https://example.com/verify stuurt.
Wat er wordt gecontroleerd
| Signaal | Wat dit betekent |
|---|---|
| Laagketen | De coderingen in volgorde, bijvoorbeeld Hex → Base64. Meerdere lagen rond een korte URL of een commando duiden er meestal op dat iemand deze wilde verbergen. |
| Grootte per stap | Bytes die elke laag binnenkomen en verlaten. Een gzip- of deflate-laag die sterk in omvang toeneemt, duidt op gewone decompressie. |
| UTF-16LE-tekst | Twee bytes per teken, wat kenmerkend is voor PowerShell -EncodedCommand. Een gedecodeerde opdracht waarmee iets wordt gedownload of gestart, is een alarmsignaal. |
| Binair resultaat | Als het eindresultaat geen tekst is, wordt een hex-dump van de eerste 512 bytes weergegeven, samen met het gedetecteerde formaat. Kopieer deze als hex of Base64; voer deze nooit uit. |
| Indicatoren in het resultaat | URL's, e-mailadressen en IPv4-adressen die in de gedecodeerde tekst zijn aangetroffen, worden in onschadelijke vorm weergegeven, met een knop om ze in onbewerkte vorm te kopiëren. |
| Stopbericht | Er wordt geen verdere codering herkend, de limiet van 12 lagen is bereikt, of er is een stap die een eerder resultaat zou herhalen. Bij de limiet kunnen er meer lagen zijn. |
| Optie 'Defang' | Standaard ingeschakeld: URL’s en e-mailadressen in de zoekresultaten worden gemaskeerd weergegeven. Bij ‘Kopiëren’ wordt altijd de onbewerkte tekst weergegeven. |
| Optie ‘Blijven pellen’ | Na een handmatige decoderingsstap wordt het decoderen automatisch voortgezet, tenzij u het vinkje verwijdert. |
| Decodeer als lijst | Base64, URL-veilige Base64, hexadecimaal, URL-procentcodering, HTML-entiteiten, escape-tekens, tekencodes, quoted-printable, gzip, zlib, raw deflate en UTF-16LE, voor stappen die door de automatische verwerking worden overgeslagen. |
| Kopieerknoppen | Met ‘Kopiëren’ wordt de gedecodeerde tekst in ruwe vorm weergegeven. Bij een binair resultaat worden in plaats daarvan de opties ‘Kopiëren als hex’ en ‘Kopiëren als Base64’ aangeboden. |
Nog meer voorbeelden
RFC 4648-testvector
Zm9vYmFy1 laag: Base64, 8 → 6 bytes. Het resultaat is de tekst „foobar”, de waarde die in RFC 4648 is gepubliceerd.
Hex-codering en Base64-codering van een URL
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d2 lagen: Hex → Base64 (88 → 44 → 31 bytes). Het resultaat is https://login.example.net/reset, dat in onschadelijke vorm wordt weergegeven en onder ‘Indicatoren’ in de uitslag staat vermeld.
Gecodeerde PowerShell-opdracht
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA2 lagen: Base64 → UTF-16LE-tekst, wat kenmerkend is voor PowerShell -EncodedCommand. Het resultaat is Start-Process 'https://example.org/update', waarbij de URL als indicator wordt vermeld.
Veelgestelde vragen
Welke coderingen herkent het?
Base64 (standaard en URL-veilig, opvulling optioneel), hexadecimale waarden in gewone, 0x-, \x-, met spaties of door dubbele punten gescheiden vorm, URL-percent-codering, HTML-entiteiten, \x-, \u-, \u{…} en %u-escape-tekens, String.fromCharCode-lijsten, quoted-printable, gzip, zlib en raw deflate, en UTF-16LE-tekst zoals een PowerShell -EncodedCommand. Oproepen zoals atob('…') of base64_decode('…') en data: URI's worden eveneens gedecodeerd.
Waarom is het gestopt, of waarom is mijn tekst gewoon zo gebleven?
Een laag wordt alleen geaccepteerd als de uitvoer ervan leesbare tekst is, een bekend bestandsformaat of een stream die foutloos kan worden gedecomprimeerd; gewone woorden die toevallig geldige Base64-code zijn, worden dus met rust gelaten. Korte of ongebruikelijke coderingen kunnen daarom over het hoofd worden gezien: gebruik ‘Decode as’ om handmatig een methode toe te passen en ‘Undo’ om een stap terug te gaan. Het proces stopt na 12 lagen.
Wordt de gedecodeerde inhoud ergens uitgevoerd of verzonden?
Nee. Het decoderen gebeurt met behulp van standaard JavaScript en de DecompressionStream van de browser; het resultaat wordt weergegeven als tekst of als een hex-dump en wordt nooit uitgevoerd, weergegeven of geüpload.
Waar komen dit soort reeksen vandaan?
Phishing-pagina's en bijlagen verbergen URL's en code in Base64 of hexadecimaal; ClickFix-pagina's kopiëren gecodeerde PowerShell-opdrachten naar je klembord, en e-mails worden verzonden als quoted-printable. Plak de tekenreeks hier in plaats van deze uit te voeren.
Kan ik één laag per keer decoderen?
Ja. Schakel het vinkje bij ‘Na een handmatige stap automatisch doorgaan met ontcijferen’ uit, kies vervolgens voor elke stap een methode onder ‘Decoderen als’ en klik op ‘Toepassen op het huidige resultaat’.
Hoeveel tekst kan ik plakken?
Maximaal 5 MB. Resultaten die langer zijn dan 200.000 tekens worden op het scherm ingekort, maar met ‘Kopiëren’ krijg je de volledige tekst.
Wat zijn "quoted-printable" en "percent-encoding"?
Bij beide wordt een byte weergegeven als een teken gevolgd door twee hexadecimale cijfers. Quoted-printable komt uit e-mailteksten, waar =3D staat voor =. Percent-encoding komt uit URL’s, waar %2F staat voor /.