En 2019, je vous ai présenté le routeur Xiaomi Mi Routeur 4 qui fonctionne en 2,4 et 5 GHz. Pour l’utiliser on est obligé de passer par l’application du constructeur : MiWiFi. Si on veut se sortir de cette obligation, il est possible d’installer OpenWrt, une solution libre. Benoît m’a proposé cet article pour modifier un Routeur Xiaomi, voici son article.
Au sommaire :
Passer le routeur Xiaomi Mi R4 sous OpenWrt
Attention, cette modification du routeur nécessite la prise en compte de plusieurs sources indiquées dans l’article. Ne vous lancez pas si vous n’avez pas les notions nécessaires à ces opérations. Vous pourriez “bricker” le routeur… le transformer en brique, en presse-papier, quoi 🙂 Nous ne pourrons pas vous aider en cas de souci et framboise314 comme l’auteur de l’article ne pourront être tenus pour responsable d’un mauvais fonctionnement.
OpenWrt
Le projet OpenWrt est un système d’exploitation Linux destiné aux appareils embarqués. Au lieu d’essayer de créer un seul firmware (micrologiciel) statique, OpenWrt fournit un système de fichiers avec gestion des paquets. Cela vous libère de la sélection et de la configuration des applications fournies par le fournisseur et vous permet de personnaliser le dispositif grâce à l’utilisation de paquets pour l’adapter à n’importe quelle application. Pour les développeurs, OpenWrt est le cadre permettant de construire une application sans avoir à écrire un micrologiciel complet autour de celle-ci. Pour les utilisateurs, cela offre la possibilité d’une personnalisation complète, permettant d’utiliser l’appareil d’une manière qui n’avait pas forcément envisagée par le constructeur.
L’article de Benoît
Bonjour, je n’ai rien inventé, juste pas mal fouillé pour trouver ce tuto que je détaille rapidement, j’ai surtout ressorti toutes les lignes de commandes. (en gras les lignes de commandes)
Sources
https://www.youtube.com/watch?v=BCLzeYCIp9Q&t=6s
Pre-requis
Il vous faut une machine sous Linux, soit en live, soit en dual boot, soit via wsl ou encore une framboise.
- Connecter le routeur
- Connecter la prise Wan du routeur au réseau filaire Ethernet (vers votre Box)
- Connecter un câble Ethernet au PC et le relier à un port Ethernet du routeur
Les manips sont à faire lorsque tout est câblé, une fois le flashage fini le routeur sera en 192.168.1.1 avec serveur DHCP sur les ports Ethrenet (eth), le wan sera en mode client DHCP, le WiFi sera off (il faudra le configurer une fois le flashage terminé et vérifié)
Pour commencer, on se sert d’une faille de sécurité du routeur pour activer le telnet, ssh et ftp.
Facultatif, se rendre sur les liens suivants.
https://github.com/acecilia/OpenWRTInvasion
Télécharger remote_command_execution_vulnerability.py : https://github.com/acecilia/OpenWRTInvasion/blob/master/remote_command_execution_vulnerability.py
Télécharger requirements;txt : https://github.com/acecilia/OpenWRTInvasion/blob/master/requirements.txt
Copier ces fichiers sur une clef ou dans un dossier, vous pouvez aussi utiliser
wget ‘url du fichier’
Pour récupérer ces fichiers plus simplement sous linux
Etape 1- prendre le contrôle du routeur
Ici nous somme donc en ligne de commande sous un Linux connecté en réseau filaire au routeur et le wan du routeur connecté au réseau local (Box).
Idéalement les maips suivantes se font dans /tmp/
wget https://github.com/acecilia/OpenWRTInvasion/blob/master/remote_command_execution_vulnerability.py
wget https://github.com/acecilia/OpenWRTInvasion/blob/master/requirements.txt
pip3 install -r requirements.txt
python3 remote_command_execution_vulnerability.py
on met l’ip du routeur (192.168.31.1)
le numéro stok
Pour ça, se rendre sur http ://192.168.31.1 avec vôtre navigateur favori.
et copier ce qui est après stoc=……… sans le /
On se connecte en telnet sur le routeur
telnet 192.168.31.1
user=root
pass=none ou root
cd /tmp/
Facultatif, se rendre sur les liens suivants.
https://github.com/ioiotor/mir4-ss/releases
Télécharger les .bin
On a besoin de ces 2 .bin dans /tmp/ . Vous pouvez utiliser wget pour les récupérer.
En ligne de commande
Etape 2 – on flash le nouveau firmware et on applique les modifications.
wget https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin
wget https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin
mtd write openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin
mtd write openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.bin
nvram set uart_en=1
nvram set bootdelay=5
nvram set flag_try_sys1_failed=1
nvram commit
reboot
On attend, ça peut prendre quelques minutes.
Et voilà, votre routeur est maintenant sous OpenWrt.
Conclusion
Merci Benoît pour cet article qui permettra aux possesseurs de routeurs Xiaomi Mi 4 de les passer sous OpenWrt. N’hésitez pas à indiquer dans les commentaires ci-dessous les résultats que vous obtenez ou les difficultés que vous avez pu rencontrer.
Merci pour ce tuto.
Je m’étais pris le 3G v1 (30€) lors des black fridays il y a 2 ans pour m’initier au hacking. Par contre je l’ai fait directement en UART.
Donc s’il a bien aussi une prise uart, ces petites bestioles sont imbrickable. Sous U-boot (leur “bios”),
on peut dialoguer en ssh, telnet, ssh, tftp ; donc on a le choix.
Bonjour
eh non là c’est uniquement accessible en WiFi via l’appli ou alors par l’@ IP
bonne année à toi et tes proches, et plein de nouveaux projets
cdt
françois
Merci François et à toi aussi.
Je viens de voir les photos et il a bien l’UART donc la manip devrait être faisable. Et si uboot comprend aussi le TFTP, on peut se créer un serveur TFTP (avec MobaXterm) et injecté directement les firmwares dedans. J’avais débrické le mien comme ça.
J’ai reçu un mail de Benoît, je retranscris notre conversation en-dessous
Mail reçu de Benoît (ce n’est pas confidentiel donc je me permets ;))
Salut,
Bonne année.
As tu un tuto pour les routeurs xiaomi et l’uart ttl ?
Sur le R4 il y a aussi moyen de rentrer en ttl, et même si pas besoin car pas encore brické ca peut servir.
PS la manip est la même pour beaucoup de routeurs de la marque, faut juste avoir les bons .bin
Sur A4 ca marche, sur le tien aussi.
Pour l’histoire, j’avais commandé un 3g v1 à 28€ sur ali et j’ai recu un R4 (remboursé en partie, il m’est revenu à 12€) donc ca va mais pas d’usb et 2 fois de ram. Ca fait le taff quand même..
Salutations
Ben
Bonne année à toi aussi.
J’avais suivi celui-là : https://dzone.com/articles/hacking-into-xiaomi-mi-router-3g-and-openwrt-firmw
J’y ai 2 choses à lui reprocher : il ne précise pas que la logique TTL Arduino est à 5V et celui du Mi à 3.3V. En final, ça l’a fait, toute une après-midi. Et il faut spammer la touche “enter” au boot pour voir le choix du démarrage sinon, ben ça boot.
La page d’openwrt est sympa aussi : https://openwrt.org/toh/xiaomi/mir3g
Il est vrai que le 3G v1 pour 30€ est vraiment un must-have. Ils ont dû s’en rendre compte et on sortit la v2 complètement bridé.
J’avais fait toutes les manips sous Windows et Mobaxterm : ssh, serial, serveur tftp. Je l’avais brické et je m’en étais sorti en tftp.
Pour 30€ je m’étais bien formé sur des protocoles / matos que je ne connaissais pas. La preuve, 2 ans plus tard je m’en souviens encore.
Bonne journée
Pour info, il est possible d’exécuter le script python à partir de WSL si vous n’avez pas Linux sous la main.
Il est aussi préférable de monter un port série avec un dongle ch340g par exemple en 3,3V pour mieux voir ce qui se passe pendant l’installation.
Sinon les performances sont bonnes en wifi, j’ai entre 200 et 450MBPS avec iperf3 en mode bridge.
Pour le prix, c’est un bon choix de borne wifi pour celui qui ne veut pas trop dépenser et avoir des performances.
Une borne UniFi à 100€ ne fait pas mieux, il faut juste mettre la main à la pâte.
Je conseille également mobaxterm pour le telnet et port série.