Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

在 Linux 上为没有 mac80211 驱动的网卡启用监控模式

Cisco/Aironet 网卡

在使用 2.4.6 到 2.4.19 内核中驱动的 Linux 上,使用命令 echo "Mode: rfmon" >/proc/driver/aironet/interface/Config 将网卡置于监控模式。如果你想捕获任意服务集的流量,而不仅仅是网卡所属服务集的流量,请使用 Mode: y 而不是 Mode: rfmon。捕获完成后,使用命令 echo Mode: ess >/proc/driver/aironet/interface/Config 关闭监控模式。(XXX - ad hoc 模式下是否使用不同命令?)

在使用 2.4.20 或更高版本内核中驱动的 Linux 上,或者使用来自 airo-linux SourceForge 站点的 CVS 驱动时,如果你的 Aironet 网卡是 ethN,在运行上面列出的命令后,你必须在 wifiN 接口上捕获。

在所有这些情况下,Wireshark 都必须链接到 libpcap 0.7.1 或更高版本;这意味着大多数 Wireshark 二进制包无法工作,除非它们静态链接到 libpcap 0.7.1 或更高版本,或者它们动态链接到 libpcap,并且你的系统已安装 libpcap 0.7.1 或更高版本的共享库(注意,来自 tcpdump.org 的 libpcap 源码包不会构建共享库)。如果你安装了较新的 libpcap 二进制包,某些二进制打包机制可能会使安装依赖较旧 libpcap 二进制包构建的 Wireshark 二进制包变得困难;这些打包机制的安装程序可能支持禁用依赖检查,以便即使安装了较新版本的 libpcap,也能安装 Wireshark。

使用 Prism II 芯片组的适配器

在使用 0.1.14-pre6 或更高版本 linux-wlan-ng 驱动的 Linux 系统上(参见 linux-wlan 页面和 linux-wlan-ng tarball 目录),或者使用 Prism II/2.5/3 的 hostap 驱动时,你可以使用 Prism II 适配器捕获原始 802.11 数据包。

这些需要 Solomon Peachy 针对 libpcap 0.7.1 的补丁(参见他的 libpcap-0.7.1-prism.diff 文件,或他提供的该版本 libpcap 的 RPM),或者 libpcap 0.8.1 或更高版本。如果你的发行版附带 0.8.1 或更高版本的 libpcap,Wireshark 二进制包应该可以工作,从源码编译 Wireshark 也应该可以。否则,如果你将 Solomon Peachy 的补丁应用到 libpcap 0.7.1,并重新构建和安装 libpcap,或者如果你构建并安装 libpcap 0.8.1 或更高版本,则必须从源码重新构建 Wireshark,并将其链接到该新版本的 libpcap;Wireshark 二进制包无法工作。如果你安装 libpcap-0.7.1-1prism.i386.rpm RPM,Wireshark 二进制包可能可以工作,因为它可能会安装一个 libpcap 共享库来替代你系统上的那个库。

使用 linux-wlan-ng 驱动时,使用命令 wlanctl-nginterfacelnxreq_wlansniff enable=true 将网卡置于监控模式。你应该通过向该命令添加选项 prismheader=true,或者在支持时添加 wlanheader=true 来请求 802.11 头;后者可能需要 libpcap 0.8.1 或更高版本。你还可以通过向该命令添加参数 channel=channel_number 来设置要监控的信道。捕获完成后,使用命令 wlanctl-nginterfaceenable=false 关闭监控模式。你可能还必须使用 prismheader=false 或 wlanheader=false 关闭 802.11 头。更多信息请参见 wlan-ng FAQ,不过请注意它似乎并不是最新的。

使用 hostap 驱动时,你应该使用命令 iwprivinterfacemonitormode 将网卡置于监控模式,其中 mode 为 2 或 3(mode 3 需要 libpcap 0.8.1 或更高版本)。捕获完成后,使用命令 iwprivinterfacemonitor 0 关闭监控模式。(iwconfiginterfacemode monitor 后接 iwconfiginterfacechannelchannel 来选择信道是否也可用?如果可用,你是否会得到 802.11 头?是否也能得到 radio 头?)

Orinoco Silver 和 Gold 网卡

SourceForge orinoco_cs 驱动的当前版本应该支持监控模式。Orinoco Monitor Mode Patch Page 上还存在针对较早版本 Orinoco 驱动的补丁,用于添加监控模式支持。你必须确定自己拥有的驱动版本,并在必要时选择合适的补丁。

注意,该页面指出并非所有版本的 Orinoco firmware 都支持此补丁。对于某些版本的补丁,页面写道:“This patch should allow monitor mode with v8.10 firmware (untested w/ 8.42);”;如果你的 Orinoco 网卡上安装的是 8.10 或更高版本 firmware,为了以监控模式运行,你可能必须使用这些补丁以及相应版本的 Orinoco 驱动。

该补丁是为 pcmcia-cs 驱动中包含的驱动编写的,但同样适用于 Linux kernel 到 2.4.20 为止提供的 Orinoco 驱动。要将补丁应用到你的 kernel 驱动,只需将 orinoco-09b-patch.diff 文件复制到 /usr/src/linux/drivers/net 目录,并按照 Orinoco Monitor Mode Patch Page 上的说明打补丁。你可以通过检查 orinoco.c 文件的前几行来再次确认随你的 kernel 提供的 Orinoco 驱动版本。

