通过Raspbian上的USB启用RTL8188CUS的监视模式


15

我试图在树莓派b +型(或任何树莓派)上为RTL8188CUS芯片组的USB wifi加密狗启用监视模式。

$ lsusb
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument.

根据github / raspberrypi / linux / issues / 369,您需要启用rtlwifi / rtl8192cu内核模块,该模块已包含在内核发行版中但尚未编译。这需要对某些文件进行较小的修改,如下文“ STEP 2”中所述。

从4.1.6+开始,该线程中提到的USB问题已得到解决,因此rtlwifi驱动程序应该可以使用。

在新鲜的树莓派(B +型)上重新制作的步骤...

步骤0:将现有模块和内核更新为最新版本

$ sudo apt-get update
$ sudo rpi-update
$ uname -a
Linux raspberrypi 4.1.7+ #815 PREEMPT Thu Sep 17 17:59:24 BST 2015 armv6l GNU/Linux

步骤1:获取raspbian内核源代码并添加缺少的依赖项

$ git clone --depth=1 https://github.com/raspberrypi/linux
$ sudo apt-get install bc lshw

步骤2:启用RTL8188CUS(RTL8192)的rtlwifi(内核)驱动程序

edit linux/drivers/net/wireless/Kconfig
-#source "drivers/net/wireless/rtlwifi/Kconfig"
-source "drivers/net/wireless/rtl8192cu/Kconfig"
+source "drivers/net/wireless/rtlwifi/Kconfig"
+#source "drivers/net/wireless/rtl8192cu/Kconfig"

edit linux/drivers/net/wireless/Makefile
-#obj-$(CONFIG_RTLWIFI)         += rtlwifi/
+obj-$(CONFIG_RTLWIFI)          += rtlwifi/

步骤3:编译并安装内核(耗时数小时)

摘自内核构建文档

$ cd linux
$ KERNEL=kernel
$ make bcmrpi_defconfig

$ make zImage modules dtbs
$ sudo make modules_install
$ sudo cp arch/arm/boot/dts/*.dtb /boot/
$ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
$ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
$ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

步骤4:重新启动

$ sudo reboot

步骤5:检查rtlwifi / rtl8192cu模块是否已加载

$ lsmod | fgrep rtl8192cu
rtl8192cu             100806  0 
rtl_usb                14781  1 rtl8192cu
rtl8192c_common        72091  1 rtl8192cu
rtlwifi               101122  3 rtl_usb,rtl8192c_common,rtl8192cu
mac80211              623281  3 rtl_usb,rtlwifi,rtl8192cu
$
$ lshw
  *-network:0
       description: Ethernet interface
       physical id: 1
       bus info: usb@1:1.3
       logical name: wlan0
       serial: 00:0b:81:94:e9:a3
       capabilities: ethernet physical
       configuration: broadcast=yes driver=rtl8192cu driverversion=4.1.7+ firmware=N/A link=no multicast=yes

步骤6:尝试启动监视模式

$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Operation not supported.

我错过了什么?
问题369似乎表明它可以与rtlwifi驱动程序一起使用?


先生,这非常有帮助。我几乎完全按照这些步骤进行操作,它就像一种魅力。
Alex Nichol

有了所有适当的尊重和毅力加分,恕我直言,这也很麻烦。看到这里,您可以立即获得带有支持监视器模式的芯片组的无线加密狗,价格在5美元以下,包括运费。
RolfBly

Answers:


8

事实证明重新编译和加载rtlwifi模块的步骤是正确的。问题是在这种情况下iwconfig无法用于启用/确定监视模式。

相反,我使用了史蒂文·戈登(Steven Gordon)概述的iw,它起作用了。

总结一下:

步骤6b:列出可用的物理网络接口

$ iw dev

步骤7:确定物理接口是否支持监视模式

$ iw phy phy0 info
... lots of stuff ...
Supported interface modes:
     * IBSS
     * managed
     * AP
     * AP/VLAN
     * monitor
     * mesh point
     * P2P-client
     * P2P-GO
... lots more stuff ...

步骤8:向该物理卡添加监视接口

您需要为您拥有的硬件显式添加“监视”界面。

$ sudo iw phy phy0 interface add mon0 type monitor

步骤8:开始监控

就我而言,我正在使用tshark方便监视,显示了一些有用的字段,而不是很多噪音。

$ sudo apt-get install tshark
$ sudo tshark -i mon0 -f 'broadcast' -T fields -e frame.time_epoch -e wlan.sa -e radiotap.dbm_antsignal -e wlan.fc.type -e wlan.fc.subtype

做完了


您的链接已断开,您遗漏了最后几个字符:sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw(我试图编辑您的帖子,但显然编辑必须至少包含6个字符。 ..)
Ted Mielczarek

我不知道在步骤2中该做什么//需要帮助。
Ray Kodiak

在您在步骤1(“ linux”目录)中克隆的git repo内...编辑文件“ linux / drivers / net / wireless / Kconfig”,在其中加上rtl8192cu的两行中添加一个#,以注释掉它们行的开头。编辑文件“ linux / drivers / net / wireless / Makefile”,用rtl8192cu注释掉1行,用rtlwifi注释掉该行。
Matt M

0

很好的指示。谢谢。我还需要做几件事...

  1. 当我使用新映像(4.9.13-v7 +)重新启动raspberry pi 3时,尽管rtl8192cu目录位于/lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek中,但lsmod确实列出了rtl8192cu / rtlwifi / rtl8192cu解决方案:我必须做一个sudo modprobe rtl8192cu

  2. iwconfig jsut会说“没有无线扩展”,即使对于主动连接到AP的接口也是如此。我改用iw。请参阅http://linuxwireless.org/en/users/Documentation/iw/__v41.html中的说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.