我正在尝试确定在 OSX (10.8.5) 上以下列方式捕获 802.11 帧之间的差异。这有点深奥,但我使用“选项 2”来捕获帧以供以后分析,我想知道我是否遗漏了什么。
选项1:使用“airportd”:
$sudo /usr/libexec/airportd en0 嗅探
选项 2:使用“airport”后跟 tcpdump:
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --channel= sudo tcpdump -I -P -i en0 -w /tmp/capture.pcap (或者另外消除 -w 并实时观察数据包)。
据我所知:
- 根据 OSX 上的 wifi 图标,这两个命令都会将界面置于“监控”模式。
- 这两个命令都会输出一个可在 wireshark/tcpdump 和 Eye PA 中读取的 pcap 文件。
- 这两个命令似乎都可以捕获管理、控制和数据帧。
问题:选项 1 会断开您的网络连接。当将接口置于“监控”模式时,这是意料之中的事情。
选项 2不会断开你的连接,前提是您将频道设置为当前连接的频道。这具有明显的优势,即在监控模式下捕获时保持连接畅通。
我的问题:选项 2 似乎不起作用,或者更具体地说,似乎我不应该能够在监控模式下捕获帧的同时保持连接。在有线网卡上,您可以“混杂”并仍然发送帧,尽管我不认为无线网卡也是如此。我质疑使用选项 2 捕获帧的有效性?
答案1
我之前没有尝试过在 OSX 中捕获数据包,但如果“选项 2”允许您保持连接,这将限制您的捕获能力,因为它实际上是“混杂”捕获,而不是“监控”捕获。我不得不猜测 OSX 界面没有提供两者之间的区别,任何“捕获”都被视为监控(即使实际上是混杂的)。
监控捕获要求捕获设备保持其无线电处于被动监听状态。混杂捕获允许捕获设备保持连接并传输数据,并且仅在未传输时监听(并且根据驱动程序,捕获也可能被过滤到当前连接的 ESSID/BSSID/SSID)。通常,监控捕获是捕获无线数据时所需要的。
为了解释我的意思,请记住,您的 802.11 设备只能在特定时间点以特定频率发送或接收数据。为了保持连接,至少需要进行传输,并且除了最低限度之外,您的设备还可能会向网络发送数据。
在传输过程中,它无法捕获其他设备可能传输的任何数据。通常,如果有两个设备同时传输,则会导致冲突,有时您可以通过捕获来确定这一点。如果您的捕获设备参与了冲突,您将看不到冲突,而是拥有传输的完整数据。