Orinoco 补丁和 SourceForge 驱动需要 Solomon Peachy 针对 libpcap 0.7.1 的补丁(参见他的 libpcap-0.7.1-prism.diff 文件,或他提供的该版本 libpcap 的 RPM),或者 libpcap 0.8.1 或更高版本。如果你的发行版附带 0.8.1 或更高版本的 libpcap,Wireshark 二进制包应该可以工作,从源码编译 Wireshark 也应该可以。否则,如果你将 Solomon Peachy 的补丁应用到 libpcap 0.7.1,并重新构建和安装 libpcap,或者如果你构建并安装 libpcap 0.8.1 或更高版本,则必须从源码重新构建 Wireshark,并将其链接到该新版本的 libpcap;Wireshark 二进制包无法工作。如果你安装 libpcap-0.7.1-1prism.i386.rpm RPM,Wireshark 二进制包可能可以工作,因为它可能会安装一个 libpcap 共享库来替代你系统上的那个库。

使用支持监控模式的驱动时,你应该使用命令 iwprivinterfacemonitormodechannel_number 将网卡置于监控模式,其中 mode 为 1 或 2,channel_number 是要监控的信道编号。捕获完成后,使用命令 iwprivinterfacemonitor 0 关闭监控模式。(iwconfiginterfacemode monitor 后接 iwconfiginterfacechannelchannel 来选择信道是否也可用?如果可用,你是否会得到 802.11 头?是否也能得到 radio 头?)

使用 Texas Instruments ACX100/ACX111 芯片组的网卡

在使用 ACX100 wireless network driver project SourceForge 站点提供的 ACX100 OSS 驱动的 Linux 系统上,你可以使用 ACX100/ACX111 网卡捕获原始 802.11 数据包。

使用该驱动时,使用命令 iwprivinterfacemonitor 2channel_number 将网卡置于监控模式,其中 channel_number 是要监控的信道编号。使用 ACX111 网卡时,iwprivinterfacemonitor 1channel_number 可用。捕获完成后,使用命令 iwprivinterfacemonitor 0 关闭监控模式。(iwconfiginterfacemode monitor 后接 iwconfiginterfacechannelchannel 来选择信道是否也可用?如果可用,你是否会得到 802.11 头?是否也能得到 radio 头?)

使用 Atheros Communications 芯片组的网卡

请参见 Atheros customer products 页面,查找使用 Atheros 芯片组的产品。

在使用 v5_ar5k 或 madwifi 驱动的 Linux 系统上,你可以使用 AR5K 网卡捕获原始 802.11 数据包。对于 v5ar5k 驱动,你需要 Linux wireless-tools 25 或更高版本才能将网卡置于监控模式。如果你使用 madwifi 驱动,可以使用 iwconfiginterfacemode monitor 将网卡置于监控模式,然后使用 iwconfiginterfacechannelchannel 选择信道(如果需要)。这只适用于旧版本的 madwifi 驱动。如果你使用的是新版本,也称为 madwifi-ng,则必须使用命令 wlanconfigathcreate wlandevwifiXwlanmodemon 创建 monitor vap。更多信息请阅读 madwifi 文档,该文档包含在 0.9.0 及更高版本中。

Linux RT2400/RT2500 驱动支持监控模式。使用 iwconfiginterfacemode monitor 将网卡置于监控模式,然后使用 iwconfiginterfacechannelchannel 选择信道(如果需要)。(这会给出 802.11 头,还是 802.11 头加 radio 头?)

Intel Centrino 适配器

开源 Intel(R) Pro Wireless 2100、2200/2915 和 3945 Drivers for Linux 支持监控模式。你可以使用 iwconfiginterfacemode monitor 将网卡置于监控模式,然后使用 iwconfiginterfacechannelchannel 选择信道(如果需要)。所有驱动都提供对额外 radiotap 头的可选(编译时)支持,并从以下版本开始:ipw3945 version 0.0.71、ipw2200 version 1.0.7 和 ipw2100 drivers version 1.2.1。ipw2200 和 ipw3945 驱动还有另一个功能,允许正常使用无线接口,同时捕获通过它的原始流量:rtapX 接口。你需要将以下行添加到 /etc/modprobe.d/ipw3945 文件:"options ipw3945 rtap_iface=1"。之后,执行 "ifconfig rtap0 up" 并开始在该接口上捕获。对于 ipw2200,将 3945 替换为 2200。

使用 Zyxel ZyDAS 1211 的网卡

ZyDAS 1211 芯片组通过 zd1211 项目提供的开源驱动支持监控模式。该芯片组只用于 USB dongle,并且相当常见。将其置于监控模式的最快方法是执行 iwconfiginterfacemode monitor。该驱动从 2.6.18 开始内置于 kernel,但也可以在任何 2.6 kernel 上以 out-of-tree 方式构建。

其他网卡

也许可以在其他网卡上以监控模式捕获。如果可以,请更新 Wiki,提供操作方法信息。

Imported from https://wiki.wireshark.org/CaptureSetup/WLAN/Linux_non_mac80211 on 2020-08-11 23:12:08 UTC

相关 Wireshark Wiki 页面

网络分析技术档案