--- title: "Xiaomi Mi Router 4A" date: 2022-12-01T17:25:00+01:00 --- ## Hardware unterscheiden {{< hint danger >}} Es gibt verschiedene Hardware-Varianten des Xiaomi Mi 4A, die sich teilweise signifikant unterscheiden. Die Variante muss bei der Installation **zwingend** berücksichtigt werden, da die Firmwares nicht zueinander kompatibel sind. {{< /hint >}} {{< details "**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. {{< /details >}}   {{< details "**Xiaomi Mi 4A**" >}} | Gerät | aktuell unterstützt | | -- |:--:| | Xiaomi Mi 4A (100m) | ✅ | | Xiaomi Mi 4A (100m-intl) | ✅ | Die Hardware beider Varianten ist identisch, allerdings wird die internationale Version mit einem anderen Partitionslayout ausgeliefert. Die Revision des Board-Layouts lässt sich nach Ausnutzen des Exploits über den Befehl `cat /proc/mtd | grep mtd6` feststellen. - 100m: `mtd6: 00100000 00010000 “overlay”` - 100m-intl: `mtd6: 00200000 00010000 “overlay”` ```sh root@XiaoQiang:~# cat /proc/mtd | grep mtd6 mtd6: 00200000 00010000 “overlay” ``` {{< /details >}} ## 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 - 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 | Gerät | Typ | Internet | 1 | 2 | | -- | -- | :--: | :--: | :--: | | Xiaomi Mi 4A Gigabit Edition | DSA | `wan` | `lan1` | `lan2` | | Xiaomi Mi 4A (100m/100m-intl)| swconfig | `0` | `2` | `4` | ## 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)