Leider habe ich bisher weder ein unterstütztes eInk-Display noch einen Pi-Zero, daher hier meine Notizen zu Experimenten auf dem Raspberry Pi 3B+.
Ziel ist nicht mit der onboard-Karte zu arbeiten sondern mit einem Alfa-USB-Stick, das hat vor allem mit den Instabilitäten des nexmon Patches zu tun.
Genau prüfen mit diskutil list welche Disk denn nun die richtige ist! Die Disk vor dem dd-Kommando mit sudo diskutil umountdisk /dev/diskX aushängen!
mbp:pwnagotchi BennyE$ sudo dd if=pwnagotchi-raspbian-lite-v1.3.0.img of=/dev/rdisk3 bs=1024k 5168+0 records in 5168+0 records out 5419040768 bytes transferred in 194.591458 secs (27848297 bytes/sec)
Das MBP hängt die Disk danach wieder ein und man kann auf /boot zugreifen um dort eine config.yml zu erstellen. Ich fange mit folgendem Inhalt an:
main: name: 'moppel' whitelist: - 'eigene SSID' plugins: grid: enabled: false report: false exclude: - 'eigene SSID' ui: display: enabled: false type: 'waveshare_2' color: 'black'
Wir lassen „moppel“ nun erst einmal (in meinem Fall mit angeschlossenen LAN-Kabel) booten, damit die Keys erzeugt werden und das System sich einrichtet.
An der Konsole von „moppel“ geben wir eine Route für unser Client-Netz manuell mit:
Eine kleine Herausforderung ist vielleicht die englische Tastatur, mir ist es bisher nicht gelungen diese zu ändern (via SSH hat man dieses Problem dann aber auch nicht). „Shift-ö“ ⇒ „:“, „ß“ ⇒ „-“, „-“ ⇒ „/“
sudo ip route add 192.168.11.0/24 via 192.168.2.10
Im Browser kann man nun auf „moppel“ auf (in meinem Fall) http://192.168.2.178:8080 zugreifen.
Solange „moppel“ in MANU Modus läuft, tut es nichts. Ein Klick auf „Restart in AUTO mode“, startet nur den Dienst neu - also nicht den kompletten Pi.
Um die Route für den nächsten Start „bootfest“ zu machen, habe ich folgende Änderung vorgenommen: sudo cat /etc/network/interfaces.d/eth0-cfg
allow-hotplug eth0 iface eth0 inet dhcp post-up ip route add 192.168.11.0/24 via 192.168.2.10
Leider ist der nexmon Patch, der es erlaubt mit der onboard-WLAN-Karte des Raspberry Pi in den „Monitor Mode“ zu wechseln, nicht allzu stabil. Dies äußert sich dadurch dass man in der Ausgabe von dmesg nach kurzer Zeit folgendes sieht:
[ 2067.191895] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53360, -110 [ 2070.231937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53364, -110 [ 2073.271945] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53368, -110 [ 2076.311937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53372, -110 [ 2079.351936] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53376, -110 [ 2082.391939] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53380, -110 [ 2085.431935] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53384, -110 [ 2088.471945] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53388, -110 [ 2091.031937] brcmfmac: brcmf_proto_bcdc_query_dcmd: brcmf_proto_bcdc_msg failed w/status -110 [ 2091.031951] brcmfmac: brcmf_cfg80211_get_channel: chanspec failed (-110) [ 2093.591944] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53392, -110 [ 2096.151976] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4097, -110 [ 2099.191955] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4098, -110 [ 2102.231913] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4099, -110 [ 2105.271939] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4100, -110 [ 2108.311892] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4101, -110 [ 2111.351933] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4102, -110 [ 2114.391952] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4103, -110 [ 2117.431978] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4104, -110 [ 2120.471943] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4105, -110 [ 2123.511934] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4106, -110 [ 2126.551937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4107, -110
Dieser Zustand lässt sich nur durch einen (regelmäßigen) Reboot beheben. (Aus diesem Grund wollte ich auch die Route bootfest machen.)
Da ich leider nicht das erste Mal erlebe dass die NEXMON Patches auf dem Pi3B+ nicht sauber funktionieren, werden wir dann in einem folgenden Schritt die onboard-Wireless-Karte deaktivieren und den Alfa-Stick einbinden.
Dafür sind einige Änderungen notwendig, die der Author des pwnagotchi (@evilsocket) vermutlich ablehnen würde, daher sehe ich das hier mal als privaten Workaround an.
Ich arbeite gerne mit dem Alfa AWUS036ACH Dual Band USB Adapter AC1200 und im pwnagotchi Image ist bereits der modifizierte Treiber mit Unterstützung für den „Monitor Mode“ enthalten.
Notwendige Änderungen:
pi@moppel:~ $ sudo vi /boot/config.txt
[all] #dtoverlay=vc4-fkms-v3d dtoverlay=dwc2 dtoverlay=spi1-3cs dtparam=spi=on dtparam=i2c_arm=on dtparam=i2c1=on gpu_mem=16 dtoverlay=pi3-disable-wifi
pi@moppel:~ $ sudo vi /etc/udev/rules.d/10-wlan.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:ca:a5:AA:BB", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="mon0"
pi@moppel:~ $ sudo vi /usr/bin/pwnlib
# starts mon0 start_monitor_interface() { # iw phy phy0 interface add mon0 type monitor && ifconfig mon0 up iw mon0 set type monitor && ip link mon0 up }
Die obigen Änderungen sind notwendig, da der Alfa-Stick mit dem vom pwnagotchi vorgesehen Weg den Monitor Mode zu aktivieren nicht klarkommt und das pwnagotchi keine Daten sieht (keine SSIDs, keine Clients, nichts).
Bitte berücksichtigt dass dies wirklich nur ein Workaround ist, da die Datei beim nächsten Update seitens des Projekts überschrieben werden dürfte (und die manuelle Änderung der Datei /usr/bin/pwnlib damit wieder notwendig wird).
Vorausgesetzt man beendet das pwnagotchi und bettercap, kann man sich in der Umgebung auf die Suche nach interessanten Netzen/Geräten machen.
sudo systemctl stop pwnagotchi sudo systemctl stop bettercap
sudo bettercap -iface mon0
wifi.recon on
wifi.show
Dies ist eine bekannte Schwachstelle die eigentlich alle Hersteller geschlossen haben sollten. Leider ist das häufig nicht der Fall .. :(
wifi.assoc all
wifi.recon off
ble.recon on
ble.show
ble.enum <MAC ADDR>
ble.recon off