Décodeur Protobuf en ligne
Décodez un message binaire Protocol Buffers sans le schéma .proto, dans votre navigateur. Vos octets restent sur votre appareil.
Vos octets protobuf sont décodés localement dans votre navigateur et ne sont jamais téléversés, mais évitez de coller des messages contenant de vrais secrets ou données personnelles dans tout outil.
Besoin de décoder un JWT à la place ? Essayez le Décodeur JWT.
À propos de Décodeur Protobuf
Ce décodeur protobuf lit un message binaire Protocol Buffers directement depuis ses octets, sans aucun fichier .proto requis. Collez la charge utile en hex ou base64 et le décodeur parcourt le format filaire brut : il lit chaque tag pour retrouver le numéro de champ et le type filaire, puis interprète la valeur. Les varints sont affichés en lectures int64, uint64 et zig-zag ; les champs fixed64 et fixed32 exposent leurs vues entier, double et float ; et les champs à longueur préfixée sont d’abord tentés comme messages imbriqués, puis comme texte UTF-8, puis comme octets hex bruts. Le résultat est rendu sous forme d’arbre de champs indenté, les champs répétés étant regroupés sous le même numéro. Il est conçu pour les ingénieurs qui déboguent du trafic gRPC, des paquets capturés ou des blobs proto opaques issus des logs. Tout s’exécute dans votre navigateur, les octets que vous collez sont décodés localement et ne quittent jamais votre appareil.
Fonctionnalités
- Décode tout message Protocol Buffers depuis des octets bruts sans avoir besoin du schéma .proto
- Accepte une saisie hex ou base64 avec détection automatique et bascule de format manuelle
- Lit les types filaires varint, fixed64, à longueur préfixée et fixed32 depuis le tag
- Affiche les varints en interprétations int64, uint64, zig-zag signé et booléen
- Rend les champs fixed64/fixed32 en vues entier, double et float, plus octets bruts
- Décode récursivement les messages imbriqués et se rabat sur des chaînes UTF-8 ou des octets hex
- Regroupe les champs répétés sous le même numéro de champ dans un arbre indenté
- Signale une erreur claire pour une saisie tronquée, malformée ou non-protobuf
Comment utiliser Décodeur Protobuf
- Copiez votre charge utile protobuf sous forme de chaîne hex ou base64.
- Collez-la dans la zone du message Protobuf.
- Laissez le format sur Auto, ou choisissez Hex ou Base64 si la détection est incorrecte.
- Lisez l’arbre de champs décodé, en dépliant les messages imbriqués pour inspecter les valeurs.
Exemple
Entrée
08 96 01 12 07 74 65 73 74 69 6e 67
Sortie
#1 varint wire 0 150
#2 string wire 2 "testing"
Le champ 1 est un varint (150) et le champ 2 une chaîne UTF-8 à longueur préfixée.
Erreurs courantes et dépannage
- Le décodeur affiche « Input is not valid hex » ou « Input is not valid base64 ». — Basculez le format pour qu’il corresponde à vos données, ou supprimez les caractères parasites ; le hex doit être des paires de 0-9a-f et le base64 doit utiliser l’alphabet standard ou URL-safe.
- Un champ qui devrait être une chaîne est rendu comme un message imbriqué ou du hex brut. — Sans le fichier .proto, le décodeur devine à partir des octets ; les champs à longueur préfixée sont ambigus, donc un sous-message qui ressemble par hasard à du texte, ou l’inverse, peut être mal lu.
- Le décodage échoue avec « Length-delimited field runs past the end of the input ». — La charge utile est tronquée ou n’est pas réellement du protobuf. Recapturez le message complet et confirmez que vous avez copié chaque octet, y compris ceux de fin.
- Les types filaires de groupe sont signalés comme non pris en charge. — Les types filaires 3 et 4 (start-group/end-group) sont dépréciés dans protobuf et rarement émis ; réencodez le message avec des champs proto2/proto3 plutôt que des groupes.
Foire aux questions
- Puis-je décoder du protobuf sans le fichier .proto ?
- Oui. Ce décodeur protobuf lit le format filaire brut, il retrouve donc chaque numéro de champ, type filaire et valeur directement depuis les octets. Sans le schéma, il ne peut pas connaître les noms de champ d’origine ni savoir si un nombre était signé, non signé ou une énumération, il affiche donc les interprétations plausibles côte à côte.
- Que signifient les types filaires de protobuf ?
- Chaque tag de champ encode un type filaire : 0 est un varint (ints, bools, énumérations), 1 est fixed64 (sfixed64, double), 2 est à longueur préfixée (chaînes, octets et messages imbriqués) et 5 est fixed32 (sfixed32, float). Le décodeur étiquette chaque champ avec son type filaire pour que vous puissiez le rattacher à la définition source.
- Dois-je coller le protobuf en hex ou en base64 ?
- Les deux fonctionnent. Laissez la bascule sur Auto et l’outil détecte le format ; un hex propre (paires de chiffres hex, avec espaces, deux-points ou préfixes 0x optionnels) est lu comme hex et tout le reste est traité comme base64, y compris le base64 URL-safe. Basculez manuellement si vos données sont ambiguës.
- Pourquoi un varint est-il affiché comme plusieurs nombres différents ?
- Un varint protobuf peut représenter un int64, un uint64 ou un sint64 encodé en zig-zag, et le format filaire n’enregistre pas lequel. Le décodeur les affiche tous, plus une lecture booléenne pour 0 et 1, pour que vous puissiez choisir l’interprétation qui correspond à votre schéma.
- La charge utile décodée est-elle téléversée quelque part ?
- Non. Le décodage protobuf s’exécute entièrement dans votre navigateur grâce à un analyseur de format filaire en pur JavaScript, les octets que vous collez sont donc traités sur votre appareil et jamais envoyés à un serveur.
Outils associés
Tous les outils ArrayKit