Fichiers et pages

Décodeur multicouche

Exécution localeNouveau

L'outil lui-même est en anglais ; cette page vous l'explique dans votre langue.

Utilisez Décodeur multicouche

Fonctionnalités

Collez un texte encodé ou obscurci : le décodeur retire les couches l'une après l'autre, en montrant chaque étape, jusqu'à obtenir un texte lisible ou un format de fichier connu. Tout s'exécute dans votre navigateur.

Tout se passe entièrement dans votre navigateur : aucune des données que vous saisissez n'est transmise.

Comment utiliser Décodeur multicouche

  1. Collez le texte encodé. Collez la chaîne dans Encoded text : un blob Base64 tiré d'un script, une longue chaîne hexadécimale, un texte encodé en pourcentage ou une liste String.fromCharCode.
  2. Décodez. Appuyez sur Decode layers ou Ctrl+Entrée. Chaque couche reconnue est retirée à son tour, jusqu'à 12.
  3. Lisez la chaîne de couches. Le titre liste les couches dans l'ordre. Chaque étape indique la méthode, la taille avant et après, et un aperçu.
  4. Exploitez le résultat. Copiez le texte décodé, lisez Indicators in the result, ou utilisez Send to pour HTML Attachment Analyzer, Link Unwrapper, IOC Converter ou URL Defanger.
  5. Intervenez à la main. Si une couche est manquée, choisissez une méthode sous Decode as et appliquez-la. Undo last layer revient d'une étape en arrière.

Exemple

Base64 encodé en URL d'un contenu gzip

Saisie
H4sIAAAAAAACA7MpTi7KLCixK8%2FMS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA
Résultats (enregistrés le 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)

Trois couches : l'encodage URL en pourcentage (%2F), un Base64 qui se décode en données gzip, et le gzip lui-même, pour aboutir à un script qui envoie le navigateur vers https://example.com/verify.

Ce qu'il vérifie

SignalCe que cela signifie
Chaîne de couchesLes encodages dans l'ordre, par exemple Hex → Base64. Plusieurs couches autour d'une courte URL ou d'une commande signifient généralement que quelqu'un a voulu la cacher.
Taille par étapeOctets en entrée et en sortie de chaque couche. Une couche gzip ou deflate qui grossit beaucoup correspond à une décompression ordinaire.
Texte UTF-16LEDeux octets par caractère, typique de PowerShell -EncodedCommand. Une commande décodée qui télécharge ou lance quelque chose est un signal d'alerte.
Résultat binaireSi le résultat final n'est pas du texte, un dump hexadécimal des 512 premiers octets est affiché avec le format détecté. Copiez-le en hexadécimal ou en Base64 ; ne l'exécutez jamais.
Indicators in the resultLes URL, adresses e-mail et adresses IPv4 trouvées dans le texte décodé, affichées désamorcées, avec un bouton pour les copier brutes.
Message d'arrêtPlus aucun encodage reconnu, limite de 12 couches atteinte, ou étape qui répéterait un résultat précédent. À la limite, il peut rester d'autres couches.
Option de désamorçageActivée par défaut : les URL et adresses e-mail du résultat sont affichées désamorcées. Copy donne toujours le texte brut.
Option de poursuite automatiqueAprès une étape manuelle Decode as, le décodage continue automatiquement, sauf si vous décochez l'option.
Liste Decode asBase64, Base64 URL-safe, hexadécimal, encodage URL en pourcentage, entités HTML, échappements, codes de caractères, quoted-printable, gzip, zlib, deflate brut et UTF-16LE, pour les étapes que le passage automatique ignore.
Boutons de copieCopy donne le texte décodé brut. Un résultat binaire propose à la place Copy as hex et Copy as Base64.

D'autres exemples

Vecteur de test RFC 4648

Saisie
Zm9vYmFy
Résultat

1 couche : Base64, 8 → 6 octets. Le résultat est le texte foobar, la valeur publiée dans la RFC 4648.

Hex autour de Base64 autour d'une URL

Saisie
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d
Résultat

2 couches : Hex → Base64 (88 → 44 → 31 octets). Le résultat est https://login.example.net/reset, affiché désamorcé et listé sous Indicators in the result.

Commande PowerShell encodée

Saisie
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA
Résultat

2 couches : Base64 → texte UTF-16LE, noté comme typique de PowerShell -EncodedCommand. Le résultat est Start-Process 'https://example.org/update', avec l'URL listée comme indicateur.

FAQ

Quels encodages reconnaît-il ?

Le Base64 (standard et URL-safe, remplissage facultatif), l'hexadécimal sous forme brute, 0x, \x, espacée ou séparée par deux-points, l'encodage URL en pourcentage, les entités HTML, les échappements \x, \u, \u{…} et %u, les listes String.fromCharCode, le quoted-printable, gzip, zlib et deflate brut, ainsi que le texte UTF-16LE comme une commande PowerShell -EncodedCommand. Les appels comme atob('…') ou base64_decode('…') et les data URI sont aussi déballés.

Pourquoi s'est-il arrêté, ou a-t-il laissé mon texte tel quel ?

Une couche n'est acceptée que si son résultat est un texte lisible, un format de fichier connu ou un flux qui se décompresse proprement : des mots ordinaires qui se trouvent être du Base64 valide sont donc laissés tels quels. Des encodages courts ou inhabituels peuvent ainsi être manqués : utilisez Decode as pour appliquer une méthode à la main et Undo pour revenir en arrière. Il s'arrête après 12 couches.

Le contenu décodé est-il exécuté ou envoyé quelque part ?

Non. Le décodage utilise du JavaScript simple et le DecompressionStream du navigateur ; le résultat est affiché sous forme de texte ou de dump hexadécimal et n'est jamais exécuté, rendu ni téléversé.

D'où viennent ces chaînes ?

Les pages et pièces jointes de phishing cachent des URL et du code en Base64 ou en hexadécimal, les pages ClickFix copient des commandes PowerShell encodées dans votre presse-papiers, et les e-mails arrivent en quoted-printable. Collez la chaîne ici au lieu de l'exécuter.

Puis-je décoder une couche à la fois ?

Oui. Décochez After a manual step, keep peeling automatically, puis choisissez une méthode sous Decode as et appuyez sur Apply to the current result pour chaque étape.

Quelle quantité de texte puis-je coller ?

Jusqu'à 5 Mo. Les résultats de plus de 200 000 caractères sont raccourcis à l'écran, mais Copy donne le texte complet.

Que sont le quoted-printable et l'encodage en pourcentage ?

Tous deux écrivent un octet sous la forme d'un signe suivi de deux chiffres hexadécimaux. Le quoted-printable vient du corps des e-mails, où =3D représente =. L'encodage en pourcentage vient des URL, où %2F représente /.

Explication des termes

Étude PhishDestroy