很好的问题,也是我一直试图弄清楚的事情。
简短的回答是,wireshark 工具无法过滤 BSSID。Wireshark 使用 pcap,它通过 SO_ATTACH_FILTER ioctl 使用内核 Linux Socker 过滤器(基于 BPF)。BSSID 没有 BPF 过滤器。
另一个工具 airodump-ng,通过 BSSID 捕获 CAN,因为它将所有 802.11 帧传递到用户空间并在那里解码/过滤帧。考虑到所有用户空间的处理,它的效果出奇的好。
但即使是低容量的 80211 网络也相当嘈杂。例如,我的 SOHO 在不到两分钟的时间内捕获了 11K 帧;我仍然丢帧。为我附近的五个可见(但很小!)BSSID 抓取所有 80211 帧,我在不到三分钟的时间内收到了 141K 帧(104MB)。
我正在寻找使用 EMMC 或 SD 闪存的嵌入式帧嗅探器/注入器,所以我需要小心突破极限。
所以我正在尝试编写一个自定义 BDF 过滤器来仅过滤本地 BSSID 帧。我希望扩展它以丢弃大量的“嘈杂”帧——大多数控制和管理帧都可以被过滤掉。帧中的 BSSID 地址位置基于 ToDS 和 FromDS 控制位。
无论如何,希望我为解决方案提供了一些面包屑。它可能只是一个 airodump 用户空间解决方案是最简单的。