我正在尝试使用bpf语法过滤pcap文件。我需要它只返回来自HTTP的GET请求,该请求包含GET请求中的某个单词,是否可以执行此操作?我设法从HTTP获取GET请求,但我找不到如何根据数据包的数据进行过滤。
答案 0 :(得分:0)
除非Wireshark或TCPDump没有针对您正在使用的某些奇怪协议的协议解析器,否则您被要求做的是棘手,困难和不切实际。
仅使用BPF获取GET请求的方法如下:
dst port 80 and tcp[(tcp[12]>>2):4]=0x47455420
必须以这种方式完成的原因是您必须考虑更改TCP选项的可能性,并因此更改数据偏移开始位置的位置。这将确定数据的开始位置,并检查字符串“GET”的前四个字节。
您可能还会注意到我在字节12中使用TCP数据偏移值的快捷方式。最好这样做:
(tcp[12]>>4)*4
或者这个:
(tcp[12]&0xf0 >> 2)
这将解释保留的低位半字节中的任何位被启用。