计算数据包偏移量

计算数据包偏移量

在 Wireshark 中,如果我想编写一个仅接受 ICMP 目标不可达(类型 3)消息的过滤器,该过滤器是icmp[0] == 3

在这种情况下,我如何计算 0 的数据包偏移量?

编辑

在此处输入图片描述

根据上图来自 Wikipedia 的内容,ICMP 类型位于 0-7 位之间。因此它是第一个字节,因此为 0 ?

答案1

您的过滤器是正确的,icmp[0]确实匹配包含类型的 ICMP 标头的第一个字节。但是,我发现它很难阅读,您应该改用icmp.type eq 3。当字段长度超过一个字节时,这也容易得多。

这里是显示字段引用对于 ICMP。

答案2

我假设您正在尝试编写一个捕获过滤器而不是一个显示过滤器;如果您正在尝试编写一个显示过滤器,Martin Isaksson 是正确的,您应该这样做icmp.type == 3

是的,0 是 ICMP 数据包内的偏移量。

在较新版本的 libpcap 中,该语法支持一些更方便的编写过滤器的方式icmp[icmptype] == icmp-unreach。WinPcap 基于具有该语法的 libpcap 版本,因此它也支持它

Wireshark 不允许你说类似的话,可以说是一个错误,即

icmp.type == "Destination unreachable"

在显示过滤器中。我会考虑修复这个问题。

相关内容