Installation de OpenWrt sur TP-Link TD-W9980

Voici une procédure pour installer OpenWrt sur le modem-routeur TP-Link TD-W9980 en passant par l'interface d'administration http de base.

La technique va simplement consister à créer une fausse sauvegarde de configuration qui sera chiffrée et signée afin d'être acceptée lors de l'envoi via le formulaire de restauration.

Lors du chargement complet de la sauvegarde, celle-ci va exécuter la commande telnetd -p 1023 -l login et à partir de ce moment, il sera possible de prendre la main en telnet afin d'écrire OpenWrt directement sur les partitions.

Ce hack n'a pas été développé par mes soins mais par ejs du forum Kitz Forum.

Cette procédure est tirée de celle que vous pourrez aussi trouver sur le wiki officiel OpenWrt.

Attention cependant, dans ce guide, le modem-routeur était sous la version du firmware d'origine TD-W9980_V1_150507, cela ne fonctionne apparemment pas avec les versions supérieures et il n'est malheureusement pas possible de downgrade d'après la note de version du firmware TD-W9980_V1_160125.

  1. Pré-requis
  2. Préparation de la clé USB
  3. Création du fichier de configuration permettant l'accès telnet
  4. Redémarrage du routeur en telnetd
  5. Backup du routeur
  6. Installation du firmware
  7. Mise à jour du firmware
  8. Références et remerciements

1. Pré-requis

Par sécurité, je préfère conserver des mirrors, la version trunk du firmware sera donc moins récente que la source, il faut éviter au maximum le téléchargement via les liens mirrors.

2. Préparation de la clé USB

  • Copiez openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image sur la clé USB

À partir de ce fichier nous allons créer openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image (notez bien le -1) :

[user@local openwrt]$ dd if=openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image of=openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image bs=1310720 skip=1

Votre clé USB comporte désormais au moins les 2 fichiers suivants qui seront nécessaires pour la suite :

openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image
openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image

3. Création du fichier de configuration permettant l'accès telnet

Lancez StatPOSTer-20160306.jar :

[user@local openwrt]$ java -jar StatPOSTer-20160306.jar
  • Renseignez le User name et le Password de l'interface d'administration
  • Sélectionnez TD-W9980 en bas de la fenêtre
  • Cliquez sur Encrypt
  • Sélectionnez le fichier 9980-config-public-plus-shell.xml puis enregistrez 9980-config-public-plus-shell.bin

Vous devriez voir apparaître dans la fenêtre :

2016.12.28 19:20:08 config encrypt: wrote /home/xxx/9980-config-public-plus-shell.bin
16 byte MD5 checksum 337A04E419E686D8753250BDE67360E6
27703 bytes of data
1 bytes zero padding

4. Redémarrage du routeur en telnetd

  • Connectez-vous au routeur via l'interface d'administration http
  • Naviguez dans System Tools -> Backup & Restore -> Browse
  • Sélectionnez 9980-config-public-plus-shell.bin puis appuyez sur Restore

A ce moment, le modem-routeur va redémarrer puis vous pourrez vous connecter en telnet avec l'identifiant admin/1234 :

[user@local openwrt]$ telnet 192.168.1.1 1023

5. Backup du routeur

A ce stade, vous êtes connecté en telnet au routeur.

  • Branchez la clé USB au modem-routeur

Sauvegardez les partitions /dev/mtd0 à /dev/mtd6 sur la clé USB :

cat /dev/mtd0 > /var/usbdisk/sda1/mtd0
cat /dev/mtd1 > /var/usbdisk/sda1/mtd1
cat /dev/mtd2 > /var/usbdisk/sda1/mtd2
cat /dev/mtd3 > /var/usbdisk/sda1/mtd3
cat /dev/mtd4 > /var/usbdisk/sda1/mtd4
cat /dev/mtd5 > /var/usbdisk/sda1/mtd5
cat /dev/mtd6 > /var/usbdisk/sda1/mtd6

La taille de la partition mtd1 sur la clé USB doit être de 1310720 bytes

ls -la /var/usbdisk/sda1/mtd1

6. Installation du firmware

La clé est toujours branchée et contient les 2 fichiers déposés plus tôt.

Il est normal de voir apparaître no such space left on device lors de l'exécution de la première commande :

cat /var/usbdisk/sda1/openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image > /dev/mtdblock1
cat /var/usbdisk/sda1/openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image > /dev/mtdblock2

Le routeur est désormais sous OpenWrt, vous pouvez redémarrer :

reboot

7. Mise à jour du firmware

Envoi du firmware depuis le PC vers le modem-routeur :

[user@local openwrt]$ scp openwrt-lantiq-xrx200-TDW8980-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/

Connexion en SSH au modem-routeur puis installation sans conserver les paramétrages initiaux (plus propre et évite les reliquats) :

[root@serveur ~]$ ssh root@192.168.1.1
[root@serveur ~]$ sysupgrade -n -v /tmp/openwrt-lantiq-xrx200-TDW8980-squashfs-sysupgrade.bin

Le modem-routeur reboot et vous voilà avec OpenWrt en configuration factory, il ne reste vous reste plus qu'à attaquer la configuration via SSH.

8. Références et remerciements