Passer un routeur Xiaomi 4A (100m) sous OpenWRT
9 février 2022Aujourd’hui, je vous propose de passer un routeur Xiaomi 4A (100m) sous Openwrt pour monter des expériences qui nécessite un réseau wifi indépendant.
J’ai choisi ce routeur car il est de bonne facture, pas cher et avec une bonne communauté OpenWRT derrière.
Pour cette partie, j’utilise un ordinateur sous windows
Partie 0: Logiciels nécessaires
- Télécharger l’outil MIWFIRepairTool
bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip
2.Télechargez le firmware qui permet d’utilisé l’exploit
https://bigota.miwifi.com/xiaoqiang/rom/r4ac/miwifi_r4ac_all_c4b35_2.18.28.bin
3. Télécharger le firmware OpenWRT
4. Une raspberry avec VNC
5. Le logiciel FTP filezila
6. 3 câbles Ethernet
Vous trouverez en fin d’article les fichiers archivés comme d’habitude
Partie 1: Mise en condition du routeur pour exploiter la faille permettant l’installation de OpenWRT
Le but de cette manipulation est de mettre une ancienne version du firmware qui permet d’aller l’exploit OpenWRTInvasion
Pour cela, dans un premier temps, il faut configurer le port Ethernet de votre PC en IP statique de la façon suivante:
Ensuite connectez un cable Ethernet entre votre PC et votre routeur.
Lancez le programme MIWFIRepairTool.
Choisissez le fichier miwifi_r4ac_all_c4b35_2.18.28.bin (1) et cliquez sur les ??? (2)
Maintenant, choisissez la connexion configurée précédement (1) et cliquez sur ??? (2)
Le programme maintenant attend de voir le routeur.
Tout en maintenant le bouton Reset, alimentez votre routeur. Relachez le bouton lorsque le voyant orange commence à clignoter (après 8 secondes environ) et attendez que le routeur flash l’ancien firmware.
Le routeur va clignoter en orange
Ne débranchez rien cela peut prendre 5 min facilement et attendez que la lumière passe au bleu clignotant
Une fois que la led est passée au bleu clignotant, débranchez et rebranchez le routeur.
Attendez que la lumière passe au bleu fixe.
Normalement vous devriez avoir le signal wifi Xiaomi … qui apparait
Bravo vous avez réussi la première étape. Vous pouvez maintenant débrancher votre cable Ethernet et remettre en IP dynamique le réseau de votre PC.
Partie 2: Configuration primaire et provisoire du routeur
Maintenant, j’ai utilisé les indications marqué dans ce lien et je vais les détailler pas à pas.
https://github.com/acecilia/OpenWRTInvasion
Pour cela, il faut brancher le routeur wifi sur votre box sur le port marqué internet (le bleu à droite à côté du bouton reset)
Sur mon PC, j’ai configuré mon routeur avec la méthode suivante:
Pour information et par facilité car je ne connais pas le chinois, le mot de passe que j’utilise est toujours le même et idéalement 13 caractères que je nommerai ici MotDPasseCool
1- Je me connecte au réseau Xiaomi vu précedement et cela me renvoie directement sur cette page web suivante
Il faut cliquer sur le bouton bleu
2 – Sur cette page, je rentre le mot de passe MotDPasseCool
et je clique sur le bouton
3 – Maintenant je mets aussi le mot de passe MotDPasseCool
et je clique sur le bouton
5 – vous arrivez maintenant sur cette page
J’ai cliqué sur le bouton
Qui m’a renvoyé sur une page de publicité xiaomi que j’ai fermé
Une fois la configuration faite normalement vous devriez être déconnecté et vous devrez vous remettre sur le réseau avec le mot de passe MotDPasseCool
Partie 3: Utilisation de l’exploit
Dans un premier temps, je connecte un cable Ethernet entre ma box et mon routeur wifi car nous aurons besoin d’une connection internet pour lancer l’exploit
Petite information: Personnellement, pour la suite des choses, j’ai utilisé en plus une raspberry pi avec un accès VNC ouvert car c’était plus facile de mon point de vue. Normalement, la méthode fonctionne avec un PC ou autre mais je n’ai pas testé.
J’ai donc branché ma raspberry pi sur un des connecteurs Ethernet de mon routeur Xiaomi et je l’ai mis en route.
Une fois cela fait, sur mon PC principal, je me reconnecte sur le réseau wifi de mon xiaomi et dans mon navigateur, je tape l’adresse 192.168.31.1
nous tombons sur la page suivante qui nous demande un mot de passe (ici c’est celui que l’on avait programmé MotDPasseCool)
Et l’on attéri sur la page suivante:
En cliquant sur cette icone
Nous tombons sur l’adresse IP de notre raspberry pi
Maintenant que nous avons l’adresse IP, dans VNC viewer, je renseigne celle-ci:
Puis Je renseigne mon login et mot de passe.
Sur le vnc de ma raspberry pi, j’ouvre un terminal:
et je tape les commandes suivantes:
sudo git clone https://github.com/acecilia/OpenWRTInvasion.git
cd OpenWRTInvasion/
Puis lancez l’installation des requirements avec la commande suivante
pip3 install -r requirements.txt # Install requirements
Pour la suite, le prochain script va peut-être vous demander un token et pour le trouver, il faut ouvrir un page web (toujours sur votre raspberry) avec l’adresse 192.168.31.1. (Je dis bien peut-être car au dernière nouvelle seul l’adresse et le mot de passe (MotDpasseCool) sont nécessaire)
Renseignez le mot de passe et récupérez le code (ici a61….50)
Maintenant que vous avez ce token, vous pouvez lancer la commande suivante:
python3 remote_command_execution_vulnerability.py # Run the script
Renseignez l’adresse 192.168.31.1 lorsque le script vous le demande
Puis renseignez le mot de passe admin de votre xiaomi (MotDPasseCool)
Choisissez 1 et tapez sur Entrée
Attendez quelques instants
Et voilà l’exploit est en place. On va pouvoir passer au flashage du firmware OpenWRT
Partie 4: Flashage du firmware OpenWRT
Ouvrez maintenant le logiciel filezila adresse Ip 192.168.31.1 identifiant root mdp root port 21
Puis une fois la connection faite, dans le dossier tmp, glissez et deposez le fichier “openwrt-21.02.1-ramips-mt76x8-xiaomi_mi-router-4a-100m-squashfs-sysupgrade.bin”
Maintenant dans sur le terminal du VNC de la raspberry tapez la commande telnet 192.168.31.1
Rentrez le login/motdepasse : root/root
Vous devriez avoir l’affichage suivant
tapez les commandes:
cd /tmp
mtd -r write openwrt-21.02.1-ramips-mt76x8-xiaomi_mi-router-4a-100m-squashfs-sysupgrade.bin OS1
Attendez que le firmware finisse d’être flashé puis le routeur va rebooter
Attendez environ 5 minutes puis couper l’alimentation et débranchez tous les câbles.
Vous n’avez plus besoin de la raspberry pi, vous pouvez la remercier car elle a bien travaillée.
Maintenant, relancez le routeur et il va d’abord clignoter en orange puis passer en bleu.
Connectez un cable RJ45 (Ethernet) entre une sortie Ethernet du routeur et votre PC principal.
Puis dans votre navigateur, tapez l’adresse 192.168.1.1
Vous allez arriver sur la page luci de OpenWRT
Vous devriez avoir une page de ce style qui apparait
Et voilà vous êtes maintenant l’heureux propriétaire d’un routeur Xiaomi sous OpenWRT!!!!! Mais pensez à mettre un nouveau mot de passe!
Partie 5: Bonus mettre en route le wifi
Par defaut, le wifi est déconnecté sur OpenWRT et un routeur wifi sans wifi c’est moins rigolo.
Pour l’activer, cliquez sur Network > Wireless
Puis faite un Edit du premier SSID:OpenWrt et renseignez les informations utiles
Ici, j’illustre juste pour des options de base car je ne suis pas expert en informatique.
Dans l’onglet General Setup qui se situe en bas, mettez le ESSID que vous voulez
Dans l’onglet Wireless Security, choissiez votre mode d’Encyption et votre mot de passe qui vous convient et cliquez sur Save
Cliquez maintenant sur Enable
OpenWrt va prendre en compte les valeurs et les appliquer
Une fois cela appliqué, faite la même chose avec le 2ème sous réseau AC (pour ma part, je rajoute 5G derrière afin de les différencier et cliquez sur Save et Enable
Au final, vous devriez avoir cela qui indique que tout est ok.
Maintenant, si vous regardez vos réseaux wifi accessibles depuis votre pc…..
Voilà donc un routeur OpenWRT avec wifi qui fonctionne!
Vous pouvez maintenant rebrancher le cable internet depuis votre box sur votre routeur xiaomi OpenWRT (le port bleu) et profitez de votre réseau tout neuf pour faire de l’IOT en toute sécurité
Comme promis, ci-dessous les fichiers sources
Les programmes
Une copie du Git au cas où
Comme d’habitude, voici les sources qui m’ont aidées.
https://openwrt.org/toh/xiaomi/mi_router_4a_mir4a_100m
Voilà c’est tout pour cette fois!
J’espère que cela vous aura aider,
Jérôme Ferrari