我想知道如何使用wireshark捕获特定无线网络的数据包。
我已经能够捕获所有不同网络的数据包,将我的无线网卡设置为监控模式,但是对于特定的分析,我需要在捕获过程中丢弃与我的网络无关的所有数据包。
我知道存在显示过滤器,但我需要提前过滤它们(就像使用捕获过滤器一样)。
如果我去CAPTURE-> OPTIONS我可以设置捕获过滤器,但我不知道确切的过滤器,因为它们与显示过滤器不同win.bssid == xx:xx:xx:xx:xx:xx 不起作用。
有什么建议吗?
感谢
答案 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)