I'd like to find a way to convert a binary protobuf message into a human readable description of the contained data, without using the .proto files.
The background is that I have a .proto message that it being rejected by the parser on Android, but it's not entirely clear why. I could go through the message by hand, but it's rather tedious.
I tried protoc --decode_raw
, but it just gives the error "Failed to parse input.". I google hoping/expecting someone would have done a nice web utility that might do this, but haven't found anything obvious.
I'm just hoping to get some output like:
field 1: varint: 128
field 4: string: "foo"
Any pointers in the right direction would be most welcome!
For Posterity: Google's protocol buffer tools have the ability to decode raw buffers.
Just send the unknown buffer to it and pass the--decode_raw
flag
$ cat has_no_proto.buff | protoc --decode_raw
2 {
2: "Error retrieving information from server. [RH-02]"
}
So here's a message with field 2 set to an embedded message which in turn has its second field set to a string telling me I pissed off Google Play.
Type information isn't definite (it looks like it will try to display all binary data as strings -- but your requirement for varint/string/submessage distinction is met).