如果我正确理解了无线工作原理的基本原理,我应该能够嗅探无线局域网上其他计算机的流量。因此,我将第二台计算机连接到我的无线局域网,并尝试查看是否能够http
通过网络嗅探其流量,使用tcpdump
如下命令:
sudo tcpdump -v -i wlan0 dst 10.0.0.7
而10.0.0.7
是我想要通过 LAN 嗅探的计算机的 IP。但不幸的是,我没有得到任何输出(如果我有 ICMP 回应请求除外ping 10.0.0.7
,所以tcpdump
工作正常 :) )。
我错过了什么?
答案1
您需要将网络接口设置为监控模式能够嗅探无线网络上的所有流量。因此,在启动之前tcpdump
,请执行以下操作:
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode Monitor
sudo ifconfig wlan0 up
这只会关闭您的接口,启用监控模式并再次打开。请注意,并非所有网络接口卡都支持监控模式。
要将 NIC 重置回正常状态,请发出相同的命令,但使用mode Managed
。
顺便提一下,由于路由器使用的加密方案,嗅探器上的流量很可能与您期望的不一样。考虑到您正在嗅探自己的网络,大多数情况下您将能够解密流量。
这里是有关如何在 上执行此操作的简短概述Wireshark
,这是 的替代方案tcpdump
,也具有图形用户界面。如果您希望保留tcpdump
捕获,还可以使用其-w
选项将流量转储到.pcap
文件中,然后在 Wireshark(或任何其他数据包分析器)中打开该文件。
请注意,如果您的网络使用 WPA 或 WPA2 加密,您将需要捕获路由器与要监控的每个设备之间的相应握手。我链接的 Wireshark wiki 文章解释了如何执行此操作:
WPA 和 WPA2 使用从 EAPOL 握手(当机器加入 Wi-Fi 网络时发生)派生的密钥来加密流量。除非您尝试解密的会话中存在所有四个握手数据包,否则 Wireshark 将无法解密流量。您可以使用显示过滤器 eapol 来查找捕获中的 EAPOL 数据包。
为了捕获机器的握手,您需要在捕获过程中强制机器(重新)加入网络。
答案2
首先,您没有说明这是开放网络还是受 WPA 保护的网络。这有区别。我假设它是 WPA,因为您遇到了问题。
你不是中间人。来自 10.0.0.7 的数据包会从该计算机直接发送到网关(即 10.0.0.1)并传出到互联网,绕过你。你需要使用 arp 欺骗并将自己插入网关和该用户(10.0.0.7)之间。有许多工具可以做到这一点。通常,你首先在内核中设置 ip 转发,然后运行类似arpspoof <victim ip> <gateway ip>