通过winpcap API读取protobuf消息
Reading protobuf messages via winpcap API
我使用winpcap来捕获网络流量,我知道这个流量主要由序列化的协议缓冲区交换组成。如果我知道系统可能传输的所有类型的消息,我如何在流量中检测这些消息?
这将有点困难,因为协议缓冲区不是自描述的,当您读取原始字节流时,没有简单的方法来确定一条消息何时结束,另一条消息何时开始。但是,如果您对wire格式有很好的理解,那么您可以通过一些努力来恢复一些数据。
协议缓冲线格式本质上由一系列键值对组成。每个键表示一个字段号和连接类型(一起称为标记),值是与该字段号相关联的实际数据。如果您知道要查找的消息,那么我将首先根据消息定义中的类型和字段编号搜索希望看到的标记。您必须阅读上面链接中的文档,以弄清楚如何计算标记并将其格式化为可变变量,然后搜索这些原始可变变量字节。一旦找到了看起来像是标记的内容,就必须尝试从那里解析消息,对消息的结束位置进行有根据的猜测。
相关文章:
- 从 Any 包中提取和匹配 protobuf 消息类型名的首选方法
- protobuf,如何在protobuf消息中遍历所有集合字段,我不知道详细信息?(C++)
- 如何聚合protobuf消息
- C ++使用开关/大小写解析protobuf消息(减少重复代码)
- 编写多个 protobuf 消息:1 条具有 1 个重复属性的消息或编写不同的消息
- 动态生成Protobuf消息并将指针返回到它
- 在C++中更改现有protobuf消息的元素
- 将在64位应用程序中编码Protobuf消息并在32位应用程序中解码
- 解析来自固定大小字节缓冲区的连续块的protobuf消息序列
- C++中protobuf消息的长度前缀
- 是否可以在 protobuf 中发送编译的 protobuf 消息定义
- 遍历所有字段并在 protobuf 消息中获取它们的值
- 动态创建新的 protobuf 消息
- protobuf-net 中的动态 protobuf 消息
- 如何在解析文本格式的 protobuf 消息时忽略错误的字段
- 在Windows上从文件中读取多个分隔的protobuf消息
- 从部分google protobuf消息中检索信息
- 打印Protobuf消息时省略字段
- 通过winpcap API读取protobuf消息
- 在Java中编写带分隔符的c++ Protobuf消息和读取