从特定的 MAC OUI 捕获 Wireshark 中的所有流量?

问题描述

我想使用 Wireshark/Tshark/TCPDump/等捕获来自特定设备制造商的所有 wifi 流量。我想使用 CAPTURE 过滤器,而不是显示过滤器。基本上,我想从 MAC 地址 11:22:33:xx:xx:xx 捕获所有数据包,没有别的。或者,换句话说,使用 Berkeley Packet Filtering Syntax 的 MAC 地址的前 3 个八位字节或 OUI。有人有首选的方法吗?

解决方法

根据此 post,在您的捕获过滤器中使用类似 ether[A:B] 的语法

  • A = 以太网帧中的起始字节位置,从 0 开始
  • B = 字节数,必须为 1、2 或 4

因此要匹配 3 个字节,您必须进行 2 次比较:分别匹配 2 个字节和 1 个字节。

如果您只想要来自此 OUI 的数据包(每个问题):

tcpdump 'ether[0:2] == 0x1122 && ether[2:1] == 0x33'

如果您希望所有数据包进出此 OUI:

tcpdump 'ether[0:2] == 0x1122 && ether[2:1] == 0x33 \
    || ether[6:2] == 0x1122 && ether[8:1] == 0x33'

ethernet header 的前 12 个字节 (0-11) 由目标和源 mac 地址组成。所以要同时选择0-2和6-8这3个字节的集合,选择0处2个字节,2处1个字节,6处2个字节,8处1个字节。

只要您在前面加上 -f 捕获过滤器标志,您也应该能够将它与 tshark 一起使用。