Comment décoder les champs Base64 d’un JSON
- Collez le JSON dans Entrée · JSON, ou déposez un fichier
.jsonou.har. - Le tableau liste chaque correspondance avec son Chemin, la colonne Ressemble à, un niveau de confiance et l’aperçu Décodé, ainsi que Copier le décodé et Télécharger.
- Le panneau de sortie contient tout le document, avec les valeurs texte, JSON et JWT décodées sur place, prêt à être lu ou comparé.
- Ajustez Longueur min. (8 par défaut) pour ignorer les chaînes courtes, décochez Analyser le JSON imbriqué pour vous arrêter au premier niveau, ou cochez Afficher les correspondances peu fiables quand vous cherchez de courtes clés binaires.
L’onglet JSON en Base64 fait l’inverse : il valide le JSON et l’encode tel quel, minifié ou formaté, avec les options URL-safe, sans remplissage et retour à la ligne.
Exemple : une réponse d’API avec trois champs encodés
{
"event": { "body": "eyJvcmRlcklkIjo0MiwicXR5IjoyfQ==", "isBase64Encoded": true },
"file": { "name": "README.md", "encoding": "base64",
"content": "IyBEZW1vCgpIZWxsbyBmcm9tIHRoZSBSRUFETUUuCg==" },
"prefs": "eyJ0aGVtZSI6ImRhcmsifQ==",
"sha": "3b18e512dba79e4c8300dd08aeb37f8e728b8dad"
}
| Chemin | Ressemble à | Décodé |
|---|---|---|
$.event.body | JSON | {"orderId":42,"qty":2} |
$.file.content | texte | # Demo / Hello from the README. |
$.prefs | JSON | {"theme":"dark"} |
$.sha n’est pas listé. Une chaîne hex de 40 caractères est du Base64 valide si l’on ne regarde que l’alphabet, mais c’est un hachage Git, et l’analyseur écarte volontairement les longues chaînes hex. Chaque préfixe eyJ du tableau est le Base64 de {", un signe rapide de JSON encodé.
Où le Base64 se cache dans le JSON
- Les événements AWS API Gateway et Lambda transportent les corps binaires ou compressés dans
bodyavec"isBase64Encoded": true. - L’API contents de GitHub renvoie les fichiers dans
contentavec"encoding": "base64", découpés en lignes par des\n. Les sauts de ligne sont ignorés ici. - Les parties de message de l’API Gmail utilisent du Base64 URL-safe dans
body.data. Une entrée URL-safe (-et_) est détectée automatiquement. - Les JWT des champs
access_tokenouid_tokenvoient leur en-tête et leur payload décodés. Pour vérifier la signature, utilisez le décodeur JWT. - Les data URI comme
data:image/png;base64,…dans des champsavataroulogosont reconnues avec leur type MIME. - Les Secrets Kubernetes au format JSON ; le décodeur de Secret Kubernetes ajoute des fonctions propres aux Secrets.
Le faire en Python
Un parcours minimal qui signale les chaînes qui se décodent en texte 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])
Il manque les valeurs URL-safe et sans remplissage, ainsi que les payloads binaires comme les images, et c’est là que se concentre l’essentiel du travail d’un véritable analyseur. Voir Base64 en Python pour les détails du décodage et Base64 ou Base64URL pour la différence d’alphabet.
Limites
- La détection est heuristique. Les valeurs de moins de 8 caractères et les clés binaires d’apparence aléatoire peuvent être manquées ou marquées incertaines ; baissez Longueur min. et activez les correspondances peu fiables pour les voir.
- L’analyse s’arrête après 200 000 chaînes et affiche au plus 1 000 lignes, ce qui couvre les gros fichiers HAR sans figer l’onglet.
- Un JSON non valide est signalé avec la ligne et la colonne. Pour une seule chaîne Base64 qui se décode en JSON, utilisez Base64 en JSON.
FAQ
Comment l'outil distingue-t-il le Base64 des chaînes ordinaires ?
Il décode chaque candidat et examine le résultat : de l’UTF-8 lisible, du JSON valide ou une signature de fichier connue donnent une confiance élevée. Les hachages hex, les chaînes composées uniquement de chiffres et les mots ordinaires sont écartés, et les résultats binaires sont marqués probables ou incertains selon la longueur et le remplissage.
Puis-je décoder les champs Base64 d'un fichier HAR ?
Oui. Déposez l’export .har du panneau Réseau du navigateur. Les corps de réponse stockés avec "encoding": "base64" apparaissent dans le tableau avec leur contenu décodé, ainsi que tout Base64 présent dans le JSON des requêtes et des réponses.
Que deviennent les valeurs binaires comme les images ?
Elles sont listées avec le type de fichier détecté et un bouton Télécharger, et restent en Base64 dans le panneau de sortie. Seules les valeurs texte, JSON et JWT sont remplacées sur place.