2

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

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

我知道存在显示过滤器可以做到这一点,但我需要提前过滤它们(比如使用捕获过滤器)。

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

有什么建议么?

谢谢

4

2 回答 2

3

您可以使用 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 字节数,但我已经使用它并且它工作正常。这也可以适应其他用途(您只需要偏移量)。

于 2018-07-17T17:41:53.357 回答
0

很好的问题,也是我一直试图弄清楚的事情。

简短的回答是,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 用户空间解决方案是最简单的。

于 2015-04-23T01:01:35.157 回答