routeur4g.fr est financé par ses lecteurs. Quand vous achetez en passant par les liens du site, nous pouvons toucher une commission d’affiliation.
[TUTO] Modification d'un firmware FW
oga83
Membre Messages: 1121
Le but de ce tutoriel est de montrer le principe pour extraire les fichiers d'un firmware, les modifier ou en ajouter.
Attention : Il est réservé à des utilisateurs qui maîtrisent parfaitement les techniques employées.
1- Objectifs
Nous allons partir du firmware original d'un routeur B715s-23c pour le modifier de la manière suivante :
- allongement de la durée de session de l'interface Web (5 minutes, c'est vraiment trop court !)
- modification du logo de l'interface Web
- ajout d'un serveur telnet
Ces modifications sont assez simples, mais elles donnent les bases pour allez plus loin
Le firmware de départ est le B715-23c_UPDATE_11.197.01.00.965.bin (d'origine) mais le principe serait le même pour un autre modèle et/ou une autre version.
En théorie, qhuaweiflash permet d'ajouter, modifier et supprimer des fichiers dans le firmware, mais je n'ai pas réussi à faire fonctionner correctement la fonction d'ajout (les fichiers sont uniquement ajoutés dans la racine). D'autre part, il est plus facile d'avoir l'arborescence complète sur son disque : on peut facilement faire des recherches, décompresser des fichiers, ...
Ces outils ont été développés par Forth32 (merci à lui !) et je les ai traduits à partir du Russe. La version originale en Russe se trouve ici. La version traduite ici.
Note importante : qhuaweiflash ne fonctionne que sur Linux.
Pour compiler balong_usbdload :
Pour compiler balongflash :
Pour compiler qhuaweiflash
Et on obtient un fichier par section :
Les 2 sections qui nous intéressent sont System et WEBUI. Il s'agit d'archives 'cpio'.
On peut extraire le système de fichiers qu'elles contiennent dans un répertoire avec la commande 'cpio' :
et on obtient le contenu de cette section :
On procède de la même manière avec la section WEBUI :
Il suffit modifier la valeur. Je la passe à 1440 minutes (1 jour), en remplacement des 5 minutes d'origine :
Busybox est un programme qui regroupe tout un ensemble d'utilitaires linux. On l'appelle le couteau Suisse du Linux embarqué.
Nous allons ajouter au routeur une version plus récente de Busybox.
Les binaires, compilés (avec librairies statiques), peuvent être téléchargés ici.
Pour le B715, la version ARMv7-1.21 fera l'affaire. On va la télécharger dans System/bin :
Pour que le serveur telnet fonctionne, il faut créer au moins 1 utilisateur.
On va donc créer le fichier System/etc/passwd (qui n'existe pas dans le firmware d'origine) avec la ligne suivante :
Et pour terminer, il faut lancer le serveur telnet au démarrage (en utilisant le Busybox qu'on vient de télécharger).
Pour cela, on va ajouter une ligne à la fin du fichier System/etc/autorun.sh :
Générer les archives cpio :
Pour réinjecter ces sections modifiées dans le firmware, on lance qhuaweiflash, et on ouvre le firmware d'origine :
Et pour chacune des 2 sections System et WEBUI, on utilise le menu "Section/Remplacer", en sélectionnant les fichiers crées juste avant (10-00590000-System-mod.bin et 12-005b0000-WEBUI-mod.bin) :
Une fois que c'est fait, il suffit d'enregistrer (menu "Fichier/Enregistrer sous"), et vous obtenez un .BIN qui contient vos modifications
Il ne reste plus qu'à le flasher !
Une fois que c'est fait, on peut accéder au routeur avec telnet
Cela permet d'ajouter des fonctionnalités à son routeur 4G
Attention : Il est réservé à des utilisateurs qui maîtrisent parfaitement les techniques employées.
Ne vous lancez pas dans ce genre de manipulations si ce n'est pas le cas.
1- Objectifs
Nous allons partir du firmware original d'un routeur B715s-23c pour le modifier de la manière suivante :- allongement de la durée de session de l'interface Web (5 minutes, c'est vraiment trop court !)
- modification du logo de l'interface Web
- ajout d'un serveur telnet
Ces modifications sont assez simples, mais elles donnent les bases pour allez plus loin
Le firmware de départ est le B715-23c_UPDATE_11.197.01.00.965.bin (d'origine) mais le principe serait le même pour un autre modèle et/ou une autre version.
2- Outils utilisés
- balong_usbdload, pour installer un loader dans le routeur qui va permettre de flasher un firmware par USB;
- balongflash, pour extraire les sections du firmware (cela peut également être fait avec qhuaweiflash, mais je trouve cela moins pratique); Egalement utilisé pour flasher le firmware final;
- qhuaweiflash, pour remplacer les sections du firmware et générer le fichier .BIN final.En théorie, qhuaweiflash permet d'ajouter, modifier et supprimer des fichiers dans le firmware, mais je n'ai pas réussi à faire fonctionner correctement la fonction d'ajout (les fichiers sont uniquement ajoutés dans la racine). D'autre part, il est plus facile d'avoir l'arborescence complète sur son disque : on peut facilement faire des recherches, décompresser des fichiers, ...
Ces outils ont été développés par Forth32 (merci à lui !) et je les ai traduits à partir du Russe. La version originale en Russe se trouve ici. La version traduite ici.
Note importante : qhuaweiflash ne fonctionne que sur Linux.
Pour compiler balong_usbdload :
<code>balong-usbdload<br>
makegit clone https://github.com/Oga83/balong-usbdload<br>cd
Pour compiler balongflash :
<code>balongflash<br>
makegit clone https://github.com/Oga83/balongflash<br>cd
Pour compiler qhuaweiflash
<code>qhuaweiflash<br>
qmake
makehttps://github.com/Oga83/qhuaweiflash<br>cd
3- Extraction des sections
Une fois que nous avons le firmware original et les outils, on met le tout dans le répertoire de son choix (/tmp/huawei pour la suite de ce tuto) :
Pour extraire les sections du firmware, on utilise la commande suivante :
balong_flash -e B715-23c_UPDATE_11.197.01.00.965.bin
Et on obtient un fichier par section :
Les 2 sections qui nous intéressent sont System et WEBUI. Il s'agit d'archives 'cpio'.
On peut extraire le système de fichiers qu'elles contiennent dans un répertoire avec la commande 'cpio' :
mkdir System<br>cd System<br>cpio -ivm -F ../10-00590000-System.bin<br>hm103.jpg
et on obtient le contenu de cette section :
On procède de la même manière avec la section WEBUI :
cd ..<br>mkdir WEBUI<br>cd WEBUI<br>cpio -ivm -F ../12-005b0000-WEBUI.bin
4- Modifications
4a- Modification de la durée de session
Le timeout de session est défini dans le fichier WEBUI/WebApp/common/config/webserver/timeout.xmlIl suffit modifier la valeur. Je la passe à 1440 minutes (1 jour), en remplacement des 5 minutes d'origine :
nano WEBUI/WebApp/common/config/webserver/timeout.xml
4b- Modification du logo
Il suffit de modifier le fichier WEBUI/WebApp/common/res/euap-icon2.pngpinta WEBUI/WebApp/common/res/euap-icon2.png
4c- Ajout du serveur telnet
Le routeur est basé sur une distribution Linux qui utilise une vieille version de Busybox qui, de plus, est limitée (pas de serveur telnet).Busybox est un programme qui regroupe tout un ensemble d'utilitaires linux. On l'appelle le couteau Suisse du Linux embarqué.
Nous allons ajouter au routeur une version plus récente de Busybox.
Les binaires, compilés (avec librairies statiques), peuvent être téléchargés ici.
Pour le B715, la version ARMv7-1.21 fera l'affaire. On va la télécharger dans System/bin :
cd System/bin<br>wget <code>https://busybox.net/downloads/binaries/1.21.1/busybox-armv7l
Pour que le serveur telnet fonctionne, il faut créer au moins 1 utilisateur.
On va donc créer le fichier System/etc/passwd (qui n'existe pas dans le firmware d'origine) avec la ligne suivante :
root::0:0:root:/tmp:/bin/shSoit vous le faites avec votre éditeur préféré, soit avec la commande suivante :
printf "root::0:0:root:/tmp:/bin/sh\n" > System/etc/passwd
Et pour terminer, il faut lancer le serveur telnet au démarrage (en utilisant le Busybox qu'on vient de télécharger).
Pour cela, on va ajouter une ligne à la fin du fichier System/etc/autorun.sh :
busybox-armv7l telnetd -l /bin/shEncore une fois, soit vous le faites avec votre éditeur préféré, soit avec la commande suivante :
printf "\nbusybox-armv7l telnetd -l /bin/sh\n" >>System/etc/autorun.sh
(notez bien qu'on utilise ">>" pour ajouter la ligne à la fin du fichier)
Voilà, nos modifications sont terminées !
Il faut maintenant les injecter dans le firmware.
5- Génération du firmware modifié
On procède à l'envers de l'extraction de fichiers.Générer les archives cpio :
cd System<br>find . -print | cpio -ov -H newc -F ../10-00590000-System-mod.bin <br>cd ../WEBUI<br><div>find . -print | cpio -ov -H newc -F ../12-005b0000-WEBUI-mod.bin </div>
Pour réinjecter ces sections modifiées dans le firmware, on lance qhuaweiflash, et on ouvre le firmware d'origine :
Et pour chacune des 2 sections System et WEBUI, on utilise le menu "Section/Remplacer", en sélectionnant les fichiers crées juste avant (10-00590000-System-mod.bin et 12-005b0000-WEBUI-mod.bin) :
Une fois que c'est fait, il suffit d'enregistrer (menu "Fichier/Enregistrer sous"), et vous obtenez un .BIN qui contient vos modifications
Il ne reste plus qu'à le flasher !
Pour cela, on utilise balong_usbdload et balong_flash, mais c'est pour un autre tuto !
telnet 192.168.0.1
Message edité par ludovick on
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est indiqué au début, mais a répéter : ne pas s'y aventurer si vous ne maîtrisez pas les concepts et les environnements linux.
ce qu'il me plairait de modifier, ce serait par rapport au firmware d'origine, de retrouver l'agrégation (B1, B3, B7) par exemple, ce que je n'ai plus maintenant,
et en information système, je n'ai plus la bande utilisée,
mais ce n'est peut être pas évident,
mais bravo
Ça permettrai de n'avoir que le routeur et de recuperer les stats via son pc pour analyse si necessaire
Un firmware B715s signé Oga83 😎😉
celle ci c'est le CID en HEX
Incluant Huawei Monitor, Jeedom pour la domotique et Nagios pour surveiller son lan.
Bon, juste HM serait déjà énorme 😁
1- Premier programme
2- Utilisation des librairies dynamiques du routeur
3- Affichage CellId, RSSI, ...
4- Et après ?
ça parait si simple quand on maitrise comme toi
Merci pour tes explications.
pour compiler
ça ne marche que sous linux ?? c'est cela
on trouve 2 .exe en :
firmware\balongflash-master\release\balong_flash.exe
et
firmware\balong-usbdload-master\winbuild\Release\balong_usbdload.exe
mais rien pour \firmware\qhuaweiflash-master, pas d'.exe
à quoi servent ces 2 exe balong_flash et balong_usbload
Ce n'est pas du tout juste utiliser les outils de flashage ici.
j'ai installé la version B715-23c_UPDATE_11.197.01.00.965-oga83 , ça marche nikel
ce qui est bien, on retrouve bien ses réglages aprés flashage,
qu'est-ce que donne de lancer le serveur telnet ? en ais-je l'utilité,
bonne soirée, a+
ps : est-ce mieux ce 965 qui est en 11.197 ou de mettre le 11.196.01.00.1217 ?
good job !