从TCP负载读取'ge'。基本上,为了保持过滤器的简短,只使用“ge”,因为它得到的包有get关键字。
带移位的吹风过滤器工作良好
“tcpdump-r tcpdump.pcap-nta'tcp[((tcp[12]>>4)*4):2]=0x4745'”
但我不知道为什么下面一个不工作
tcpdump-r file.pcap-nta'tcp[((tcp[12]&0xf0!=0)*4):2]=0x4745'
如果有人能通知这个问题,那将是很大的帮助。谢谢。
最佳答案
你的第二个不起作用,因为你屏蔽了偏移量12的低分位数,并保留了高分位数…哪个是正确的……但你并没有真正抓住它的价值。
实际上,你说过:
(tcp[12] & 0xf0 != 0)
这将产生1或0作为真或假。接下来,你把它乘以4…因为TCP头的长度总是大于零…但现在它将在TCP头段的偏移量4处查找“GE”字母…序列号的开头。
您仍然可以使用
0xf0
掩码,但仍需要将其分割或移动。例如: (tcp[12] & 0xf0 >> 2)
注意,我正在利用移位避免乘以4…乘4等于左移2位。因为我通常会移动第12字节偏移量4位,所以我节省了一步。