TCPDUMP 位掩码
TCPDUM Bit Masking
正在从 tcp 负载中读取 'GE'。基本上是为了保持过滤器简短而尝试准备 GET,仅使用 'GE' 因为它获得具有 GET 关键字的数据包。
带位移位的 Blow Filter 工作正常
"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 或零作为真或假。接下来,将其乘以 4...这将始终有效,因为 TCP header 长度将始终大于零...但它现在将在偏移量 4 处查找 "GE" 字母TCP header...序列号的开始。
你仍然可以使用0xf0
掩码,但你仍然需要分割它或移动它。例如:
(tcp[12] & 0xf0 >> 2)
请注意,我正在利用移位来避免必须乘以 4...乘以 4 相当于左移 2 位。因为我通常会将第 12 个字节的偏移量移动 4 位,所以我节省了一步。
正在从 tcp 负载中读取 'GE'。基本上是为了保持过滤器简短而尝试准备 GET,仅使用 'GE' 因为它获得具有 GET 关键字的数据包。
带位移位的 Blow Filter 工作正常
"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 或零作为真或假。接下来,将其乘以 4...这将始终有效,因为 TCP header 长度将始终大于零...但它现在将在偏移量 4 处查找 "GE" 字母TCP header...序列号的开始。
你仍然可以使用0xf0
掩码,但你仍然需要分割它或移动它。例如:
(tcp[12] & 0xf0 >> 2)
请注意,我正在利用移位来避免必须乘以 4...乘以 4 相当于左移 2 位。因为我通常会将第 12 个字节的偏移量移动 4 位,所以我节省了一步。