通过winpcap API读取protobuf消息

Reading protobuf messages via winpcap API

本文关键字:protobuf 消息 读取 API winpcap 通过      更新时间:2023-10-16

我使用winpcap来捕获网络流量,我知道这个流量主要由序列化的协议缓冲区交换组成。如果我知道系统可能传输的所有类型的消息,我如何在流量中检测这些消息?

这将有点困难,因为协议缓冲区不是自描述的,当您读取原始字节流时,没有简单的方法来确定一条消息何时结束,另一条消息何时开始。但是,如果您对wire格式有很好的理解,那么您可以通过一些努力来恢复一些数据。

协议缓冲线格式本质上由一系列键值对组成。每个键表示一个字段号和连接类型(一起称为标记),值是与该字段号相关联的实际数据。如果您知道要查找的消息,那么我将首先根据消息定义中的类型和字段编号搜索希望看到的标记。您必须阅读上面链接中的文档,以弄清楚如何计算标记并将其格式化为可变变量,然后搜索这些原始可变变量字节。一旦找到了看起来像是标记的内容,就必须尝试从那里解析消息,对消息的结束位置进行有根据的猜测。