--- title: "Xiaomi Mi Router 4A" date: 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](#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` ```sh 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](mailto:franken-dev@freifunk.net) oder der [Community](https://wiki.freifunk-franken.de/w/Kommunikation) 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](https://bigota.miwifi.com/xiaoqiang/rom/r4ac/miwifi_r4ac_firmware_e9eec_2.18.58.bin) - 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: ```sh 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](https://github.com/acecilia/OpenWRTInvasion) gefolgt werden. Für **Windows** gibt es eine Dockervariante, die in der oben verlinkten Anleitung beschrieben wird. (nicht getestet) - Git Repository klonen: ```sh git clone https://github.com/acecilia/OpenWRTInvasion.git ``` - `python3-pip` installieren - Im geklonten Repository `./remote_command_execution_vulnerability.py` ausführen: ```sh 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): ```sh telnet 192.168.31.1 ``` - OpenWrt sysupgrade Image nach /tmp/firmware.bin kopieren ```sh cd /tmp wget -O firmware.bin ``` - Prüfsumme berechnen: ```sh ./busybox sha256sum firmware.bin ``` - Installieren: ```sh 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: ```sh 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` ## Links - [OpenWRT Wiki (Gigabit)](https://openwrt.org/inbox/toh/xiaomi/xiaomi_mi_router_4a_gigabit_edition) - [OpenWRT Wiki (100m)](https://openwrt.org/toh/xiaomi/mi_router_4a_mir4a_100m)