原始以太网数据包中特定字节的 wireshark 显示过滤器

wireshark display filter on specific byte in a raw ethernet packet

我正在尝试过滤第 15 个字节(即第 14 个字节 header 之后的第一个有效负载字节)是特定值的数据包,0x000x01

我感兴趣的数据包是原始以太网,即在 logical-link 控制层,所以我也在 LLC 作为协议进行过滤

这是我尝试过的:

llc && (frame[14:1] == 00 || frame[14:1] == 01)

这是绿色的,所以我很确定语法是正确的。它只显示协议为 LLC 的数据包,但它也允许第 15 个字节为 0x02 的数据包通过,我想避免

关于如何成功定位第 15 个字节值,或者换句话说,第一个字节值的任何想法?

示例数据包(从 wireshark 复制),其中第 15 个字节是 0x00:

0000   01 01 01 01 01 01 02 02 02 02 02 02 00 0e 00 05  ................
0010   00 00 00 05 00 00 00 00 00 00 00 01              ............

示例数据包,其中第 15 个字节是 0x01:

0000   02 02 02 02 02 02 01 01 01 01 01 01 00 0a 01 05  ................
0010   00 00 00 0d 00 00 00 f1 00 00 00 00 00 00 00 00  ................
0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0030   00 00 00 00 00 00 00 00 00 00 00 00              ............

我想让 wireshark 显示这两个数据包

有第 3 种类型的数据包,其中第 15 个字节是 0x02:

0000   02 02 02 02 02 02 01 01 01 01 01 01 00 39 02 ec  .............9..
0010   41 61 02 a2 21 44 2b 0c 00 02 00 1c 0c 02 00 00  Aa..!D+.........
0020   00 00 00 00 00 00 00 00 00 00 00 ee 91 20 04 46  ............. .F
0030   22 44 2b cc 01 03 00 00 00 00 00 00 00 00 00 00  "D+.............
0040   00 00 00 00 00 00 00                             .......

我想用过滤器排除这种类型的数据包。我上面的过滤器仍然显示这些 0x02 个数据包。

这是请求的 wireshark 显示过滤器:

llc and (frame[14] == 0 or frame[14] == 1)

Wireshark 将每个帧中的第一个字节计为字节 0,因此第 15 个字节为 frame[14]。单个字节不需要冒号(如 in the docs 所述)。 and&& 是等价的。 or|| 也是等价的。