Java GRE数据包有效负载ip/dst上的过滤器

Java GRE数据包有效负载ip/dst上的过滤器,java,ip,libpcap,packet-capture,Java,Ip,Libpcap,Packet Capture,我使用libjpcap从网络捕获数据包,并在我的应用程序中处理它们。目前,我们可以使用过滤器,以便仅从特定目的地捕获。例如,src host 10.159.2.3将仅捕获来自该端点的流量 最近我们增加了数据包支持,但是过滤器并没有像用户期望的那样工作。在我们的例子中,GRE数据包的有效负载是IPv4数据包 是否有方法输入一个过滤器,该过滤器将根据包含的IPv4数据包的src和/或dst过滤数据包?我知道Wireshark会处理这个案子,所以我试着把它包括在这里。我找到了一种方法。我们可以使用偏移

我使用libjpcap从网络捕获数据包,并在我的应用程序中处理它们。目前,我们可以使用过滤器,以便仅从特定目的地捕获。例如,
src host 10.159.2.3
将仅捕获来自该端点的流量

最近我们增加了数据包支持,但是过滤器并没有像用户期望的那样工作。在我们的例子中,GRE数据包的有效负载是IPv4数据包


是否有方法输入一个过滤器,该过滤器将根据包含的IPv4数据包的src和/或dst过滤数据包?我知道Wireshark会处理这个案子,所以我试着把它包括在这里。

我找到了一种方法。我们可以使用偏移量和长度进行过滤。通过使用wireshark,我们检查了.pcap捕获,并确定有效负载ip数据包(GRE内部的数据包)上的src地址与外部ip数据包头的字节偏移量为54。有效负载ip分组的dst地址的字节偏移量为58

所以我们把这个表达式作为一个过滤器

(ip[54:4] = 0X0ac004ef) or (ip[58:4] = 0X0ac004ef)
其中十六进制数表示转换为十六进制的串联八位字节。我们要筛选的ip的