Activer le mode de surveillance pour RTL8188CUS via USB sur Raspbian

15

J'essaie d'activer le mode de surveillance pour un dongle wifi USB avec le chipset RTL8188CUS sur un modèle de framboise pi b + (ou n'importe quelle framboise 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 qui est inclus dans la distribution du noyau mais non compilé. Cela nécessite des modifications mineures à certains fichiers comme ci-dessous dans 'ÉTAPE 2'.

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

Étapes à recréer sur une framboise pi fraîche (modèle B +) ...

ÉTAPE 0: Mettre à jour les modules et le noyau existants vers les derniers

$ 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: Obtenez la source du noyau raspbian et ajoutez 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"

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

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

Résumé de la documentation de 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 problème 369 semble indiquer qu'il peut fonctionner avec le pilote rtlwifi?

Matt M
la source
Ceci, monsieur, a été extrêmement utile. J'ai suivi les étapes à peu près exactement, et cela a fonctionné comme un charme.
Alex Nichol
Avec tout le respect dû et les points bonus pour la persévérance, à mon humble avis, cela est également assez lourd. Voir ici , vous pouvez obtenir un dongle wifi avec un chipset qui prend en charge le mode moniteur hors de la boîte, pour moins de 5 USD, frais de port inclus.
RolfBly

Réponses:

8

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 et cela a fonctionné.

Résumer:

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

$ iw dev

ÉTAPE 7: Déterminez 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: Ajoutez 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: Lancer 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é.

Matt M
la source
Votre lien est cassé, il vous manque les derniers caractères: sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw (j'ai essayé de modifier votre message mais apparemment les modifications doivent être au moins 6 caractères. ..)
Ted Mielczarek
Je ne comprends pas quoi faire à l'étape 2 // j'ai besoin d'aide.
Ray Kodiak
Dans le dépôt git que vous avez cloné à l'étape 1 (répertoire 'linux') ... Modifiez le fichier 'linux / drivers / net / wireless / Kconfig', commentez les 2 lignes avec rtl8192cu en ajoutant un '#' au début de la ligne. Modifiez le fichier 'linux / drivers / net / wireless / Makefile', commentez la ligne 1 avec rtl8192cu, décommentez la ligne avec rtlwifi.
Matt M
0

Excellentes instructions. Je vous remercie. Quelques autres choses que je devais faire ...

  1. Lorsque j'ai redémarré mon Raspberry Pi 3 avec la nouvelle image (4.9.13-v7 +), lsmod a répertorié le rtl8192cu bien que le répertoire rtl8192cu se trouve dans /lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek / rtlwifi / rtl8192cu Solution: je devais faire un sudo modprobe rtl8192cu

  2. iwconfig jsut dit "Pas d'extensions sans fil" même pour les interfaces activement connectées à un AP. J'utilise iw à la place. Voir les instructions sur http://linuxwireless.org/en/users/Documentation/iw/__v41.html

user63497
la source