wireshark捕获特定网络的过滤器(bssid)

时间:2012-07-24 10:33:55

标签: networking wireless wireshark bssid

我想知道如何使用wireshark捕获特定无线网络的数据包。

我已经能够捕获所有不同网络的数据包,将我的无线网卡设置为监控模式,但是对于特定的分析,我需要在捕获过程中丢弃与我的网络无关的所有数据包。

我知道存在显示过滤器,但我需要提前过滤它们(就像使用捕获过滤器一样)。

如果我去CAPTURE-> OPTIONS我可以设置捕获过滤器,但我不知道确切的过滤器,因为它们与显示过滤器不同win.bssid == xx:xx:xx:xx:xx:xx 不起作用。

有什么建议吗?

感谢

3 个答案:

答案 0 :(得分:2)

您可以从wlan数据包的开头使用索引。 它需要一些同轴电缆,但是BSSID字段处于固定的,可预测的位置。通过使用括号,您应该能够在数据包中引用正确的位置。

BSSID位于位置16,因此,如果您要模拟以下内容:

wlan.bssid=12:34:56:78:9a:bc

您将必须执行以下操作:

wlan[16:4] == 0x12345678 and wlan[20:2] == 0x9abc 

您必须将前4个八位位组转换为int32,将后2个八位位组转换为int16并使用2个子句,因为BPF无法表示6个字节的数字,但是我已经使用了它并且工作正常。这也可以适应其他用途(您只需要偏移量)。

答案 1 :(得分:0)

优秀的问题以及我一直想弄清楚的事情。

简短的回答是wireshark工具无法过滤BSSID。 Wireshark使用pcap,它通过SO_ATTACH_FILTER ioctl使用内核Linux Socker Filter(基于BPF)。 BSSID没有BPF过滤器。

另一个工具,airodump-ng,由BSSID捕获,因为它将所有802.11帧传递到用户空间并在那里解码/过滤帧。考虑到所有用户空间处理,它的效果非常好。

但即使是小批量的80211网络也相当嘈杂。例如,我的SOHO在两分钟内捕获了11K帧;而我仍然丢帧。抓住我附近的五个可见(但小!)BSSID的所有80211帧,我在不到三分钟的时间内收到141K帧(104MB)。

我希望使用EMMC或SD闪存进行嵌入式帧嗅探器/注射器,因此我需要小心推动限制。

所以我试图编写一个自定义BDF过滤器来仅过滤本地BSSID帧。而且我希望能够延长它以减少大量的噪音"帧 - 可以过滤大多数控制和管理帧。 帧中的BSSID地址位置基于ToDS和FromDS控制位。

无论如何,希望我为解决方案提供了一些面包屑。它可能只是一个airodump用户空间解决方案是最简单的。

答案 2 :(得分:-3)

请查看以下链接,了解Wi-Fi的wireshark过滤器

Wi-Fi Filters for Wireshark in monitor mode

希望这会有所帮助