web-dev-qa-db-fra.com

Activer le mode de surveillance pour RTL8188CUS via USB sur Raspbian

J'essaie d'activer le mode de surveillance d'un dongle wifi USB avec le chipset RTL8188CUS sur un modèle Raspberry Pi b + (ou n'importe quel Raspberry Pi d'ailleurs).

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

Selon github/raspberrypi/linux/issues/369 , vous devez activer le module de noyau rtlwifi/rtl8192cu inclus avec la distribution du noyau, mais non compilé. Cela nécessite des modifications mineures de certains fichiers, comme indiqué ci-dessous dans 'ÉTAPE 2'. 

Le problème USB mentionné dans ce fil a été résolu à partir de la version 4.1.6+, le pilote rtlwifi devrait donc fonctionner.

Étapes à suivre pour recréer un Raspberry Pi frais (modèle B +) ...

ÉTAPE 0: Mettez à jour les modules existants et le noyau au plus tard

$ 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

ÉTAPE 1: Obtenir le code source du noyau raspbian et ajouter les dépendances manquantes

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

ÉTAPE 2: Activez les pilotes rtlwifi (noyau) pour 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/

ÉTAPE 3: Compiler et installer le noyau (a pris plusieurs heures)

Résumé de documentation sur la construction du noyau .

$ 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

ÉTAPE 4: Redémarrage

$ Sudo reboot

ÉTAPE 5: Vérifiez que le module rtlwifi/rtl8192cu est chargé

$ 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

ÉTAPE 6: Essayez d'activer le mode de surveillance

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

Qu'est-ce que j'ai raté?
Le numéro 369 semble indiquer qu'il peut fonctionner avec le pilote rtlwifi?

10
Matt M

Il s'avère que les étapes pour recompiler et charger le module rtlwifi sont correctes. Le problème est que iwconfig ne fonctionne pas pour activer/déterminer le mode de surveillance dans cette situation.

Au lieu de cela, j’ai utilisé iw comme décrit par Steven Gordon - Capture du WiFi en mode moniteur avec iw et cela a fonctionné. 

Résumer:

ÉTAPE 6b: Répertoriez les interfaces réseau physiques disponibles

$ iw dev

STEP 7: Déterminer si l'interface physique prend en charge le mode de surveillance

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

ÉTAPE 8: Ajouter une interface de surveillance à cette carte physique

Vous devez explicitement ajouter une interface de "surveillance" pour le matériel dont vous disposez.

$ Sudo iw phy phy0 interface add mon0 type monitor

ÉTAPE 8: Démarrer la surveillance

Dans mon cas, j'utilise tshark pour faciliter la surveillance, en affichant quelques champs utiles plutôt que beaucoup de bruit.

$ 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

Terminé.

10
Matt M

Pour ceux qui sont toujours intéressés, le rtl8192cu est maintenant compilé dans le noyau framboise par défaut. Vous pouvez l'activer en commentant la liste noire dans /etc/modprobe.d/blacklist-rtl8192cu.conf. L'exécution de Sudo iwconfig wlan0 mode monitor après un redémarrage activera le mode de surveillance sans aucun problème supplémentaire.

0
Julius Naeumann