Ativar modo de monitoramento para RTL8188CUS via USB no Raspbian

15

Estou tentando ativar o modo de monitoramento para um dongle wifi USB com o chipset RTL8188CUS em um raspberry pi modelo b + (ou qualquer outro raspberry pi).

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

De acordo com o github / raspberrypi / linux / issues / 369 , você precisa habilitar o módulo do kernel rtlwifi / rtl8192cu que está incluído na distribuição do kernel, mas não é compilado. Isso requer pequenas modificações em alguns arquivos, conforme diferenciado abaixo no 'PASSO 2'.

O problema de USB mencionado nesse encadeamento foi resolvido a partir do 4.1.6+, portanto, o driver rtlwifi deve funcionar.

Passos para recriar um pi de framboesa fresco (modelo B +) ...

PASSO 0: Atualize os módulos e o kernel existentes para os mais recentes

$ 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

PASSO 1: Obtenha a fonte do kernel raspbian e adicione dependências ausentes

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

PASSO 2: Habilite os drivers rtlwifi (kernel) para 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/

PASSO 3: Compilar e instalar o kernel (demorou muitas horas)

Resumido da documentação de construção do kernel .

$ 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

PASSO 4: Reinicialização

$ sudo reboot

PASSO 5: Verifique se o módulo rtlwifi / rtl8192cu está carregado

$ 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

PASSO 6: Tente ativar o modo de monitoramento

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

Do que eu perdi?
O problema 369 parece indicar que ele pode funcionar com o driver rtlwifi?

Matt M
fonte
Isso foi extremamente útil. Eu segui os passos exatamente, e funcionou como um encanto.
Alex-Nichol
Com todo o respeito e pontos de bônus pela perseverança, IMHO isso também é bastante complicado. Veja aqui , você pode obter um dongle wifi com um chipset que suporta o modo de monitor imediatamente, por menos de 5 dólares, incluindo frete.
RolfBly

Respostas:

8

As etapas para recompilar e carregar o módulo rtlwifi estão corretas. O problema é que o iwconfig não está funcionando para ativar / determinar o modo de monitoramento nessa situação.

Em vez disso, usei o iw, conforme descrito por Steven Gordon, e funcionou.

Para resumir:

PASSO 6b: Liste as interfaces de rede físicas disponíveis

$ iw dev

PASSO 7: Determine se a interface física suporta o modo de monitoramento

$ 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: Adicione uma interface de monitoramento ao cartão físico

Você precisa adicionar explicitamente uma interface de 'monitoramento' para o hardware que possui.

$ sudo iw phy phy0 interface add mon0 type monitor

PASSO 8: Iniciar o monitoramento

No meu caso, estou usando o tshark para facilitar o monitoramento, exibindo alguns campos úteis em vez de muito ruído.

$ 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

Feito.

Matt M
fonte
Seu link está quebrado, faltam os últimos caracteres: sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw (tentei editar sua postagem, mas aparentemente as edições devem ter pelo menos 6 caracteres. ..)
Ted Mielczarek
Não entendo o que fazer na Etapa 2 / // preciso de ajuda.
precisa saber é o seguinte
Dentro do repositório git que você clonou na etapa 1 (diretório 'linux') ... Edite o arquivo 'linux / drivers / net / wireless / Kconfig', comente as 2 linhas com rtl8192cu adicionando um '#' ao início da linha. Edite o arquivo 'linux / drivers / net / wireless / Makefile', comente a linha 1 com rtl8192cu, remova o comentário da linha com rtlwifi.
Matt M
0

Ótimas instruções. Obrigado. Mais algumas coisas que eu precisava fazer ...

  1. Quando reiniciei o meu raspberry pi 3 com a nova imagem (4.9.13-v7 +), o lsmod listou o rtl8192cu, embora o diretório rtl8192cu estivesse em /lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek / rtlwifi / rtl8192cu Solução: eu tive que fazer uma sudo modprobe rtl8192cu

  2. O iwconfig jsut diz "Sem extensões sem fio", mesmo para as interfaces que estão ativamente conectadas a um ponto de acesso. Estou usando o iw. Veja as instruções em http://linuxwireless.org/en/users/Documentation/iw/__v41.html

user63497
fonte