# 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.

- Type: Tool
- Targets: Protocol
- Category: Protocol analysis tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-19
- Added to the catalog: 2026-10-29
- Original resource: <https://github.com/mildsunrise/protobuf-inspector>
- Primary source: <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/README.md>
- Catalog page: <https://awesomerea.org/resources/protobuf-inspector/>
- Record JSON: <https://awesomerea.org/resources/protobuf-inspector/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/protobuf-inspector/index.md)

## 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.
- 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.

## Primary sources

1. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/README.md>
2. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/CONFIG.md>
3. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/protobuf_inspector/__main__.py>
4. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/protobuf_inspector/types.py>
5. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/setup.py>
6. <https://github.com/mildsunrise/protobuf-inspector/blob/3211be9c2fb1d24e788ff492571cd0ba895c519a/LICENSE>
7. <https://pypi.org/project/protobuf-inspector/0.2/>

## More in Protocols

- [libimobiledevice](https://awesomerea.org/resources/libimobiledevice/index.md) · Tool
- [Sniffle](https://awesomerea.org/resources/sniffle/index.md) · Tool
- [Packetry](https://awesomerea.org/resources/packetry/index.md) · Tool
- [Caring Caribou](https://awesomerea.org/resources/caringcaribou/index.md) · Tool
- [protodump](https://awesomerea.org/resources/protodump/index.md) · Tool
- [CAN Commander](https://awesomerea.org/resources/can-commander/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
