# Disque dur multimédia Wyplayer/Firmware
## Les buts sur la connaissance du firmware

* Connaitre la structure du fichier .wup (Fait)
* Connaitre les formats des parties du fichier .wup (XML et Kermel ok, reste le logiciel)
* Connaitre la fonctionnalité de chaque partie du fichier .wup (en cours...)
* Actualiser un boitier avec le firmware d'un de ses clones (en cours...)
* Générer son propre Kermel et l'installer dans le boitier (en cours...)
* Générer son propre logiciel et l'installer dans le boitier (en cours...)
* Obtenir la clé d'encryptage de la partie logiciel de chaque boitier (en cours...)
* Accéder au logiciel pour comprendre le fonctionnement du boitier (en cours...)

## Structure du fichier .wup

Exemple: <root>
</root>

## Infos sur le fichier Kermel

* System:$ file kernel2.6.17.14.617_1.2.14.7929.bin
* kernel2.6.17.14.617_1.2.14.7929.bin: u-boot/PPCBoot image

## Analyse du fichier Kermel

Le nombre magique dans le kermel est (0x270519), il indique que le fichier est de type u-boot. Si on veut analyser le reste du fichier on va à l'offset 352 (on a analysé jusqu'à présent sous la forme d'un fichier gzip que l'on extrait avec la commande suivante:
L'analyse de ce fichier décompressé montre qu'à l'intérieur il y a deux autres fichiers compressés. L'un permet la configuration du kermel, l'autre est l' l'initramfs.cpio .
Un nouveau script a été créé afin de décompresser un fichier gzip à l'intérieur d'un autre fichier.
Dans ce cas concret, on peut obtenir le gzip contenu dans le fichier Kermel mais aussi les fichiers contenus dans le fichier Kermel décompressés. Pour clarifier, voilà comment se découpe le fichier:
* update.wup (applique le script d'extraction)
    header (contient le fichier Kermel dans ces 4 derniers bit)
    kernel (applique le script d'extraction du gzip)
       kernel.uncomp (applique le script d'extraction du gzip)
          config (fichier de configuration pour la compilation du kermel)
          initramfs.cpio (fichier nécessaire à la compilation)
    middle (contient le fichier logiciel dans ces 4 derniers bit)
    software
    footer
    infoxml (information xml sur le fichierupdate.wup et le boitier)
Note: il y a un projet tribox avec des caractéristiques identiques au notre (même processeur) et ils ont pas mal d'infos sur le montage du système. Plus d'infos ici:http://www.tribbox.com/

## Actualiser le firmware avec le firmware d'un autre boitier

Aujourd'hui il est impossible d'actualiser un clone par le firmware du wyplayer. Chaque boitier possède sa propre identification et la partie "logiciel" du firmware est cryptée de manière différente pour chaque boitier. En théorie, il serait possible de mélanger les firmwares entre eux afin de trouver un firmware alternatif. Il suffirait de prendre le kermel d'un boitier pour le mettre dans le firmware qui nous intéresse pour actualiser le boitier. On connait les 6 parties du firmware, il doit donc être possible de créer un firmware alternatif.

## Script pour créer un firmware alternatif

Pour essayer de créer ce firmware alternatif, on a essayé de créer un script qui mélange les parties de 2 firmwares distincts afin de créer un fichier.wup valide pour actualiser le boitier. Toutes les combinaisons sont possibles, les fichiers créés par ce script n'étant pas tous testés, il est important de prendre des précautions avec cette actualisation.
IMPORTANT: pour que le script fonctionne, il faut changer la valeur de EXTRACT_PROGRAM et écrire la route pour le script d'extraction.
Le fonctionnement est simple: