Publié le 1 janvier 2021 - par

Passer le routeur Xiaomi mi R4 sous OpenWrt

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.

Passer le routeur Xiaomi Mi R4 sous OpenWrt

Cliquez pour des informations sur le niveau

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

https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-kernel1.bin

https://github.com/ioiotor/mir4-ss/releases/download/V19.07.4/openwrt-ramips-mt7621-xiaomi_mir4-squashfs-rootfs0.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.

http://192.168.1.1

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.

Sources

Share Button

6 réflexions au sujet de « Passer le routeur Xiaomi mi R4 sous OpenWrt »

  1. dyox

    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.

    Répondre
      1. dyox

        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

        Répondre
  2. dyox

    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

    Répondre
    1. dyox

      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

      Répondre
  3. Seb

    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.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.