Je continue avec les articles sur les firmwares des NAS LG N1T1. Je vais vous montrer comment extraire complètement le firmware et comment refaire le .bin.
Attention : avant tout manipulation, pensez à faire des sauvegardes de vos documents. Et n’oubliez pas qu’il y’a un risque de briquer votre NAS.
Toutes les lignes commençant par un $ sont des commandes shell.
Pré-requis :
- gpg
- l’archive du firmware vers. 9595
Extraction et déchiffrement du Firmware
On commence par extraire le .zip du firmware qu’on a récupéré sur le site de LG.
$ unzip firmware-nt1_9595rfke.zip |
Une fois le .zip extrait, vous aurez un fichier .bin que l’on peut extraire avec la commande tar.
$ file firmware-nt1_9595rfke.bin firmware-nt1_9595rfke.bin: POSIX tar archive (GNU) # On crée un répertoire firmware $ mkdir firmware # On extrait dans le répertoire firmware le contenu de l'archive firmware-nt1_9595rfke.bin $ tar xpvf firmware-nt1_9595rfke.bin -C firmware x ./ x ./preinst.sh x ./INCLUDE x ./MODEL x ./VERSION x ./TYPE x ./firmware.tar.gz x ./postinst.sh x ./SIZE x ./ENCRYPTION x ./MD5SUM x ./PVERSION |
Ensuite, nous allons dans le répertoire firmware, dedans vous trouverez plusieurs fichiers dont un qui s’appelle firmware.tar.gz. C’est celui qui nous intéresse car il contient le filesystem.
$ cd firmware $ file firmware.tar.gz firmware.tar.gz: DOS executable (COM) |
Si nous tentons d’extraire le fichier firmware.tar.gz, nous obtenons une erreur. C’est parce que l’archive est chiffrée.
$ tar xpzf firmware.tar.gz tar: Unrecognized archive format tar: Error exit delayed from previous errors. |
Voici la commande qui va nous permettre de déchiffrer l’archive. La passphrase est composée du contenu du fichier MD5SUM, d’un ‘.’ et du contenu du fichier MODEL.
$ gpg --passphrase=91cae1798718567e1f9abfd280eb7332.nt1 --output=firmwarenew.tgz -d firmware.tar.gz |
Si vous comparez les valeurs md5 de la nouvelle archive firmwarenew.tgz et celle contenu dans le fichier MD5SUM, vous verrez qu’elles sont identiques.
$ md5 firmwarenew.tgz MD5 (firmwarenew.tgz) = 91cae1798718567e1f9abfd280eb7332 $ cat MD5SUM 91cae1798718567e1f9abfd280eb7332 |
On peut voir que notre fichier firmwarenew.tgz est bien une archive tar.gz.
$ file firmwarenew.tgz firmwarenew.tgz: gzip compressed data, from Unix, last modified: Thu Nov 17 11:06:17 2011 |
Nous allons créer un répertoire firmware_tree, nous allons mettre dans celui-ci le contenu de l’archive firmwarenew.tgz.
# On crée notre répertoire firmware_tree $ mkdir firmware_tree # On extrait l'archive firmwarenew.tgz dans le répertoire firmware_tree $ tar xpzf firmwarenew.tgz -C firmware_tree/ |
Allons dans notre répertoire firmware_tree et regardons ce qu’il contient.
$ cd firmware_tree/ $ ll total 8 drwxr-xr-x 144 Alexis staff 4,8K 17 nov 2011 bin drwxr-xr-x 5 Alexis staff 170B 17 nov 2011 boot drwxr-xr-x 12 Alexis staff 408B 19 mai 2011 dev drwxr-xr-x 171 Alexis staff 5,7K 17 nov 2011 etc drwxr-xr-x 2 Alexis staff 68B 14 déc 2010 home drwxr-xr-x 154 Alexis staff 5,1K 17 nov 2011 lib lrwxr-xr-x 1 Alexis staff 11B 19 mai 2011 linuxrc -> bin/busybox drwxr-xr-x 2 Alexis staff 68B 15 mar 2011 media drwxr-xr-x 4 Alexis staff 136B 17 nov 2011 mnt drwxr-xr-x 2 Alexis staff 68B 15 mar 2011 opt drwxr-xr-x 2 Alexis staff 68B 14 déc 2010 proc drwx------ 5 Alexis staff 170B 17 nov 2011 root drwxr-xr-x 167 Alexis staff 5,5K 17 nov 2011 sbin drwxr-xr-x 2 Alexis staff 68B 21 jul 2010 selinux drwxr-xr-x 3 Alexis staff 102B 19 mai 2011 srv drwxr-xr-x 2 Alexis staff 68B 1 jan 2011 sys drwxr-xr-x 35 Alexis staff 1,2K 17 nov 2011 tmp drwxr-xr-x 15 Alexis staff 510B 17 nov 2011 usr drwxr-xr-x 15 Alexis staff 510B 17 nov 2011 var |
Nous voyons l’arborescence du system de notre NAS LG N1T1. Maintenant nous allons voir comment recréer un fichier .bin à partir de cette arborescence.
Chiffrement et création du Firmware
Nous sommes toujours dans notre répertoire firmware_tree, nous supprimons les deux archives firmwarenew.tgz et firmware.tar.gz qui sont dans le répertoire parent.
$ rm ../firmwarenew.tgz ../firmware.tar.gz |
Maintenant nous allons recréer l’archive firmware.tar.gz à partir du contenu du dossier firmware_tree, nous sommes d’ailleurs toujours dans ce répertoire.
# On crée notre archive qui sera stockée dans le répertoire parent de firmware_tree tar cpzf ../firmware.tar.gz ./* # On retourne dans le répertoire parent cd .. # On supprime le dossier firmware_tree rm -rf firmware_tree/ |
Nous sommes maintenant dans le répertoire qui contient le fichier firmware.tar.gz, voici ce que vous devriez avoir comme fichier.
$ ll total 534448 -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 ENCRYPTION -rw-r--r-- 1 Alexis staff 1B 17 nov 2011 INCLUDE -rw-r--r-- 1 Alexis staff 33B 17 nov 2011 MD5SUM -rw-r--r-- 1 Alexis staff 4B 17 nov 2011 MODEL -rw-r--r-- 1 Alexis staff 5B 17 nov 2011 PVERSION -rw-r--r-- 1 Alexis staff 10B 17 nov 2011 SIZE -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 TYPE -rw-r--r-- 1 Alexis staff 6B 17 nov 2011 VERSION -rw-r--r-- 1 Alexis staff 261M 8 aoû 22:58 firmware.tar.gz -rwxr-xr-x@ 1 Alexis staff 1,1K 8 aoû 17:41 postinst.sh -rwxr-xr-x 1 Alexis staff 268B 17 nov 2011 preinst.sh |
Nous calculons la somme MD5 du fichier firmware.tar.gz puis nous allons l’enregistrer dans le fichier MD5SUM.
$ md5 firmware.tar.gz MD5 (firmware.tar.gz) = 25fd951b8b03af78a7c3ede0b1ada690 # On enregistre la somme MD5 dans le fichier MD5SUM $ md5 -q firmware.tar.gz > MD5SUM |
Nous allons chiffrer notre archive firmware.tar.gz en utilisant la nouvelle somme MD5, la passphrase est toujours composée du contenu du fichier MD5SUM, d’un ‘.’ et du contenu du fichier MODEL.
$ gpg --passphrase=25fd951b8b03af78a7c3ede0b1ada690.nt1 -c -r -e firmware.tar.gz gpg: AVERTISSEMENT: des destinataires (-r) ont été donnés alors que le chiffrement ne se fait pas par clé publique |
Voici ce que devriez avoir dans votre répertoire courant.
$ ll total 1066480 -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 ENCRYPTION -rw-r--r-- 1 Alexis staff 1B 17 nov 2011 INCLUDE -rw-r--r-- 1 Alexis staff 33B 9 aoû 09:59 MD5SUM -rw-r--r-- 1 Alexis staff 4B 17 nov 2011 MODEL -rw-r--r-- 1 Alexis staff 5B 17 nov 2011 PVERSION -rw-r--r-- 1 Alexis staff 10B 17 nov 2011 SIZE -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 TYPE -rw-r--r-- 1 Alexis staff 6B 17 nov 2011 VERSION -rw-r--r-- 1 Alexis staff 261M 9 aoû 09:56 firmware.tar.gz -rw-r--r-- 1 Alexis staff 260M 9 aoû 10:00 firmware.tar.gz.gpg -rwxr-xr-x 1 Alexis staff 705B 17 nov 2011 postinst.sh -rwxr-xr-x 1 Alexis staff 268B 17 nov 2011 preinst.sh |
Nous devons maintenant supprimer le fichier firmware.tar.gz et renommer le fichier firmware.tar.gz.gpg en firmware.tar.gz.
$ rm firmware.tar.gz $ mv firmware.tar.gz.gpg firmware.tar.gz |
Dans votre répertoire, vous devriez avoir les fichiers suivants.
$ ll total 532112 -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 ENCRYPTION -rw-r--r-- 1 Alexis staff 1B 17 nov 2011 INCLUDE -rw-r--r-- 1 Alexis staff 33B 9 aoû 09:59 MD5SUM -rw-r--r-- 1 Alexis staff 4B 17 nov 2011 MODEL -rw-r--r-- 1 Alexis staff 5B 17 nov 2011 PVERSION -rw-r--r-- 1 Alexis staff 10B 17 nov 2011 SIZE -rw-r--r-- 1 Alexis staff 9B 17 nov 2011 TYPE -rw-r--r-- 1 Alexis staff 6B 17 nov 2011 VERSION -rw-r--r-- 1 Alexis staff 260M 9 aoû 10:00 firmware.tar.gz -rwxr-xr-x 1 Alexis staff 705B 17 nov 2011 postinst.sh -rwxr-xr-x 1 Alexis staff 268B 17 nov 2011 preinst.sh |
Enfin, nous allons recréer un .bin que nous allons pouvoir envoyer sur notre NAS. Le fichier firmware.bin contient tous les fichiers de votre répertoire courant.
$ tar cpf ../firmware.bin ./* |
Installation du nouveau Firmware
C’est le moment de vérité, nous allons tenter d’installer le fichier firmware.bin que nous venons de créer sur notre NAS LG N1T1.
Comme vous pouvez le voir, notre firmware passe tous les tests. C’est parce que nous avons mis à jour le fichier MD5SUM avec la md5 de notre nouvelle archive.
La prochaine étape est de personnaliser le contenu de notre fichier firmware.tar.gz.