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

标签 wireshark ethernet raw-ethernet

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

我感兴趣的数据包是原始以太网,即在逻辑链路控制层,所以我也将 LLC 作为协议(protocol)进行过滤

这是我尝试过的:

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

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

有什么想法可以成功定位第 15 个字节值,或者换句话说,有效负载的第一个字节值?

第 15 个字节为 0x00 的示例数据包(从 wireshark 复制):

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 显示这两个数据包

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

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|| 也是等价的。

关于原始以太网数据包中特定字节的 wireshark 显示过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46646892/

相关文章:

networking - 曼彻斯特编码和以太网协议(protocol)

android - 以太网上的亚行

python - 从头开始编码以太网桥

python - 获取PCAP文件中的所有ip

c - Wireshark - 以编程方式修改 pcap 文件中的数据包

C: 发送 GET 请求但wireshark没有捕获任何内容

c - 使用 O_SYNC 时 mmap 非常慢

qt - 使用 Qt 读取原始以太网

c# - 如何使用 C# 发送原始以太网数据包?

paypal - 使用 Wireshark 查看 Paypal 请求