正在解码没有架构的protobuf

本文关键字:protobuf 解码 | 更新日期: 2023-09-27 18:22:11

是否可以在没有架构的情况下使用工具或任何将二进制数据解码为可读格式的东西来解码protobuf序列化文件?

正在解码没有架构的protobuf

您经常可以推断模式。事实上,IIRC——"protoc"工具——有一组参数(--decode_raw,IIRC),它将在其中准确地做到这一点——进行知情猜测。然而,只是猜测-格式不明确,因为多种不同类型的数据可以存储在相同的机制中-例如,带长度前缀的块可以是:

  • 子对象(任何用户类型)
  • (各种基元类型的)压缩数组
  • utf-8字符串
  • 原始字节[]
  • 可能还有其他我忘了的事情

同样,4字节的固定宽度块可以是固定宽度整数或浮点;整数可以是有符号的,也可以是无符号的。

我使用protoc --decode_raw,就像@Marc Gravell说的那样,但如果你想用javascript或CLI来做,我的工具/库rawproto可以很方便地进行编程访问,比如导入输出的JSON并用常规的东西解析它。如果你想构建自己的HTML/javascript GUI工具来处理原始的protobuf,你也可以在网上使用它。

你的问题特别是关于C#的,但你可能会从我的东西中获得灵感,或者能够使用它来生成proto SDL(通常需要一点手动调整,但这可能是反向工程proto的一个良好开端),你可以在正常的C#protobuf中使用它。