# pbtk

> Recover Protobuf message definitions from compiled programs as readable .proto files. Extractors cover the Java runtimes in JAR, DEX and APK files (including ProGuard-obfuscated code), binaries that embed Protobuf reflection metadata, and web apps using the Protobuf-URL format. A GUI then binds a recovered message type to an HTTP endpoint, decodes hex-encoded captured samples into an editable field tree and resends edited messages, so analysts can relate each field to the response.

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

## Requirements & limits

- Latest release at review: 1.1.3, published 2026-08-21 on GitHub and PyPI; the reviewed master commit is four commits ahead of it, adding a version display, a dependency bump and new brand colors, and carries a 1.1.3.1 tag with no GitHub release or PyPI upload. The README's 2026 notes say Java extraction now works mostly with older APKs and the Chrome-based Protobuf-URL web extractor needs an update; finishing the automatic fuzzing part is listed as forthcoming.
- Requires Python 3.10+, PySide6 and the Python protobuf runtime. The README documents a snap for Ubuntu, the pbtk-git AUR package, and uv or pipx installs, and says Windows is supported. Java extraction needs a Java runtime (the Debian instructions install OpenJDK 8), and web extraction drives a Chrome or Chromium instance through websocket-client.
- Analysts supply the APK, JAR, DEX or native library to analyze and, optionally, hex-encoded request samples they captured themselves with a proxy such as mitmproxy or Wireshark. Replay sends the edited messages to the live endpoint the analyst configures. Extracted .protos and endpoint definitions are stored in a .pbtk folder in the home directory (a pbtk folder under APPDATA on Windows).
- GPL-3.0-or-later per pyproject.toml. The package bundles third-party executables: protoc builds, dex2jar 2.4 jars with their Apache-2.0 notice, and JAD decompiler binaries for which the repository includes no license text. Definitions recovered from minified code keep obfuscated names until the analyst renames them.

## Primary sources

1. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/README.md>
2. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/pyproject.toml>
3. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/LICENSE>
4. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/extractors/jar_extract.py#L46-L52>
5. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/extractors/web_extract.py#L57-L65>
6. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/utils/transports.py>
7. <https://github.com/marin-m/pbtk/tree/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/src/pbtk/utils/external>
8. <https://github.com/marin-m/pbtk/blob/7c5fa2ca4cee9e8a2862c6e3332e7b8a850bb8e8/TROUBLESHOOTING.md>
9. <https://github.com/marin-m/pbtk/releases/tag/1.1.3>
10. <https://pypi.org/project/pbtk/1.1.3/>

## More in Protocols

- [SteamKit](https://awesomerea.org/resources/steamkit/index.md) · Tool
- [protobuf-inspector](https://awesomerea.org/resources/protobuf-inspector/index.md) · Tool
- [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

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