Saltar al contenido
DeepBase64

¿Por qué mi base64 está codificado dos veces?

Ha decodificado una cadena base64 y ha obtenido otra cadena base64. Nada está roto y usted no se ha equivocado: el valor estaba realmente codificado más de una vez, y cada decodificación quita exactamente una capa.

Casi nadie codifica dos veces a propósito. Ocurre porque dos sistemas hicieron su trabajo sin saber que el otro ya lo había hecho. Un servicio codifica un valor antes de ponerlo en un campo; el transporte que lleva el mensaje entero lo codifica también. Un secreto de Kubernetes contiene un valor que ya era base64 cuando alguien lo pegó en el YAML, que vuelve a codificarlo. Un webhook firma una carga, codifica la firma, y la cadena de entrega codifica el sobre. Un sistema de registro codifica todo lo que no puede garantizar que sea imprimible, incluido un campo que ya se codificó antes por la misma razón.

No se puede saber cuántas capas hay mirando. La salida de base64 es entrada válida para base64, así que un valor envuelto una vez y otro envuelto cuatro veces son el mismo tipo de cadena. La única pista visible es la longitud: cada capa alarga el texto alrededor de un tercio, de modo que los valores muy anidados se vuelven llamativamente grandes.

La salida es decodificar repetidamente hasta que el resultado deje de ser base64. Hacerlo a mano significa pegar cada resultado de nuevo en la entrada y perder la cuenta, y por eso vale la pena una herramienta que quite todas las capas de una vez y diga cuántas había.

Automatizarlo tiene una trampa, y conviene conocerla sea cual sea la herramienta: parte del texto corriente también es base64 válido. Un decodificador que siga quitando capas mientras la entrada solo parezca decodificable convertirá encantado una palabra como "Password" en ruido y declarará una capa que nunca existió. Detenerse bien es más difícil que decodificar, y quien da un número de capas sin juzgar cada una está dando una suposición.

Abrir el decodificador