Binärdaten nachvollziehen

Protobuf-Decoder

Prüfe zuerst die Wire-Bytes; ergänze eine eigenständige .proto-Datei nur für deklarierte Namen und Typen.

Protobuf-Decoder

Eingabe

Optionale .proto-Definition

Ergebnis

Bytes und Schema bleiben zur Verarbeitung in diesem Browser.

Optionen

Wire-Nachricht oder Varint eingeben.

Ein Protobuf-Decoder hilft, wenn aus einem Log nur noch rohe Bytes vorliegen. Auch ohne .proto-Datei kannst du Feldnummern, Wire-Typen und die exakten Grenzen jedes Werts sehen.

Das Protobuf Wire-Format kennt jedoch keine ursprünglichen Feldnamen. Ein längenbegrenzter Bereich kann Text, rohe Bytes, eine eingebettete Nachricht oder gepackte Zahlen enthalten. Die Anzeige nennt Möglichkeiten, keine erfundenen Gewissheiten.

Warum diesen Protobuf-Decoder verwenden?

Jede Deutung bleibt mit den Originalbytes verknüpft.

Vom Feld zurück zum Mitschnitt

Der Protobuf-Decoder zeigt für jeden Eintrag nullbasierte Start- und End-Offsets, Wire-Typ und Original-Hex. Bei einer abgeschnittenen Länge markiert er die betreffende Position.

Ein Bytestrom wird in nummerierte Felder und ihre jeweiligen Bytebereiche aufgeteilt.

Schema ergänzt den Befund

Füge eine eigenständige .proto ein und wähle den Nachrichtentyp. Das typisierte JSON erscheint zusätzlich zur rohen Wire-Ansicht; so bleiben Feldnummer und Quelle jedes Namens überprüfbar.

Eine rohe Feldstruktur ist mit einer durch das Schema benannten Struktur verbunden.

Drei Prüfungen vor der Interpretation

01

Kodierung bewusst wählen

Hex ist voreingestellt und akzeptiert Leerzeichen, Doppelpunkte und 0x. Für Base64 musst du umschalten. Kurze Zeichenfolgen können in beiden Formaten gültig sein.

02

Mehrdeutige Werte offen lassen

Wire-Typ 0 kann int, bool oder enum bedeuten; Wire-Typ 2 kann Text, Bytes, eingebettete Nachrichten oder packed Werte tragen. Erst die .proto legt den deklarierten Typ fest.

03

Nur frische Ergebnisse exportieren

Die automatische Prüfung wartet 350 ms. Nach dem Abschalten startet Strg/Cmd + Enter. Jede Änderung macht das bisherige Ergebnis veraltet und sperrt Kopieren sowie Download.

Was die Bytes tatsächlich verraten

Vier verbreitete Wire-Typen

Der Protobuf-Decoder liest varint, fixed64, längenbegrenzte und fixed32-Felder. Abgeschnittene Werte und veraltete group-Tags führen zu einem Fehler an der Byteposition.

Varint ohne Präzisionsverlust

Mit dem Varint-Werkzeug kannst du uint64 dekodieren und Dezimalzahlen wieder kodieren. Eine ausdrückliche ZigZag-Wahl liefert sint64; BigInt verhindert Rundung durch JavaScript Number.

Typisiertes JSON mit .proto

Ein lokal eingefügtes, in sich geschlossenes Schema benennt Felder und dekodiert Wiederholungen und Unternachrichten. Scheitert es, bleibt die rohe Wire-Ansicht verfügbar.

Hex aus den Eingabebytes

Der Export formatiert die eingegebenen Bytes neu, statt eine erratene Nachricht erneut zu serialisieren. Damit lässt sich das Ergebnis direkt mit dem Mitschnitt vergleichen.

Grenzen der Deutung

Ohne Schema keine Feldnamen
Ein Protobuf-Decoder ohne .proto kennt Nummer und Wire-Typ, aber weder den Originalnamen noch enum-Bezeichnungen oder oneof-Zugehörigkeit. Diese Angaben werden nicht geraten.
Gültiges UTF-8 ist kein Typbeweis
Dieselben längenbegrenzten Bytes können wie Text und wie eine Nachricht aussehen. Nutze Kandidaten nur zur Untersuchung und gleiche sie mit der Deklaration ab.
Keine importierten Abhängigkeiten
Es wird nur ein eigenständiger lokaler proto2- oder proto3-Text verarbeitet. Imports und entfernte URLs werden nicht geladen; löse Abhängigkeiten vorher im Projekt.
Keine gRPC-Entkapselung
Das Eingabefeld erwartet rohe Nachrichtenbytes. Einen gRPC-Header oder komprimierte Daten entfernt es nicht; auch JSON-zu-Protobuf für ganze Nachrichten gehört nicht dazu.

Fragen zum Protobuf-Decoder

Kann ich Protobuf ohne die .proto-Datei dekodieren?

Ja, für Struktur, Feldnummern, Wire-Typen, Offsets und Rohwerte. Die ursprünglichen Namen und deklarierten Typen brauchen eine passende .proto.

Was bedeuten die Protobuf-Wire-Typen?

Die niedrigen drei Bits eines Tags bestimmen die Speicherform des folgenden Werts. Sie verraten nicht alle fachlichen Typinformationen.

Sollte ich Protobuf als hex oder base64 einfügen?

Wähle Hex für Ziffernpaare und Base64 für einen entsprechend kodierten Mitschnitt. Das Werkzeug rät das Format absichtlich nicht.

Warum wird ein varint als mehrere verschiedene Zahlen angezeigt?

Eine identische Bitfolge kann als unsigned oder als ZigZag-kodierter signed Wert gelesen werden. Der deklarierte Typ entscheidet.

Wird die dekodierte Payload irgendwohin hochgeladen?

Nein. Bytes und optionales Schema werden in diesem Browser verarbeitet; das Werkzeug sendet sie nicht an einen Server.

Eine unterstützte Definition bereitet Probleme?

Nächste Nutzlast im Protobuf-Decoder prüfen

Nutze den Protobuf-Decoder erneut, wenn ein Mitschnitt erklärt werden muss. Halte Byte-Offsets und Roh-Hex neben der passenden .proto bereit.