Włącz tryb monitorowania RTL8188CUS przez USB na Raspbian

15

Próbuję włączyć tryb monitorowania dla klucza Wi-Fi USB z chipsetem RTL8188CUS na Raspberry Pi model B + (lub jakikolwiek inny 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.

Zgodnie z github / raspberrypi / linux / Issues / 369 , musisz włączyć moduł jądra rtlwifi / rtl8192cu, który jest dołączony do dystrybucji jądra, ale nie został skompilowany. Wymaga to drobnych modyfikacji niektórych plików, jak opisano poniżej w „KROKU 2”.

Problem USB wspomniany w tym wątku został rozwiązany od wersji 4.1.6+, więc sterownik rtlwifi powinien działać.

Kroki, aby odtworzyć na świeżym malinowym pi (model B +) ...

KROK 0: Zaktualizuj istniejące moduły i jądro do najnowszej

$ 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

KROK 1: Pobierz źródło jądra Raspbian i dodaj brakujące zależności

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

KROK 2: Włącz sterowniki rtlwifi (jądro) dla 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/

KROK 3: Skompiluj i zainstaluj jądro (zajęło wiele godzin)

Podsumowano z dokumentacji budowy jądra .

$ 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

KROK 4: Uruchom ponownie

$ sudo reboot

KROK 5: Sprawdź, czy moduł rtlwifi / rtl8192cu jest załadowany

$ 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

KROK 6: Spróbuj aktywować tryb monitorowania

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

Co mnie ominęło?
Problem 369 wydaje się wskazywać, że może współpracować ze sterownikiem RTLWifi?

Matt M.
źródło
To było bardzo pomocne. Prawie dokładnie podążyłem za krokiem i działało to jak urok.
Alex Nichol
Przy całym szacunku i punktach premiowych za wytrwałość, IMHO jest również dość kłopotliwe. Zobacz tutaj , możesz uzyskać klucz Wi-Fi z chipsetem, który obsługuje tryb monitorowania po wyjęciu z pudełka, za mniej niż 5 USD, w tym koszty wysyłki.
RolfBly

Odpowiedzi:

8

Okazuje się, że kroki do ponownej kompilacji i załadowania modułu rtlwifi są prawidłowe. Problem polega na tym, że iwconfig nie działa w celu włączenia / określenia trybu monitorowania w tej sytuacji.

Zamiast tego użyłem I zgodnie z opisem Stevena Gordona i zadziałało.

Podsumowując:

KROK 6b: Wymień dostępne fizyczne interfejsy sieciowe

$ iw dev

KROK 7: Sprawdź, czy interfejs fizyczny obsługuje tryb monitorowania

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

KROK 8: Dodaj interfejs monitorowania do tej karty fizycznej

Musisz jawnie dodać interfejs „monitorowania” dla posiadanego sprzętu.

$ sudo iw phy phy0 interface add mon0 type monitor

KROK 8: Rozpocznij monitorowanie

W moim przypadku używam tshark, aby ułatwić monitorowanie, wyświetlając kilka przydatnych pól, a nie dużo hałasu.

$ 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

Gotowy.

Matt M.
źródło
Twój link jest zepsuty, brakuje Ci kilku ostatnich znaków: sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw (Próbowałem edytować swój post, ale najwyraźniej zmiany muszą mieć co najmniej 6 znaków. ..)
Ted Mielczarek
Nie rozumiem, co robić w kroku 2 // potrzebuję pomocy.
Ray Kodiak
W repozytorium git sklonowanym w kroku 1 (katalog „linux”) ... Edytuj plik „linux / drivers / net / wireless / Kconfig”, skomentuj 2 linie z rtl8192cu w nich, dodając „#” do początek linii. Edytuj plik „linux / drivers / net / wireless / Makefile”, skomentuj 1 linię za pomocą rtl8192cu, odkomentuj linię za pomocą rtlwifi.
Matt M
0

Świetne instrukcje. Dziękuję Ci. Kilka innych rzeczy, które musiałem zrobić ...

  1. Kiedy zrestartowałem mój Raspberry Pi 3 z nowym obrazem (4.9.13-v7 +), lsmod wypisał listę rtl8192cu, chociaż katalog rtl8192cu znajdował się w /lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek / rtlwifi / rtl8192cu Rozwiązanie: Musiałem zrobić sudo modprobe rtl8192cu

  2. iwconfig jsut mówi „Brak rozszerzeń bezprzewodowych” nawet dla interfejsów, które są aktywnie połączone z punktem dostępowym. Zamiast tego używam iw. Zobacz instrukcje w http://linuxwireless.org/en/users/Documentation/iw/__v41.html

użytkownik63497
źródło