TCPDUM位屏蔽

时间:2017-11-15 00:31:14

标签: http tcp ip tcpdump

从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'

如果有人能够通知问题,这将是一个很大的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

你的第二个没有工作,因为你正在屏蔽偏移12的低半字节并保留高半字节......这是正确的......但你实际上并没有捕捉它的值。

实际上,你说过这个:

(tcp[12] & 0xf0 != 0)

这将产生1或0作为真或假。接下来,你将它乘以4 ...这将始终有效,因为TCP标头长度将始终大于零...但它现在将寻找" GE" TCP标题中偏移量为4的字母...序列号的开头。

您仍然可以使用0xf0蒙版,但仍需要将其分割或移位。例如:

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

请注意,我正在利用此移位来避免必须乘以4 ...乘以4相当于向左移位2位。由于我通常会将第12个字节偏移4位,因此我保存了一个步骤。