Hacking décodeur Hi-Fi Livebox

Pour discuter de tous les Liveservices Orange : Liveplug, Livephone, Livemusic, Liveradio, Livephoto, WiFi Extender, Livezoom, Home Library, etc...

Hacking décodeur Hi-Fi Livebox

Messagepar double_d » 25 Jan 2014, 19:01

Tl;DR : J'ai bidouillé le firmware, installé un serveur SSH et reverse engineered l'afficheur LCD :

Image

Hacking Décodeur Hifi Livebox

Bonjour,

J'ai récupéré il y a quelques temps un décodeur Hi-Fi Livebox. Malheureusement sans télécommande, l'engin m'était inexploitable et donc inutile... J'ai donc cherché comment modifier cet objet intéressant puisque doté d'une interface ethernet, wifi et un joli écran de 128x80 monochrome.

Après avoir démonté l'engin pour voir ce qu'il avait dans le ventre, quelques recherches m'ont mené sur le super site de porciello.com ! Et là, le firmware à dispo avec les quelques manipulations permettant de l'extraire et de l'analyser, une aubaine !

Je me suis donc mis en tête de mettre en place un serveur SSH sur l'engin, en espérant que je puisse ainsi l'analyser plus tranquillement. La machine fonctionne sous Busybox, et il n'y a pas de serveur SSH inclus dans ce binaire à tout faire. Par chance, cela existe aussi, et porte le nom de Dropbear.

J'ai donc fait quelques recherches sur ce sujet, et suis tombé sur un utilisateur de forums qui, semble-t-il, avait eu la même idée que moi il y a quelques années :

http://forum.hardware.fr/hfr/OSAlternat ... 0956_1.htm

Malheureusement aucune solution n'ai abouti... Je suis parti dans la même direction, à savoir une chaîne de cross-compilation buildroot. J'ai essayé plein de versions, généré des binaires, mis à jour le firmware... Rien à faire, sans doutes parce qu'il faut une toolchain pour un kernel 2.6.19 :

Code: Tout sélectionner
#file imageKernel_32.bin
imageKernel_32.bin: u-boot legacy uImage, linux-2.6.19, Linux/ARM, OS Kernel Image (Not compressed)


Finalement, c'est le fichier /etc/rc.timesys qui m'a mis sur la bonne voie, j'ai été sur leur site (https://linuxlink.timesys.com) qui propose des toolchains pour du linux embarqué. J'ai trouvé alors ce qui a certainement été utilisé par Awox pour la compilation des binaires du firmware du décodeur Hi Fi, une toolchain pour processeur AT91SAM9260 – le fichier est dispo, avec un compte sur leur site, à l'adresse suivante :

https://linuxlink.timesys.com/repositor ... v=5&id=244
https://repository.timesys.com/index.pt ... nstall.tgz

J'ai utilisé une vieille révision qui a été faite pour un kernel 2.6.19.

Avec ça en main, c'est (presque) du gâteau, leur toolchain est compilé pour du 32 bits, donc j'ai utilisé une VM avec une distrib Ubuntu en 32 bits, compilé Dropbear et modifié le firmware du décodeur pour que le fichier /etc/rc.timesys exécute mes propres scripts que j'avais positionné dans le /opt.

Après quelques essais, je suis parvenu à configurer une adresse IP fixe sur l'interface ethernet et lancer dropbear. Cependant, la version de dropbear que j'avais compilé n'acceptait pas un mot de passe vide, et donc au lieu de modifier le fichier /etc/passwd, j'ai créé un fichier /root/.ssh/authorized_keys avec ma clé publique. Et là, après avoir installé ce nouveau firmware, ALLELUILLA ! Un accès SSH ! Cherry on ze cake, avec une clé SSH ! J'ai modifié par la suite le fichier /etc/passwd pour que l'accès se fasse par mot de passe, des fois que quelqu'un serait intéressé par mon firmware modifié;)

