我使用libjpcap从网络捕获数据包并在我的应用程序中处理它们。目前,我们可以使用过滤器,以便我们仅从特定目的地捕获。例如,src host 10.159.2.3
仅捕获来自该端点的流量。
最近我们添加了GRE数据包支持,但过滤器无法按用户的预期工作。在我们的例子中,GRE数据包的有效载荷是一个IPv4数据包。
有没有办法输入过滤器,根据包含的IPv4数据包的src和/或dst过滤数据包?我知道wireshark会处理这个案子,所以我试着把它包括在这里。
提前致谢。
答案 0 :(得分:0)
我找到了一种方法来做到这一点。使用pcap filter expresions我们可以按偏移量和长度进行过滤。通过使用wireshark,我们检查了.pcap捕获并确定有效负载ip数据包(GRE内部的数据包)上的src地址与外部ip数据包的头部的字节偏移量为54。有效负载ip数据包的dst地址的字节偏移量为58。
因此我们将此表达式包含为过滤器
(ip[54:4] = 0X0ac004ef) or (ip[58:4] = 0X0ac004ef)
其中十六进制数表示转换为十六进制的连接八位字节。我们想过滤的ip。