docs/content/hardware/xiaomi-mi-4a.md

5.0 KiB

title date
Xiaomi Mi Router 4A 2022-12-01T17:25:00+01:00

{{< hint danger >}} Achtung!

Es sind verschiedene Versionen des '''Xiaomi Mi 4A Gigabit''' im Umlauf, von denen sich aktuell einige nicht mit OpenWrt / Freifunk betreiben lassen.

Weitere Infos im Abschnitt Hardware-Revisionen unterscheiden. {{< /hint >}}

Hardware-Revisionen unterscheiden

Es gibt mehrere Hardware-Revisionen des Xiaomi Mi 4A Gigabit:

Gerät aktuell unterstützt
Xiaomi Mi 4A Gigabit v1 (GigaDevice SPI-Flash)
Xiaomi Mi 4A Gigabit v1 (cFeon SPI-Flash)
Xiaomi Mi 4A Gigabit v2

Die Revision des Board-Layouts lässt sich nach Ausnutzen des Exploits über den Befehl ls /etc/Wireless feststellen.

  • v1: mt7603e mt7612
  • v2: mt7603e mt7663
root@XiaoQiang:~# ls /etc/Wireless
mt7603e  mt7612

Ab Firmwareversion 20221201 werden beide Varianten des v1-Layouts vom selben Image unterstützt und müssen nicht unterschieden werden. Das v2-Layout wird aktuell nicht unterstützt. Solltest du ein Gerät mit v2-Layout erhalten haben, nimm bitte Kontakt mit den Firmware-Entwicklern oder der Community auf.

Installation

Zum Überschreiben der Herstellerfirmware ist ein Exploit des Web-UI nötig: https://github.com/acecilia/OpenWRTInvasion

Videozusammenfassung des Exploits: https://www.youtube.com/watch?v=VxzEvdDWU_s
Die Videoanleitung sollte nur als zusätzliche Hilfestellung, nicht aber als Referenz genutzt werden!

Router vorbereiten

{{< hint warning >}} Achtung!

Für den Mi Router 4A 100m (nicht Gigabit) ist eine ältere Herstellerfirmware nötig, da OpenWrt nicht mit dem Partitionslayout der neueren kompatibel ist. {{< /hint >}} {{< details "Herstellerfirmware downgraden" >}}

  • Ältere Herstellerfirmware herunterladen: bigota.miwifi.com

  • Mit gedrückter Reset-Taste Strom verbinden und warten bis die LED orange blinkt

  • DHCP Server bereitstellen, mit einem der beiden LAN-Port verbinden

  • Auf dem Default-Gateway einen TFTP Server starten, Firmware als test.bin ablegen

  • Beispiel für TFTP unter Linux:

    sudo dnsmasq --no-daemon --bind-interfaces -p0 --dhcp-authoritative --dhcp-range=192.168.1.100,192.168.1.200 --log-dhcp --enable-tftp --tftp-root=$(pwd) --listen-address 192.168.1.1
    
  • Warten, bis die blaue LED schnell blinkt

  • Strom trennen und erneut verbinden {{< /details >}}

  • Router mit dem Internet verbinden (wichtig, da beim Installationsvorgang zusätzliche Daten vom Router aus dem Internet geladen werden müssen!)

    • entweder über den WAN-Port
    • oder per WiFi Client (Modus "WiFi Access Point", hier ändert sich allerdings die IP Adresse des Web-UI!)
  • PC mit einem der beiden LAN-Ports verbinden, IPv4 Adresse per DHCP beziehen

  • Mit 192.168.31.1 verbinden und Setup-Assistenten durchlaufen

  • Stok auslesen: Im Web UI einloggen. Die URL in der Adresszeile beinhaltet etwas wie stok#3700b146c87e45fea51170f87f47d34c

Exploit ausnutzen

Hierfür kann auch der Anleitung des OpenWRTInvasion Exploits gefolgt werden.

Für Windows gibt es eine Dockervariante, die in der oben verlinkten Anleitung beschrieben wird. (nicht getestet)

  • Git Repository klonen:
    git clone https://github.com/acecilia/OpenWRTInvasion.git
    
  • python3-pip installieren
  • Im geklonten Repository ./remote_command_execution_vulnerability.py ausführen:
    cd OpenWRTInvasion
    ./remote_command_execution_vulnerability.py
    
  • IP Adresse des Routers und stok (nur den Teil nach stok#) eingeben

OpenWrt flashen

  • Mit telnet auf dem Router einloggen (User: root, Passwort: root):
    telnet 192.168.31.1
    
  • OpenWrt sysupgrade Image nach /tmp/firmware.bin kopieren
    cd /tmp
    wget -O firmware.bin <firmware-url>
    
  • Prüfsumme berechnen:
    ./busybox sha256sum firmware.bin
    
  • Installieren:
    mtd -e OS1 -r write firmware.bin OS1
    

Theoretisch kann hier auch direkt die Freifunk Firmware heruntergeladen und geflasht werden.

Freifunk Firmware flashen

  • Über LAN-Port in OpenWrt einloggen
    • IP: 192.168.1.1
    • User: root
  • Freifunk Firmware flashen
    • per Web-UI:
      • System → Backup / Flash Firmware → "Flash new firmware image"
      • Wichtig: "Keep settings" abwählen!
    • per SSH:
      scp -O ~/Downloads/fff-firmware.bin root@192.168.1.1:/tmp/
      
      ssh root@192.168.1.1
      # Wichtig: -n nicht vergessen!
      sysupgrade -n /tmp/fff-firmware.bin
      

Ports für Layer3 Konfiguration

  • wan:* bzw. wan:t
  • lan1:* bzw. lan1:t
  • lan2:* bzw. lan2:t