lakpa.net

journal de bord

Essais préliminaires à OpenWrt
28 juillet 2015

Je voudrais essayer d'installer OpenWrt sur une ancienne livebox.

Pour commencer, il faut « downgrader » le firmware existant, ce qui permettra d'exploiter une faille dans le serveur web et ainsi supprimer le mot de passe du compte « root » et ensuite se connecter, par liaison série ou telnet, à la livebox.

Pour installer un firmware sur la livebox, il suffit d'utiliser le logiciel RGWRepair.exe fournit sur le CD...
Mais il ne fonctionne pas avec Wine !
Alors il faut passer par un serveur TFTP qui servira le firmware en question.

Les manips suivantes ont été effectuées sous Debian 8 Jessie (à adapter en fonction des distributions).

Mettre à jour la livebox 1 depuis un poste UNIX

Installer un serveur tftp

# apt-get install atftpd

(À essayer avec tftpd)

Changer la config pour le lancer à la main d'où on veut. Dans /etc/inetd.conf, commenter la ligne :

tftp        dgram   udp4    wait    nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp

et relancer inetd :

# service openbsd-inetd restart

Le serveur atftpd est arreté.

Placer le firmware dans un dossier (~/livebox) avec l'arborescence suivante :

cd ~/livebox
ls -l inventel/blue_5g/
factory_script_crypt -> firmware.dwb

Fixer l'adresse IP du PC à 10.7.58.114 dans /etc/network/interfaces :

auto eth1
iface eth1 inet static
address 10.7.58.114
netmask 255.255.255.0
broadcast 10.7.58.255
network 10.7.58.0

Relancer la config de l'interface :

# ifconfig eth1 10.7.58.114 netmask 255.255.255.0

Et démarrer le serveur tftp (depuis le dossier ~/livebox) :

# atftpd --daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --verbose=5 --logfile - $PWD

Débrancher la livebox et la rebrancher en maintenant le bouton 1 appuyé, jusqu'à ce que les 3 diodes « @ », « >> » et « tél » soit allumées. Laisser la livebox démarrer (attendre que la diode « warning»  ne clignote plus) et se connecter à l'interface web (192.168.1.1 en ayant reparamétré le PC pour être dans le bon sous-réseau). On peut voir si le changement a été pris en compte.

N.B. Chez moi, ce n'est pas le port jaune, mais le rouge qui fonctionne en maître. En revanche, il faut bien un câble ethernet croisé.

Utiliser la faille dans le firmware

Maintenant que l'on a un microcode < 5.04, on peut utiliser une faille dans le serveur qui permet d'envoyer des commandes à la livebox.
On se connecte à l'interface web du routeur avec l'adresse 192.168.1.1 et on change son adresse IP dans Configuration> Avancée > Réseau :

Activer DHCP    Faux
Adresse IP  10.0.0.1
Broadcast   10.0.0.255
Masque de sous-réseau   255.255.255.0
Adresse de départ pour DHCP 10.0.0.5
Adresse de fin pour DHCP    10.0.0.10

Appliquer la configuration et laisser le routeur redémarrer.
On va configurer la machine de développement avec une adresse IP fixe, dans le sous-réseau de la passerelle. Dans /etc/network/interfaces :

auto eth1
iface eth1 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1

On se connecte à nouveau à l'interface web du routeur (10.0.0.1 maintenant). Dans Configuration > Avancée > Wifi, remplacer le nom de la livebox (LIVEBOX-xxxx) par les commandes à lui faire exécuter. Attention, il n'y a que 32 caractères disponibles !

Pour écrire une ligne sans mot de passe dans le fichier /etc/passwd, il faut d'abord créer un fichier temporaire (32 caractères max on a dit) :

;echo root::0:0:::/bin/sh>/tmp/x

En appliquant la modification, la livebox redémarre. Ensuite, on copie ce fichier à la place du fichier /etc/passwd :

;cp /tmp/x /etc/passwd

À partir de ce moment là, il n'y a plus de mot de passe pour le compte root. On peut donc se connecter par liaison série (on verra ça une autre fois), ou envoyer un serveur telnet pour se connecter avec telnet.
Le plus simple est d'utiliser une archive comme celle-ci. Elle contient le serveur utelnetd, compilé pour fonctionner sur ce genre de routeur, ainsi que les scripts init qui permettront au serveur de démarrer au démarrage de la livebox. Cela permet aussi de s'affranchir du réglages des droits d'exécution.

Pour ne pas avoir besoin d'installer un serveur ftp ou http, j'ai utilisé woof (apt-get install woof).

Sur la machine de développement :

cp etc.tar u
woof u

Sur l'interface du routeur, toujours dans le champ Nom :

;cd /etc;wget 192.168.1.2:8080/u

Si 192.168.1.2 est l'adresse de la machine de développement et 8080 le port utilisé par woof (par défaut).
Vous devriez voir woof s'arrêter une fois qu'il a servi son fichier.

Ensuite, on décompresse l'archive en entrant, dans le champ Nom, la commande suivante :

;cd /etc; tar xf u

Après ce Nième redémarrage de la passerelle, on peut se connecter avec telnet à la livebox :

telnet 10.0.0.1

Wow !

Une dernière petite chose maintenant, il faut empêcher la livebox de se mettre à jour sur les serveurs inventel. Pour cela, il faut éditer les deux fichiers /etc/firm.conf et /etc/autoconf.conf.

vi /etc/firm.conf

Remplacer

CONFIG_DEFAULT_UPDATE_MACHINE="developers.inventel.com"

par quelque chose comme

CONFIG_DEFAULT_UPDATE_MACHINE="10.0.0.200"

Pour ceux, comme moi, qui n'utilisent jamais vi (et il n'y a pas nano dans la livebox !) une fois que le fichier est ouvert dans vi, il faut se déplacer avec les flèches, appuyer sur i (--Insert-- s'affiche en bas), taper le texte que l'on veut, puis Esc et enfin :wq. : sert à entre un commande (s'affiche en bas de l'écran), wq pour enregistrer (write) et quitter (quit). :quit! ferme sans enregistrer.

Pour autoconf.conf, c'est un lien vers le système de fichiers en lecture seule

ls -l /etc/autoconf.conf
autoconf.conf -> /etc_ro_fs/autoconf.conf

Donc on triche en le copiant puis en écrasant le lien symbolique par le fichier à modifier :

cp autconf.conf autoconf.conf.bak
rm autoconf.conf
cp autoconf.conf.bak autoconf.conf
vi autoconf.conf

Trouver la même ligne CONFIG_DEFAULT_UPDATE_MACHINE et la modifier de la même façon.

Cela devrait empêcher les mises à jour automatiques lors de la connexion à la ligne téléphonique.

À suivre ...

Réferences :

Mots-clefs : debian, livebox

Généré par Chronicle v4.6