![混杂模式不适用于 ubuntu 和 wireshark](https://linux22.com/image/665674/%E6%B7%B7%E6%9D%82%E6%A8%A1%E5%BC%8F%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20ubuntu%20%E5%92%8C%20wireshark%20.png)
我正在运行 Ubuntu Linux,并在其上安装了 wireshark。我可以很好地看到传入和传出的流量。现在我想查看来自 LAN 上其他设备的流量。因此,我做了:
$ ifconfig wlan0 promisc
现在我拿起位于同一网络 (LAN) 上的手机,然后访问 stackoverflow.com。现在我回到 wireshark 停止捕获,然后使用 http 过滤流量,但什么也没有。我错过了什么?
答案1
你忽略的是,混杂模式只捕获你的混杂网卡看到。它没有神奇的力量进入网络并收集发往其他网卡的数据包。现代网络使用交换机,交换机检查数据包的目标地址并仅有的将其发送到需要去的端口,而不是将其广播到所有端口(这是传统以太网所做的,以 10Base2 等共享介质方法为代表,并通过双绞线“集线器”进行模拟)。
此外,尽管 802.11 系列标准使用共享介质(无线电波),但混杂模式(在无线世界中更恰当地称为“监控模式”)可能有效也可能无效,具体取决于无线芯片组和驱动程序,因为许多设备的实现方式不允许进行足够的控制,从而无法真正导致物理硬件将非本站所需的数据包传递给操作系统。这也取决于网络的安全模式;WPA 使用每个设备的会话密钥,因此您无法看到到其他站的流量,因为它是由您不知道的密钥加密的。
答案2
我从“wlan0”推断出这是一个 Wi-Fi 网络。这意味着你需要捕获监视器模式。如果这是一个“受保护”的网络,使用 WEP 或 WPA/WPA2 加密流量,您还需要向 Wireshark 提供网络密码,对于 WPA/WPA2 网络(目前大多数受保护的网络可能都是 WPA/WPA2 网络),您还需要在手机加入网络时捕获手机的初始“EAPOL 握手”,因此您需要让手机进入睡眠状态(关闭手机应该会使其进入睡眠状态),开始捕获,然后将其唤醒(打开)并访问 Stack Overflow。
查看“如何在 802.11 网络上捕获”页面的 Linux 部分和“如何解密 802.11 流量”页面在 Wireshark Wiki 上。