Cómo decodificar campos Base64 en JSON
- Pega JSON en Entrada · JSON, o suelta un archivo
.jsono.har. - La tabla lista cada coincidencia con su Ruta, lo que Parece, un nivel de confianza y la vista previa Decodificado, además de Copiar decodificado y Descargar.
- El panel de salida contiene el documento completo con los valores de texto, JSON y JWT decodificados en su sitio, listo para leer o comparar.
- Ajusta Longitud mín. (8 por defecto) para saltarte las cadenas cortas, desmarca Analizar JSON anidado para quedarte en la primera capa o marca Mostrar coincidencias de baja confianza cuando busques claves binarias cortas.
La pestaña JSON a Base64 hace lo contrario: valida el JSON y lo codifica tal cual, minificado o formateado, con opciones URL-safe, sin relleno y de ajuste de línea.
Ejemplo: una respuesta de API con tres campos codificados
{
"event": { "body": "eyJvcmRlcklkIjo0MiwicXR5IjoyfQ==", "isBase64Encoded": true },
"file": { "name": "README.md", "encoding": "base64",
"content": "IyBEZW1vCgpIZWxsbyBmcm9tIHRoZSBSRUFETUUuCg==" },
"prefs": "eyJ0aGVtZSI6ImRhcmsifQ==",
"sha": "3b18e512dba79e4c8300dd08aeb37f8e728b8dad"
}
| Ruta | Parece | Decodificado |
|---|---|---|
$.event.body | JSON | {"orderId":42,"qty":2} |
$.file.content | texto | # Demo / Hello from the README. |
$.prefs | JSON | {"theme":"dark"} |
$.sha no aparece. Una cadena hex de 40 caracteres es Base64 válido solo por su alfabeto, pero es un hash de Git, y el escáner descarta a propósito las cadenas hex largas. Cada prefijo eyJ de la tabla es el Base64 de {", una señal rápida de JSON codificado.
Dónde se esconde Base64 en JSON
- Los eventos de AWS API Gateway y Lambda llevan los cuerpos binarios o comprimidos en
bodycon"isBase64Encoded": true. - La API de contenidos de GitHub devuelve los archivos en
contentcon"encoding": "base64", partidos en líneas con\n. Aquí los saltos de línea se ignoran. - Las partes de mensaje de la API de Gmail usan Base64 URL-safe en
body.data. La entrada URL-safe (-y_) se detecta automáticamente. - Los JWT en campos
access_tokenoid_tokense decodifican en cabecera y payload. Para comprobar la firma, usa el decodificador JWT. - Los data URI como
data:image/png;base64,…en camposavatarologose reconocen con su tipo MIME. - Los Secrets de Kubernetes en formato JSON; el decodificador de Secrets de Kubernetes añade funciones específicas para Secrets.
Hacerlo en Python
Un recorrido mínimo que informa de las cadenas que se decodifican en texto UTF-8:
import base64, binascii, json, sys
def walk(node, path="$"):
if isinstance(node, dict):
for k, v in node.items():
yield from walk(v, f"{path}.{k}")
elif isinstance(node, list):
for i, v in enumerate(node):
yield from walk(v, f"{path}[{i}]")
elif isinstance(node, str) and len(node) >= 8:
try:
text = base64.b64decode(node, validate=True).decode("utf-8")
yield path, text
except (binascii.Error, UnicodeDecodeError):
pass
for path, text in walk(json.load(open(sys.argv[1]))):
print(path, "=>", text[:60])
Se le escapan los valores URL-safe y sin relleno, y las cargas binarias como las imágenes, que es donde se va la mayor parte del trabajo de un escáner real. Consulta Base64 en Python para los detalles de la decodificación y Base64 frente a Base64URL para la diferencia de alfabeto.
Límites
- La detección es heurística. Los valores de menos de 8 caracteres y las claves binarias de aspecto aleatorio pueden pasarse por alto o marcarse como inciertos; baja Longitud mín. y activa las coincidencias de baja confianza para verlos.
- El análisis se detiene tras 200.000 cadenas y muestra hasta 1.000 filas, lo que cubre archivos HAR grandes sin bloquear la pestaña.
- El JSON no válido se indica con línea y columna. Para una sola cadena Base64 que se decodifica en JSON, usa Base64 a JSON.
Preguntas frecuentes
¿Cómo distingue la herramienta el Base64 de las cadenas normales?
Decodifica cada candidata y examina el resultado: UTF-8 legible, JSON válido o una firma de archivo conocida cuentan como confianza alta. Los hashes en hex, las cadenas solo de dígitos y las palabras normales se descartan, y los resultados binarios se marcan como probables o inciertos según la longitud y el relleno.
¿Puedo decodificar campos Base64 de un archivo HAR?
Sí. Suelta la exportación .har del panel Red del navegador. Los cuerpos de respuesta guardados con "encoding": "base64" aparecen en la tabla con su contenido decodificado, junto con cualquier Base64 dentro del JSON de peticiones y respuestas.
¿Qué pasa con los valores binarios, como las imágenes?
Se listan con el tipo de archivo detectado y un botón Descargar, y se quedan como Base64 en el panel de salida. Solo los valores de texto, JSON y JWT se sustituyen en su sitio.