Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
protobuf-inspector — 🕵️ Tool zum Reverse-Engineering von Protocol Buffers mit unbekannter Definition | Kitploit
Tools/GitHubGitHub/mildsunrise/protobuf-inspector
Reverse EngineeringDienstprogramme & FrameworksBinäranalyse
GitHubmildsunrise/protobuf-inspector

protobuf-inspector

🕵️ Tool zum Reverse-Engineering von Protocol Buffers mit unbekannter Definition

Repository anzeigen
1.1k105vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

protobuf-inspector

Einfaches Programm, das Google Protobuf codierte Blobs (Version 2 oder 3) parsen kann, ohne deren zugehörige Definition zu kennen. Es gibt eine schöne, farbige Darstellung ihres Inhalts aus. Beispiel:

Hauptbildschirmfoto

Wie man sieht, sind die Feldnamen offensichtlich verloren, zusammen mit einigen High-Level-Details wie:

  • ob ein Varint [Zig-Zag-Codierung][] verwendet oder nicht (standardmäßig wird kein Zig-Zag angenommen)
  • ob ein 32-Bit/64-Bit-Wert eine Ganzzahl oder eine Gleitkommazahl ist (beide werden standardmäßig angezeigt)
  • Vorzeichen (standardmäßige automatische Erkennung)

Aber protobuf-inspector kann die Nachrichtenstruktur meistens korrekt erraten. Wenn es eingebettete Binärdaten in einem Feld findet, versucht es zunächst, diese als Nachricht zu parsen. Schlägt das fehl, werden die Daten als Zeichenkette oder Hexdump angezeigt. Es kann Fehler machen, besonders bei kleinen Stücken.

Es zeigt die Felder in der Reihenfolge an, in der sie im Draht codiert sind, und ist daher für diejenigen nützlich, die sich mit dem [Drahtformat][] vertraut machen wollen, sowie für Parser-Entwickler, zusätzlich zur Rückentwicklung.

Verwendung

Sie können es mit pip installieren:

root@kitploit:~
pip install protobuf-inspector

Dies installiert den Befehl protobuf_inspector. Führen Sie ihn aus, indem Sie den Protobuf-Blob auf stdin geben:

root@kitploit:~
protobuf_inspector < my-protobuf-blob

Nach der ersten (blinden) Analyse des Blobs beginnen Sie normalerweise, einige der Felder zu definieren, damit protobuf-inspector Ihre Blobs besser parsen kann, bis Sie eine vollständige Protobuf-Definition haben und der Parser nichts mehr erraten muss.

Lesen Sie hier über das Definieren von Feldern.

Analysefehler

Wenn ein Analysefehler gefunden wird, wird die Analyse innerhalb dieses Feldes gestoppt, läuft aber außerhalb der Hierarchie unbeeinflusst weiter. Der Stacktrace wird an der Stelle ausgegeben, an der der Feldinhalt stehen würde, zusammen mit einem Hexdump, der angibt, wo die Analyse in diesem Stück gestoppt wurde, falls zutreffend.

Wenn Sie also eine uint32 angegeben haben und ein größeres Varint gefunden wird, erhalten Sie etwa:

Fehler bei ungültigem Varint

Wenn Sie angegeben haben, dass ein Feld eine eingebettete Nachricht enthält, dort aber ungültige Daten gefunden wurden, erhalten Sie:

Fehler bei ungültiger Nachricht

Bitte beachten Sie, dass main.py mit einem Exit-Code ungleich Null beendet wird, wenn einer oder mehrere Analysefehler aufgetreten sind.

Tricks

Es gibt einige Tricks, die Sie anwenden können, um bei einem Blob Zeit zu sparen:

  1. Wenn Sie sicher sind, dass ein Varint keine Zig-Zag-Codierung verwendet, aber sich über das Vorzeichen noch nicht sicher sind, lassen Sie es als varint. Wenn es die Zig-Zag-Codierung verwendet, verwenden Sie sint64, es sei denn, Sie sind sicher, dass es 32-Bit und nicht 64-Bit ist.

  2. Wenn ein Stück fälschlicherweise als packed chunk oder eingebettete Nachricht erkannt wird, oder wenn Sie etwas Seltsames an der geparsten Nachricht sehen und die Rohdaten sehen möchten, geben Sie einen Typ von bytes an. Wenn es dagegen aus irgendeinem Grund nicht als eingebettete Nachricht erkannt wird und es sollte, erzwingen Sie message, um den Grund zu sehen.

  3. Wenn Sie die Rohdaten eines Stücks zur besseren Analyse in eine Datei extrahieren möchten, geben Sie einen Typ von dump an, und protobuf-inspector erstellt jedes Mal, wenn es einen passenden Blob findet, dump.0, dump.1 usw.

  4. protobuf-inspector parst den Blob standardmäßig als Nachricht vom Typ root, aber das ist nur eine Voreinstellung. Wenn Sie viele Nachrichtentypen definiert haben, können Sie einen Typnamen als optionales Argument übergeben, und protobuf-inspector verwendet diesen anstelle von root:

Programmgesteuerter Zugriff

Einfaches Beispiel:

root@kitploit:~
from protobuf_inspector.types import StandardParser

parser = StandardParser()
with open('my-blob', 'rb') as fh:
   output = parser.parse_message(fh, "message")
print(output)

Dieses Projekt wurde jedoch ursprünglich nicht für die Verwendung als Bibliothek entwickelt, und seine API könnte sich ändern. Für ein komplexeres Beispiel siehe protobuf_inspector/__main__.py.

Tool herunterladen
root@kitploit:~
protobuf_inspector request < my-protobuf-blob