Kaitai Struct can read any 'ol random data format while protobufs (I assume) are only able to read/write a specific protocol.
I was playing with it a while back along with wasm and got it to decode all the individual opcodes (along with the rest of the file) but it turned out to be really, really slow in the generated python version. C++ probably has much better performance but I haven't actually tested the difference.