Tool
protobuf-inspector
Parses Protocol Buffers blobs (proto2 or proto3) without their .proto definition and prints a colored view of the fields in wire order, trying each length-delimited chunk as a nested message, then a packed array, a string and finally a hexdump. Analysts record what they work out in a protobuf_config.py file, with field types and names, message and enum types and custom native types, until the parser no longer has to guess. Field names, zig-zag encoding, signedness and integer-versus-float choices cannot be read from the wire, and the README says guesses can be wrong, especially for small chunks.
Requirements & limits
- Development is dormant: the only release, 0.2 on PyPI and tagged v0.2.0, and the reviewed master commit both date from 2020-11-24, with no later commits. This records activity only, not a verdict on correctness or on compatibility with current Python versions.
- Install with pip (setup.py declares Python >=3.3) and pipe one raw protobuf blob to protobuf_inspector on standard input, optionally naming the root message type. The README documents no capture, gRPC or HTTP handling, so blobs must first be extracted from traffic or files the analyst is entitled to inspect.
- The CLI searches the working directory and each parent up to the filesystem mount point for protobuf_config.py and runs it with runpy, so a config file executes as Python code. A dump type writes matching chunks to dump.N files in the working directory, and parse errors stop inside the affected field and make the command exit non-zero.
- ISC license. The README says the Python API was not designed as a library and may change. The repository has no tests or CI configuration; nothing was parsed in this review, and the reviewed sources establish no REA connection.
About this entry
- Type
- Tool
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Targets
- Protocol
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- CONFIG.md GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- protobuf_inspector/__main__.py GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- protobuf_inspector/types.py GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- setup.py GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- LICENSE GitHub · mildsunrise/protobuf-inspector · Revision 3211be9
- https://pypi.org/project/protobuf-inspector/0.2/
More in Protocols
- libimobiledevice · Tool
- Sniffle · Tool
- Packetry · Tool
- open-appleremote: Siri Remote protocol reconstruction · Case study
- GAMEKB-K17: reconstructing a macropad configuration protocol · Case study
- cooler-lcd: a Thermalright display protocol implementation · Case study