In general, you can't work with protobufs if you don't know the message format. In order to be compact the wire format doesn't include all the information necessary to reconstruct the message. JSON and XML contain a lot of extra stuff in the message that allows you to (kind of) work with them even if you have no idea what they contain, but the trade-off there is a bloated format.
By the way, do not try to "guess" what a message is by going down a list of possible message formats and trying one after the other until your message successfully deserializes. It's entirely possible to "get lucky" and have a message of one type successfully deserialize as a different type, but with bogus data. I have been bitten by that one rather badly. :(
Look at union types if you want to wrap several different message types in a single message: https://developers.google.com/protocol-buffers/docs/techniques#union
There is a workaround (mentioned in the comments) of using self-describing messages, but I've never found them to be useful and evidently google didn't either: https://developers.google.com/protocol-buffers/docs/techniques#self-description