我在尝试从无线接口以混杂模式捕获数据包时遇到了问题。我在不同的平台上使用了各种适配器,但我只能捕获发往或源自我的机器的数据包,而无法捕获来自连接中的其他计算机的数据包。
这对于商业适配器和驱动程序是否可行?
我在尝试从无线接口以混杂模式捕获数据包时遇到了问题。我在不同的平台上使用了各种适配器,但我只能捕获发往或源自我的机器的数据包,而无法捕获来自连接中的其他计算机的数据包。
这对于商业适配器和驱动程序是否可行?
在基础设施/ESS 模式下,以混杂模式捕获去往其他站点的数据包没有多大意义,原因如下:
这实现如下:如果一个站想要与另一个站通信,它必须向 AP 发送一个数据包,其中收发器和源地址设置为其 MAC 地址,接收器地址设置为 AP 的 MAC 地址(称为 BSSID ) 并将目标地址设置为目标站的 MAC。然后,AP 将(或不)重新传输数据包到目标站,仅更改收发器和接收器地址。
这意味着 AP 本质上充当无线交换机。所有电台只有一个到交换机的通道,没有别的。这对协议(包括安全性)的工作方式有很多影响。这意味着站点只能可靠地接收属于他的帧。唯一的例外是广播/多播帧,猜猜是什么,这是不可靠的。
这意味着,在大多数操作系统上,802.11 站被表示为以太网接口,它承载以太网帧。您已经可以猜到在 802.11 托管接口上以混杂模式捕获时会看到什么:您得到的以太网帧与传输/接收的实际 802.11 帧几乎没有相似之处。
这意味着此“混杂”标志仅在类似以太网的网络接口上启用。在交换以太网网络上,打开混杂模式将不允许您接收不适合您的以太网帧(它只会让您看到您不感兴趣的多播帧),因此 802.11-as-ethernet 接口应该做同样的事情。
更重要的是:即使该接口上的混杂模式旨在为其他站点启用接收帧,这些帧也不能作为以太网帧呈现:一个 802.11 帧有 3 或 4 个地址,可以对其有效载荷进行加密,并且有许多其他字段以太网没有。并且 802.11 支持允许加密和明文的 AP,因此当连接到开放接入点时,您甚至无法启用该功能。请记住,其他站点的接收帧是不可靠的,因为 AP 会重新传输这些帧,直到其他站点正确接收到它为止,而不是直到您正确接收到它为止。
您真正需要的是一个可以获取真正 802.11 帧的接口。根据操作系统的不同,这可以作为不同的 API 或作为真正的 802.11 网络接口呈现。
在现代 Linux 系统和基于 cfg80211 的驱动程序上,802.11 网卡显示为“wiphy”,它不是网络接口,也不允许您捕获帧。这个wiphy实际上是一个虚拟网络接口的容器,称为“vif”。这些 vif 是实际采用 wifi 模式(管理站、AP、IBSS 站、网点)的部分。每个 wiphy 通常有一个 vif,但如果驱动程序和卡支持,则可能会创建其他 vif。
一种类型的 vif 是监视器 vif。这是一个 802.11-with-radiotap 网络接口,它接收与 wifi 卡可以提供给内核/驱动程序一样多的 802.11 帧。通常,这些接口允许接收与同一 AP 关联的其他站点的帧,但也允许接收属于其他 BSS 的帧(取决于监视器选项)。
大多数 Linux 驱动程序支持监视器模式 vif。当驱动程序没有时,通常是因为该卡是不提供功能的fullMAC wifi接口。
现在您要问的是一种既可以充当站点又可以从其他站点接收帧的方法。为此,您需要两个 vif:一个受管站 vif 和一个监视器 vif。所有基于 mac80211 的 softMAC 驱动程序都支持这种多 vif 配置,但仍有可能某些 fullMAC 设备不支持它,即使它们支持单个监视器 vif。
当支持这种组合时,监视器 vif 将自动从属于受管 vif 使用的任何通道,因此您甚至不必配置监视器通道或任何东西,即使您尝试,它也很可能会失败。
实用说明:用于iw phy
列出您的 wiphy,iw dev
用于列出与 wiphy 关联的 vif,用于iw phy phyX interface add mon0 type monitor
创建mon0
与phyX
wiphy关联的监视器 vif 。iw dev wlanX interface add mon0 type monitor
如果您想指定 wiphy 的 vif 而不是 wiphy 本身,也可以使用。完成后,您可以打开该监视器接口 ( ip link set mon0 up
) 并开始使用tcpdump
您选择的任何可以理解 802.11-with-radiotap 的捕获程序捕获数据包,而另一个连接到您的 AP。
当然,如果您的AP使用加密,您将捕获加密的帧。但请注意,在具有单个 PSK 的 RSN/WPA2 网络上,任何知道 PSK 的人都可以解密 BSS 的所有帧,前提是它捕获了 4 次握手并且未使用 SAE。airdecap-ng
aircrack-ng的工具实现了该功能。
两个问题。有些卡不支持该模式或驱动程序不支持。为了在 Linux 上捕获数据包,Onoco Gold(我拥有的是来自 lucent 的 wavelan)可以工作。和 Bulki 的评论:捕获数据包后,您必须解密它们。
我认为问题在于用于无线连接设备的加密。当不使用任何加密时,这可能是可能的。(不推荐,并确保仅在您自己的网络上进行测试,否则,在大多数国家/地区,这被认为是非法的。)