Encoding no es cifrado: reconocer y encadenar decodificaciones
Te topas con una cadena rara —en un CTF, en un log, en una macro sospechosa— y la primera reacción de mucha gente es «está cifrada, no hay nada que hacer sin la clave». Casi siempre es falso: no está cifrada, está codificada, y eso se revierte sin clave alguna. Distinguir las dos cosas es de lo primero que separa a quien resuelve el reto de quien se atasca.
Tres conceptos que se confunden
- Codificación (encoding): Base64, hex, URL-encoding, ROT13… Solo cambia la representación. Es reversible por cualquiera, sin clave. No aporta confidencialidad.
- Cifrado: AES, ChaCha20, XOR con clave… Reversible solo con la clave. Eso sí protege el contenido.
- Hashing: MD5, SHA-256… Es de un solo sentido: no se «descifra». Lo que se hace es adivinar la entrada (fuerza bruta / diccionario).
Reconocer la codificación por su forma
No necesitas adivinar: cada codificación tiene una huella visual.
- Base64: alfabeto
A–Z a–z 0–9 + /, longitud múltiplo de 4, a veces=de relleno al final. base64url usa-y_. - Hex: solo
0–9 a–f, longitud par. Suele venir en pares (48 65 6c 6c 6f). - URL / percent:
%XXpor todas partes (%2F,%20). - ROT13 / César: parece texto pero «desplazado» (
Uryyb→Hello). - Binario / decimal: grupos de
0/1u números separados que caen en el rango ASCII (32–126).
SGVsbG8= → Base64 → "Hello"
48656c6c6f → Hex → "Hello"
%3Cscript%3E → URL → "<script>"
Uryyb → ROT13 → "Hello"
El truco del CTF: van anidadas
Rara vez es una sola capa. Lo típico es Base64 dentro de hex dentro de ROT… La estrategia es mecánica: decodifica una capa, mira el resultado y pregúntate «¿esto es texto legible o una nueva forma conocida?». Si es otra forma, repite. Si es ruido, quizá ya no es encoding sino cifrado (ver más abajo).
¿Y si de verdad está cifrado?
Si tras quitar todas las capas de codificación sigues viendo ruido, probablemente hay cifrado. En CTF el sospechoso habitual es XOR con clave corta o repetida: se ataca por análisis (longitud de clave, frecuencias, known-plaintext como FLAG{). Ahí ya no vale «decodificar»: toca criptoanálisis. Pero la mitad de los retos «de cripto» se caen antes de llegar aquí, en cuanto reconoces que solo era Base64 con sombrero.
No es solo para CTFs
Esto es triaje real: el malware ofusca sus payloads con Base64/hex/XOR para saltarse una lectura rápida y algunos AV. Reconocer la forma acelera el análisis — por eso el Analizador Cron marca base64 -d | sh y el patrón curl | sh como señales de alarma: son la versión «en línea» de este mismo juego.
Checklist
- ✅ ¿Codificación, cifrado o hash? (reversible sin clave / con clave / de un solo sentido)
- ✅ Identifica la forma: alfabeto y longitud delatan Base64, hex, URL, ROT…
- ✅ Decodifica capa a capa; ¿texto legible o una forma nueva?
- ✅ ¿Sigue siendo ruido tras todas las capas? Sospecha XOR/cifrado
- ✅ En triaje: Base64/hex/XOR = ofuscación típica de payloads
«Está cifrado» es la excusa; «está en Base64 tres veces» es la realidad, más veces de las que crees. Aprende a leer la forma y te ahorrarás pedir una clave que nunca hizo falta.