Analiza un adjunto HTML o SVG en busca de cargas ocultas, cadenas atob/eval y formularios hacia otros sitios.
Decodificador multicapa
La herramienta en sí está en inglés; en esta página se explica en tu idioma.
Utiliza Decodificador multicapa
Para qué sirve
Pega un texto codificado u ofuscado y el decodificador quita una capa tras otra, mostrando cada paso, hasta que queda texto legible o un formato de archivo conocido. Todo se ejecuta en tu navegador.
Funciona íntegramente en tu navegador: no se sube nada de lo que introduzcas.
Cómo utilizar Decodificador multicapa
- Pega el texto codificado. Pega la cadena en Encoded text (Texto codificado): un bloque Base64 de un script, una cadena hexadecimal larga, texto con codificación porcentual o una lista String.fromCharCode.
- Decodifica. Pulsa Decode layers (Decodificar capas) o Ctrl+Intro. Cada capa reconocida se quita por orden, hasta 12.
- Lee la cadena de capas. El titular lista las capas en orden. Cada paso muestra el método, el tamaño antes y después, y una vista previa.
- Usa el resultado. Copia el texto decodificado, lee Indicators in the result (Indicadores en el resultado) o usa Send to (Enviar a) para HTML Attachment Analyzer, Link Unwrapper, IOC Converter o URL Defanger.
- Intervén a mano. Si se pasa por alto una capa, elige un método en Decode as y aplícalo. Undo last layer (Deshacer la última capa) retrocede un paso.
Ejemplo
Base64 codificado como URL que contiene 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)Tres capas: codificación porcentual de URL (%2F), Base64 que se decodifica en datos gzip y el propio gzip, que termina en un script que envía el navegador a https://example.com/verify.
Qué comprueba
| Señal | Qué significa |
|---|---|
| Cadena de capas | Las codificaciones en orden, por ejemplo Hex → Base64. Varias capas alrededor de una URL o un comando cortos suelen indicar que alguien quería ocultarlos. |
| Tamaño por paso | Bytes de entrada y de salida de cada capa. Una capa gzip o deflate que crece mucho es una descompresión normal. |
| Texto UTF-16LE | Dos bytes por carácter, típico de -EncodedCommand de PowerShell. Un comando decodificado que descarga o inicia algo es una señal de alarma. |
| Resultado binario | Si el resultado final no es texto, se muestra un volcado hexadecimal de los primeros 512 bytes con el formato detectado. Cópialo como hexadecimal o Base64; no lo ejecutes nunca. |
| Indicators in the result | URL, direcciones de correo y direcciones IPv4 encontradas en el texto decodificado, mostradas neutralizadas, con un botón para copiarlas tal cual. |
| Mensaje de parada | No se reconoce ninguna codificación más, se alcanzó el límite de 12 capas o un paso repetiría un resultado anterior. En el límite puede haber más capas. |
| Opción de neutralizar | Activada por defecto: las URL y direcciones de correo del resultado se muestran neutralizadas. Copy siempre da el texto sin neutralizar. |
| Opción de seguir quitando capas | Después de un paso manual con Decode as, la decodificación continúa automáticamente salvo que desmarques la opción. |
| Lista Decode as | Base64, Base64 seguro para URL, hexadecimal, codificación porcentual de URL, entidades HTML, escapes, códigos de carácter, quoted-printable, gzip, zlib, deflate sin envoltorio y UTF-16LE, para los pasos que la pasada automática omite. |
| Botones de copia | Copy da el texto decodificado tal cual. Un resultado binario ofrece en su lugar Copy as hex y Copy as Base64. |
Más ejemplos
Vector de prueba de RFC 4648
Zm9vYmFy1 capa: Base64, 8 → 6 bytes. El resultado es el texto foobar, el valor publicado en RFC 4648.
Hex alrededor de Base64 alrededor de una URL
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d2 capas: Hex → Base64 (88 → 44 → 31 bytes). El resultado es https://login.example.net/reset, mostrado neutralizado y listado en Indicators in the result.
Comando codificado de PowerShell
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA2 capas: Base64 → texto UTF-16LE, señalado como típico de -EncodedCommand de PowerShell. El resultado es Start-Process 'https://example.org/update', con la URL listada como indicador.
Preguntas frecuentes
¿Qué codificaciones reconoce?
Base64 (estándar y seguro para URL, con relleno opcional), hexadecimal en forma simple, con 0x, con \x, con espacios o separado por dos puntos, codificación porcentual de URL, entidades HTML, escapes \x, \u, \u{…} y %u, listas String.fromCharCode, quoted-printable, gzip, zlib y deflate sin envoltorio, y texto UTF-16LE como un -EncodedCommand de PowerShell. También se desenvuelven llamadas como atob('…') o base64_decode('…') y las data: URI.
¿Por qué se detuvo, o por qué dejó mi texto como estaba?
Una capa solo se acepta cuando su salida es texto legible, un formato de archivo conocido o un flujo que se descomprime limpiamente, así que las palabras normales que resultan ser Base64 válido se dejan como están. Por eso pueden pasarse por alto codificaciones cortas o poco habituales: usa Decode as (Decodificar como) para aplicar un método a mano y Undo (Deshacer) para retroceder. Se detiene tras 12 capas.
¿Se ejecuta o se envía a algún sitio el contenido decodificado?
No. La decodificación usa JavaScript simple y el DecompressionStream del navegador; el resultado se muestra como texto o como volcado hexadecimal y nunca se ejecuta, se renderiza ni se sube.
¿De dónde salen cadenas como estas?
Las páginas y los adjuntos de phishing ocultan URL y código en Base64 o hexadecimal, las páginas ClickFix copian comandos de PowerShell codificados en tu portapapeles y los correos llegan en quoted-printable. Pega aquí la cadena en lugar de ejecutarla.
¿Puedo decodificar una capa cada vez?
Sí. Desmarca After a manual step, keep peeling automatically (Tras un paso manual, seguir quitando capas automáticamente), y después elige un método en Decode as y pulsa Apply to the current result (Aplicar al resultado actual) en cada paso.
¿Cuánto texto puedo pegar?
Hasta 5 MB. Los resultados de más de 200 000 caracteres se acortan en pantalla, pero Copy da el texto completo.
¿Qué son quoted-printable y la codificación porcentual?
Ambas escriben un byte como un signo seguido de dos dígitos hexadecimales. Quoted-printable procede de los cuerpos de correo, donde =3D representa =. La codificación porcentual procede de las URL, donde %2F representa /.