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?
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é.
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.