Je me suis lancé ensuite dans le reverse engineering du LCD, une fois connecté on a un device /dev/lcd et donc je lui ai envoyé du binaire pour voir... Ca a affiché n'importe quoi, sauf avec les binaires de fonts qu'on a dans /opt/awox, qui ressemblent vaguement à des caractères. Mais le truc cool, c'est qu'on a aussi un /mnt/usbflash qui est monté automatiquement quand on plug une clé USB. Donc j'ai préparé quelques fichiers binaires, fait des dizaines d'essais pour en déduire la chose suivante : Chaque octet envoyé au device est interprété comme un élément de 1 pixel de large sur 8 pixels de haut. Si on envoie 0x00, le LCD n'affiche rien sur cet élément. Si on envoie 0x01, seul le premier pixel de la ligne s'allume. 0x02, seul le 2nd pixel de la ligne s'allume, 0x03 le pixel 1 et 2, et ainsi de suite, on compte en binaire.

Il y a donc dix lignes horizontales de 128 octets chacune qui s'affichent à l'écran.

Ne sachant pas si ce format d'image existe, j'ai fait un petit convertisseur, pour transformer une image monochrome faite sous Gimp en binaire attendu par le LCD. J'arrive donc à afficher les images que je souhaite sur l'écran. Cool !

La busybox compilé sur le firmware d'origine est par contre très limitée, il manque des outils intéressants, comme nc (netcat) ou wget pour ne citer qu'eux. Et puis une IP fixe c'est pas super cool si on veut pouvoir réutiliser le truc sur un autre réseau...

Donc mes travaux ont porté sur la compilation de la dernière version de busybox. En désactivant quelques options, on arrive à un binaire de près de 2Mo. J'ai voulu remplacer la busybox du firmware initial par la mienne, mais impossible de booter. Donc je l'ai renommée, et j'ai fait des liens symboliques pour nc et wget. Nickel, possible d'ouvrir un port avec nc et de faire un wget sur le net.

Ensuite la configuration d'une ip dynamique en DHCP, je me suis inspiré des scripts de /opt/awox/bin du type EthernetStartScript ou AutoIpStartScript, mais j'ai trouvé la bonne ligne de commande dans le binaire /opt/awox/bin/IWR. J'ai donc maintenant une IP attributé par DHCP au démarrage de la machine, on peut la trouver sur l'interface de la livebox pour la connexion SSH.

Mon firmware custom est un « work in progress », mais s'il y a des gens intéressés je peux le fournir les scripts, les binaires compilés ou même tout le firmware. Je ne sais pas trop encore ce que je vais faire comme projet avec cette machine, peut être afficher les horaires des prochains RER de ma station, la météo, un feed Twitter ou RSS... Peut être tout cela à la fois, mais il reste du boulot ! Soit en écrivant du C, soit en scriptant mais pour l'affichage cela risque d'être difficile...

Merci à Tof, merci à ceux qui ont lu ma prose jusqu'au bout, Désolé pour le pavé mais je voulais expliquer ma démarche et laisser une trace de mon boulot, il y a quelques heures de prise de tête, de galère mais aussi d'excitation et de plaisir lorsque cela aboutit.

A+

dD
double_d
 
Messages: 1
Inscription: 25 Jan 2014, 17:11

Re: Hacking décodeur Hi-Fi Livebox

Messagepar Tof » 26 Jan 2014, 18:23

Bravo, beau travail ! :)
Continuez à nous faire partager vos trouvailles ;)

N'hésitez pas à me contacter si vous voulez héberger firmwares custom, scripts, etc... ou même proposer une page avec des tutos.
Les questions se posent sur le forum et non par MP. Une réponse faite à une personne peut servir à d'autres.
Tof
Administrateur
 
Messages: 995
Inscription: 08 Jan 2005, 06:56


Retourner vers Les Liveservices

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron