从tcp有效负载读取'GE'。基本上是为了保持过滤器的简短而准备好GET,只使用“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'
如果有人能够通知问题,这将是一个很大的帮助。谢谢。
答案 0 :(得分:0)
你的第二个没有工作,因为你正在屏蔽偏移12的低半字节并保留高半字节......这是正确的......但你实际上并没有捕捉它的值。
实际上,你说过这个:
(tcp[12] & 0xf0 != 0)
这将产生1或0作为真或假。接下来,你将它乘以4 ...这将始终有效,因为TCP标头长度将始终大于零...但它现在将寻找" GE" TCP标题中偏移量为4的字母...序列号的开头。
您仍然可以使用0xf0
蒙版,但仍需要将其分割或移位。例如:
(tcp[12] & 0xf0 >> 2)
请注意,我正在利用此移位来避免必须乘以4 ...乘以4相当于向左移位2位。由于我通常会将第12个字节偏移4位,因此我保存了一个步骤。