如何使用BPF通过数据过滤



我正在尝试使用BPF语法过滤PCAP文件。我需要它仅从HTTP中返回get请求,该请求在Get请求中包含某个单词,是否可以这样做?我设法从HTTP获得了GET请求,但找不到如何通过数据包的数据过滤。

您被要求做的事情棘手,困难和不切实际,除非Wireshark或Tcpdump没有用于您使用的某些怪异协议的协议解析器。

仅使用BPF获取请求的一种方法如下:

 dst port 80 and tcp[(tcp[12]>>2):4]=0x47455420

必须以这种方式完成的原因是您必须考虑更改TCP选项的可能性,结果,更改了数据偏移量开始的位置。这将算出数据启动的位置并检查字符串" GET"的前四个字节。

您也可能会注意到,我正在使用BYTE 12中的TCP数据偏移值进行快捷方式。这样做是更好的做法:

 (tcp[12]>>4)*4

或以下:

 (tcp[12]&0xf0 >> 2)

这将说明启用的保留下部nibble中的任何位。

答案很晚,但是无论如何。您可以使用BPF过滤GET或任何其他HTTP请求。BPFCC-Tools的下一个示例显示了相似的任务实现。它应该在实时网络界面上使用,而不是PCAP文件。但是我希望您可以采用它应用于文件。

最新更新