6

是否可以在不了解用于写入该数据的类型的情况下转储(查看)以 PB 格式写入的数据?

我发现https://stackoverflow.com/a/10253515/883738

简而言之,在网络上,protobuf 被编码为 3 元组,其中键是分配给 .proto 模式中的字段的字段编号。类型是 之一。它包含足够的信息来解码 3 元组的值,即它告诉您该值有多长。

我的最终目标是为 Fiddler2 编写扩展程序,以查看以 PB 格式发送/接收的内容。

4

2 回答 2

6

为此有一个wireshark工具,iirc。

这里的问题是,如果您不知道架构,则 protobuf 格式不明确:

  • 固定 32 可以是浮点数或有符号或无符号整数(32 位)
  • 固定 64 可以是双精度或有符号或无符号整数(64 位)
  • varint 可以是有符号或无符号整数、之字形整数或布尔值
  • 字符串可以是 utf-8 字符串、原语的打包数组、子消息或原始字节

事实上,唯一明确的标记是开始/结束组,它们已被半弃用!

所以:这是可行的,但您可能需要对同一数据进行多种解释

您也可以只列出字段编号:没有二进制格式的成员名称

于 2012-09-08T16:14:45.000 回答
2

这里有一个 Fiddler PB 实现(没用过):https ://github.com/SecurityInnovation/ProtoMiddler

于 2014-09-18T01:03:04.930 回答