2015-09-21 27 views
9

Sto tentando di abilitare la modalità di monitoraggio per un dongle wifi USB con il chipset RTL8188CUS su un modello di lampone pi b + (o qualsiasi altro pi lampone).Abilita la modalità di monitoraggio per RTL8188CUS via USB su Raspbian

$ 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. 

Secondo github/raspberrypi/linux/issues/369, è necessario attivare il modulo del kernel rtlwifi/rtl8192cu che è incluso nella distribuzione del kernel, ma non compilato. Ciò richiede piccole modifiche ad alcuni file come spiegato di seguito in "PASSO 2".

Il problema USB menzionato in quella discussione è stato risolto a partire dalla 4.1.6+, quindi il driver rtlwifi dovrebbe funzionare.

passaggi per ricreare su un lampone fresco pi (modello B +) ...

STEP 0: Aggiornamento moduli e il kernel esistenti per ultima

$ 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 

FASE 1: ottenere il kernel raspbian di origine e aggiungere dipendenze mancanti

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

FASE 2: attivare i driver rtlwifi (kernel) per RTL8188CUS (RTL8192)

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" 

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

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

FASE 3: compilare ed installare il kernel (preso molte ore)

Riassunta dal kernel building documentation.

$ 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 

FASE 4: Riavvio

$ sudo reboot 

FASE 5: Verificare che il modulo rtlwifi/rtl8192cu è caricato

$ 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: [email protected]: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 

FASE 6: Prova ad attivare la modalità di monitoraggio

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

Cosa mi è mancato?
Il numero 369 sembra indicare che può funzionare con il driver rtlwifi?

+1

Questa domanda potrebbe essere più appropriata in [Super User] (http://superuser.com/about) o [Server Fault] (http://serverfault.com/about) StackExchanges in quanto non è direttamente correlato alla programmazione. –

+0

Una piccola cosa che ho dimenticato di prendere in considerazione quando ho provato questo: Su RaspPi 2, il passaggio 3 è diverso (come descritto nella documentazione di costruzione collegata sopra). – luckyrumo

risposta

9

Risulta la procedura per ricompilare e caricare il modulo rtlwifi corretto. Il problema è che iwconfig non funziona per abilitare/determinare la modalità di monitoraggio in questa situazione.

Invece, ho usato iw as outlined by Steven Gordon - Capturing WiFi in Monitor mode with iw e ha funzionato.

In sintesi:

PASSO 6b: Elencare le interfacce di rete fisiche disponibili

$ iw dev 

STEP 7: Determinare se l'interfaccia fisica supporta la modalità di monitoraggio

$ 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 ... 

PASSO 8: aggiungere un intero di monitoraggio rfaccia a quella carta fisica

È necessario aggiungere esplicitamente un'interfaccia di 'monitoraggio' per l'hardware che si possiede.

$ sudo iw phy phy0 interface add mon0 type monitor 

FASE 8: Avviare il monitoraggio

Nel mio caso, sto usando tshark per facilitare il monitoraggio, la visualizzazione di alcuni campi utili, piuttosto che un sacco di rumore.

$ 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 

Fatto.

+0

ottimo, ha funzionato per la prima volta – sttaq