BBPB(1)

πŸ“¦ version 1.4.2, in ubuntu stonking

πŸ’– BBPB πŸ’–

okay bestie, gather round, because this is the bbpb manual page and she is iconic. this is from the User Commands corner of the manual, and she is about to decode and encode Protocol Buffer messages with no .proto definition. no cap. πŸ¦‹


✨ NAME ✨

bbpb β€” decode and encode Protocol Buffer messages without a .proto definition. literally doing it with zero paperwork, main character energy fr fr πŸ’…


🌸 SYNOPSIS 🌸

bbpb [OPTIONS]

python3 -m blackboxprotobuf [OPTIONS]

two ways in, same diva. pick your fighter ✨


πŸŽ€ DESCRIPTION πŸŽ€

so bbpb is the command line interface for the Blackbox protobuf library. 🫢

she lets you decode and re-encode Protocol Buffer (protobuf) messages without needing access to the original .proto descriptor file. the way that she just... doesn't need it?? obsessed. 😭

this tool is meant for reverse engineering and security testing scenarios β€” you know, the times when the protobuf definitions simply are not available but the messages still need to be inspected or modified. iykyk. πŸ”₯

by default, input is read from standard input and output is written to standard output. stdin β†’ stdout pipeline princess. πŸ‘‘


🌈 INVOCATION 🌈

the CLI can be invoked as:

bbpb

or:

python3 -m blackboxprotobuf

either way she shows up and she slays. πŸ’œ


⭐ MODES ⭐

the CLI operates in two primary modes:

  • Decoding (the default, she's just Like That πŸ’…)
  • Encoding (--encode)

πŸ¦‹ DECODING πŸ¦‹

in decoding mode, bbpb reads a protobuf binary payload from stdin and outputs a JSON representation. ✨

by default, the output is a JSON object containing:

  • message β€” the decoded message
  • typedef β€” the generated type definition

and now, the flags, bestie. every single one. no skipping. 🫢

  • -r, --raw-decode β€” output only the decoded JSON message, without the type definition. just the message, ma'am. no extras. πŸ’…
  • -it, --input-type FILE β€” read a type definition from FILE instead of inferring all types. tell her what she's working with. πŸ“–
  • -ot, --output-type FILE β€” write the generated type definition to FILE. save it for later, queen. πŸ’Ύ
  • -j, --json-protobuf β€” accept or produce a wrapped JSON format containing:
protobuf_data  (base64 encoded)
typedef        (optional type definition)

this format is useful for tool integration. very "plays well with others" of her. 🀝


πŸŽ€ ENCODING πŸŽ€

enable encoding mode with:

--encode
-e

in encoding mode, bbpb reads JSON input containing:

message
typedef

and outputs encoded protobuf bytes to stdout. ✨

if --input-type is provided and the JSON input does not contain a "message" field, the entire input JSON is treated as the message. yes, the whole thing. she said "i'll take all of it". πŸ˜­πŸ’–

with --json-protobuf, the output will be a JSON object containing:

protobuf_data (base64 encoded)
typedef

🌸 PAYLOAD ENCODING 🌸

not me forgetting to mention β€” bbpb automatically detects and unwraps certain payload wrappers:

  • gzip compressed protobuf
  • gRPC-framed protobuf

if detected, the wrapper type is stored in the output JSON as payload_encoding, and it is automatically reapplied during encoding. she remembers. she always remembers. πŸ‘‘

  • -pe, --payload-encoding ENCODING β€” manually override the payload encoding. supported values:
    • none
    • gzip
    • grpc
πŸ’€ heads up bestie: if you're forcing an override with -pe, make sure it's one of those three exact values, okay? no vibes-based encoding names.

✨ EXAMPLES ✨

πŸ¦‹ Simple decode

cat test_data | bbpb -r

πŸŽ€ Save generated type definition

cat test_data | bbpb -ot type.json

πŸ’œ Decode using saved type

cat test_data | bbpb -it type.json

πŸ”₯ Decode, edit, re-encode

cat test_data | bbpb > message.json
vi message.json
cat message.json | bbpb -e > new_test_data

the whole glow-up pipeline: decode, vibe-check the JSON in vi, re-encode. periodt. πŸ’…


🌈 SEE ALSO 🌈

  • blackboxprotobuf(3) β€” go read her sister page, she's cool too 🫢

πŸ‘‘ LICENSE πŸ‘‘

Expat

short, sweet, legally iconic. ✨


Copyright (c) 2018-2026 NCC Group Plc

protecting the girlies since 2018, no cap. πŸ›‘οΈ


πŸŽ€ MAN PAGE πŸŽ€

Enkelena Haxhija (EnkelenaH) created this man page based on the upstream README. we stan a documentation queen. πŸ‘‘πŸ’œ


okay that's the whole thing, bestie!! this was bbpb version 1.4.2, from February 2026, and honestly she ate. go decode something and text me how it went. πŸ¦‹βœ¨πŸ’–

πŸ“¦ where this page comes from