DevToys Web Pro iconDevToys Web ProBlog
Bewerten Sie uns:
Browser-Erweiterung ausprobieren:

Protobuf-Dekodierer / -Kodierer

Dekodiert
Format:

Base64-kodiertes Protobuf

  • Dekodierte Felder (2)

  • Feld-Nr.Wire-TypWert
    1Varint(0)150
    2Length-delimited(2)testing
    Technische Details

    Wie der Protobuf-Decoder funktioniert

    Was das Tool macht

    Der Protobuf-Decoder parst rohe Protocol-Buffer-Binärdaten, ohne eine .proto-Schemadatei zu benötigen, und zeigt die Feldnummern, Typen und Werte im Wire-Format an. Er unterstützt außerdem das Encodieren von JSON zurück in Protobuf-Binärdaten, wenn du eine .proto-Definition bereitstellst. Dadurch ist es möglich, undurchsichtige Protobuf-Payloads zu inspizieren, die aus Netzwerkverkehr mitgeschnitten oder in Datenbanken gespeichert wurden, ohne Zugriff auf das ursprüngliche Schema.

    Häufige Anwendungsfälle für Entwickler

    Backend-Entwickler nutzen schema-loses Protobuf-Decoding, um undokumentierte gRPC-APIs zu reverse-engineeren, serialisierte Nachrichten in Kafka-Topics zu debuggen oder Binär-Payloads in Datenbankspalten zu inspizieren. Sicherheitsforscher analysieren protobuf-kodierten Netzwerkverkehr während Penetrationstests. Der Encoding-Modus hilft Entwicklern zu verifizieren, dass ihre .proto-Definitionen die erwartete Binärausgabe erzeugen, bevor sie Schemaänderungen in Produktionsservices ausrollen.

    Datenformate, Typen oder Varianten

    Protocol Buffers verwenden ein kompaktes Wire-Format mit fünf Wire-Typen: Varint (int32, int64, bool, enum), 64-Bit-Fixed (double, fixed64), Length-Delimited (string, bytes, eingebettete Messages, gepackte wiederholte Felder), 32-Bit-Fixed (float, fixed32) sowie die veralteten Start/End-Group-Typen. Ohne Schema kann der Decoder nicht zwischen einem String und einer eingebetteten Message unterscheiden (beides ist length-delimited), daher versucht er beide Interpretationen und zeigt das wahrscheinlichste Parse-Ergebnis.

    Häufige Fallstricke und Sonderfälle

    Schema-loses Decodieren ist von Natur aus mehrdeutig – ein Varint kann ein signiertes int32 (Zigzag), ein unsigniertes uint32 oder ein Boolean sein, und längenbegrenzte Felder können Strings, Bytes oder verschachtelte Messages sein. Feldnamen gehen bei der binären Kodierung verloren und erscheinen nur als numerische Feld-Tags. Gepackte wiederholte Felder sehen ohne Schema-Kontext identisch zu einem einzelnen Bytes-Feld aus. Gleichen Sie die decodierte Ausgabe immer mit jeder verfügbaren Dokumentation ab, um Mehrdeutigkeiten aufzulösen.

    Wann dieses Tool statt Code verwenden

    Verwenden Sie dieses Browser-Tool zur schnellen Inspektion erfasster Protobuf-Payloads, wenn Ihnen die .proto-Datei fehlt oder Sie die Kodierung verifizieren möchten, ohne eine Build-Toolchain einzurichten. Für Produktionssysteme verwenden Sie protoc mit passenden Schema-Dateien, sprachspezifisch generiertem Code und gRPC-Reflection-Services, die vollständige Typsicherheit, Vorwärtskompatibilität und Integration in das Build-System Ihrer Anwendung bieten.