在Wireshark中,如果我想写一个只接受ICMP目标不可达(types3)消息的filter,则filter为icmp[0] == 3
。
在这种情况下,如何计算0的数据包偏移量?
编辑
基于维基百科的上述图像,ICMPtypes在0-7位之下。 所以它是第一个字节,因此是0?
您的filter是正确的, icmp[0]
确实匹配包含该types的ICMP头的第一个字节。 但是,我发现很难阅读,您应该使用icmp.type eq 3
来代替。 当字段长于一个字节时,这也容易得多。
这是ICMP的显示字段参考 。
我假设你正在试图写一个捕获filter,而不是一个显示filter; 如果您正在尝试编写显示filter,Martin Isaksson是正确的,您应该执行icmp.type == 3
。
是,0是ICMP数据包内的偏移量。
在较新版本的libpcap中, 语法支持一些更方便的编写filter的方法 ,即icmp[icmptype] == icmp-unreach
。 WinPcap基于具有该语法的libpcap版本,所以它也支持它 。
这可能是一个Wireshark不会让你说类似的错误,即
icmp.type == "Destination unreachable"
在显示器filter。 我会看看解决这个问题。