Linux 上的无线数据包嗅探。捕获的数据几乎只是广播

Linux 上的无线数据包嗅探。捕获的数据几乎只是广播

环境:在 8 频道上运行的家庭网络(我是管理员,因此所有密码都知道,并且我可以物理访问所有设备),其中连接了一台 PC 和一台笔记本电脑(均距离路由器约 20 厘米)
客观的:使用 PC 上的无线模块(在虚拟机中运行 Linux)嗅探笔记本电脑的流量
问题:捕获的数据不符合预期

我使用 RaLink RT5370 无线模块,它又使用内核的 rt2800usb 驱动程序部分。以下是 的输出iwconfig

mon0      IEEE 802.11bgn  Mode:Monitor  Tx-Power=0 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

下面是输出ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: mon0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000
    link/ieee802.11/radiotap 00:e1:b2:00:36:79 brd ff:ff:ff:ff:ff:ff

我尝试过多种方法来捕获流量,但我更喜欢使用 tcpdump:

tcpdump -n -w test.pcap -i mon0

在 PC 上开始捕获后,我通常会打开笔记本电脑,加入网络(以便我可以捕获 EAPOL 握手),浏览互联网一会儿,然后停止捕获。现在我的问题就来了。我将捕获的流量加载到 wireshark 中,我注意到在笔记本电脑使用网络的大约 1 分钟内,我成功捕获了大约 600 到 700 个数据包。绝大多数(约 98%)是从路由器广播的信标帧。查看我上次的尝试,捕获了 643 个数据包,其中 638 个(99.2%)是广播,5 个是多播,源自笔记本电脑。所以总的来说,没有记录任何有用的信息。问题可能是什么?我该如何捕获笔记本电脑和路由器之间的单播?

网上的大部分文档似乎都涉及在监控模式下设置网络接口和解密记录的流量,但我相信我已经确定了前者,如果我一开始就没有有意义的流量,那么后者对我来说毫无用处。

总结tcpdump 似乎捕获了所有垃圾,我该如何让它捕获单播?

注意:这个问题的原始发帖人(为什么 Wireshark 不显示 ICMP/IP/UDP 等高层数据包?(仅显示广播数据包)) 似乎也有类似的问题,但已经有近三年了,而且建议的原因(硬件)似乎不适用于我的情况,因为我正在使用完全不同的设备。

答案1

要在 Wi-Fi 网络上捕获未发送到捕获机器或未从捕获机器发出的单播流量,您可能需要在监控模式下捕获。Wireshark Wiki 文章中有关 WLAN 捕获的文章对此提供了大量详细信息;在监控模式下捕获的方式取决于操作系统 - 非 Windows 操作系统上较新版本的 libpcap 和当前版本的 Wireshark 尝试让您通过选中复选框来执行此操作,但由于各种原因,这不一定适用于 Linux 或 *BSD,并且它根本无法在 Windows 上工作(要在 Windows 上以监控模式进行捕获,您需要使用 Microsoft Network Monitor 等工具进行捕获或将 AirPcap 设备与 Wireshark 一起使用)。

请注意,如果您所在的网络是“受保护的”,使用 WEP 或 WPA/WPA2,您将需要能够解密它;详细信息请参阅 Wireshark Wiki 文章“解密 802.11” - 请注意,对于 WPA/WPA2,您将需要捕获其他主机与网络关联时出现的流量,因此您可能必须在开始流量捕获之前关闭手机,并在捕获开始后再次打开它们。还要注意,捕获过滤器适用于未解密的数据包,因此,如果流量已加密,您不能在 IP 层(例如 IP 地址)或更高层上使用捕获过滤器,您只能在 MAC 层(MAC 地址、帧类型等)进行过滤。但是,一旦流量被解密,您就可以使用显示过滤器。

相关内容