DevToys Web Pro iconDevToys Web ProBlog
Évaluez-nous :
Essayez l’extension de navigateur :

Décodeur / Encodeur Protobuf

Décodé
Format :

Protobuf encodé en Base64

  • Champs décodés (2)

  • Champ n°Type de filValeur
    1Varint(0)150
    2Length-delimited(2)testing
    Détails techniques

    Comment fonctionne le décodeur Protobuf

    Ce que fait l’outil

    Le décodeur Protobuf analyse des données binaires brutes Protocol Buffer sans nécessiter de fichier de schéma .proto, en affichant les numéros de champs, les types et les valeurs du format « wire ». Il prend aussi en charge l’encodage de JSON vers du binaire protobuf lorsque vous fournissez une définition .proto. Cela permet d’inspecter des charges utiles protobuf opaques capturées depuis du trafic réseau ou stockées dans des bases de données, sans accès au schéma d’origine.

    Cas d’usage courants pour les développeurs

    Les développeurs backend utilisent le décodage protobuf sans schéma pour rétroconcevoir des API gRPC non documentées, déboguer des messages sérialisés dans des topics Kafka ou inspecter des charges utiles binaires dans des colonnes de base de données. Les chercheurs en sécurité analysent du trafic réseau encodé en protobuf lors de tests d’intrusion. Le mode d’encodage aide les développeurs à vérifier que leurs définitions .proto produisent la sortie binaire attendue avant de déployer des changements de schéma sur des services en production.

    Formats de données, types ou variantes

    Protocol Buffers utilisent un format « wire » compact avec cinq types : varint (int32, int64, bool, enum), fixe 64 bits (double, fixed64), à longueur délimitée (string, bytes, messages imbriqués, champs répétés packés), fixe 32 bits (float, fixed32) et les types start/end group obsolètes. Sans schéma, le décodeur ne peut pas distinguer une chaîne d’un message imbriqué (les deux sont à longueur délimitée), il tente donc les deux interprétations et affiche l’analyse la plus probable.

    Pièges courants et cas limites

    Le décodage sans schéma est intrinsèquement ambigu — un varint peut être un int32 signé (zigzag), un uint32 non signé ou un booléen, et les champs à longueur délimitée peuvent être des chaînes, des octets ou des messages imbriqués. Les noms de champs sont perdus dans l’encodage binaire et n’apparaissent que sous forme d’étiquettes de champ numériques. Les champs répétés empaquetés sont indiscernables d’un champ unique de type bytes sans le contexte du schéma. Recoupez toujours la sortie décodée avec toute documentation disponible afin de lever les ambiguïtés.

    Quand utiliser cet outil plutôt que du code

    Utilisez cet outil dans le navigateur pour une inspection rapide des charges utiles protobuf capturées lorsque vous n’avez pas le fichier .proto ou que vous souhaitez vérifier l’encodage sans mettre en place une chaîne d’outils de build. Pour les systèmes en production, utilisez protoc avec les fichiers de schéma appropriés, le code généré spécifique au langage et les services de réflexion gRPC qui offrent une sécurité de type complète, une compatibilité ascendante et une intégration avec le système de build de votre application.