Que tout ceux qui pensent "Custom Firmware" se calment, ce n'est pas encore d'actualité. La team NDT vient de "reverse" un algorithme assez particulier inclus dans la Playstation 3. C'est-à dire-qu'ils savent maintenant précisément comment fonctionne cet algorithme, et donc, ils savent comment le contourner.
L'algorithme du Flash ECC.
Qu'est ce que ce Flash ECC ? Laissons la Team NDT nous l'expliquer mieux que nous :
First, a small technical explanation. We were not able to modify any data on the PS3's flash chips due to the ECC. The ECC is a checksum basically, that ensures whatever data is in the block is not changed or corrupted, and if it is it errors.
So, the problem was since when we tried to alter data, the ECC would then in turn be invalid, causing errors, making the system not boot.
Traduction :
Tout d'abord, une petite explication. Nous ne pouvions pas modifier des données sur le "nand" de la Playstation 3 à cause du ECC. L'ECC est simplement un vérificateur de contrôle, qui s'assure que les données contenues dans le nand ne sont ni changées, ni corrompues, et si elles le sont, la PS3 plante.
Donc, le problème était que dès que l'on souhaitait modifier des données, l'ECC déclarait alors que c'était invalide, et provoquait des erreurs, empêchant ainsi le système de démarrer
En clair, l'ECC est peu comme le MD5 d'un fichier : on connait le MD5 d'un fichier avant de le télécharger; puis on vérifie le MD5 du fichier après téléchargement et on vérifie s'il correspond. Si oui, on sait (de manière quasi sûre) que le fichier est bien téléchargé, sinon, c'est qu'il y a eu une erreur dans le téléchargement.
Sauf qu'ici, l'ECC vérifie le Nand, c'est à dire la puce flash qui contient toutes les données systèmes: non seulement les instructions pour démarrer (et vérifier si le firmware est en place par exemple), mais aussi certains données vitales à la Playstation 3 : la clé pour décrypter les PKG's (démo et jeux), la clé pour décrypter les Blu-Ray, ...
Le Nand est vraiment une zone sensible, et il est extrêmement utile, vous vous en doutez, de pouvoir y avoir accès.
Contournement de l'ECC
Ils ont donc réussi à contourner ce ECC. Comment ? Laissons leur la parole à nouveau :
We did develop a way around this, however, it was time consuming and quite slow. We used the PS3 to write data to the flash, then dump it, with its proper ECC, then rewrite to where we needed it. This would take hours on end! We were not able to regenerate the ECC since we did not know the proper algorithm.
But now, we can!!
After multiple tests done by NDT to see what the ECC algorithm was when the block was filled with some magic data, our very own RPS was able to reverse the algorithm!
Et en français :
Nous avions développé un moyen pour contrer cela, mais il était extrêmement lent, et nécessitait beaucoup de temps. Nous avons utilisé la PS3 pour écrire des données dans le flash, puis dumper le flash, avec son ECC propre, puis réécrire les données où nous le souhaitions. Cela prenait des heures pour finir ! Nous n'avions pas la possibilité de régénérer le ECC puisque nous ne connaissions pas l'algorithme.
Mais maintenant, on le connait !
Après de nombreux tests effectués par la NDT pour voir comment l'ECC se comportait quand les "blocks" (certaines cases de la mémoire Nand, ndlr) étaient remplies avec des données magiques, notre RPS bien à nous a réussi à reverse l'algorithme !
Qu'est ce que cela signifie ?
C'est très bien d'avoir réussi à reverse cet algorithme, mais à quoi cela sert il ?
C'est simple, on peut désormais, en quelques minutes, éditer proprement un dump du nand, régénérer l'ECC, et le flasher dans la PS3 pour tester les changements effectués. Avec cela, nous avons déjà trouvé l'emplacement de certains clés cryptés, telles que les clés des SELF, des PKG et des Blu-Ray, parmi d'autres, et il y a encore beaucoup de choses à venir.
De plus, la NDT a implémenté le code de régénération ECC de RPS dans son nouveau FlowRebuilder, qui sera posté la semaine prochaine !
Comment fonctionne-t-il ?
Pour pouvoir flasher et dumper un flash, il vous faudra, dans tous les cas, la puce Infectus (en tout cas, pour le moment). Ceci n'est donc pas réserver à Monsieur tout le monde pour l'instant.
Si vous avez l'Infectus, voici comment cela se déroule :
-
Vous dumper le flash de la Playstation 3
-
Vous changez ce que vous voulez dans le dump (qui est donc un fichier) sur votre ordinateur.
-
Vous régénérez le ECC avec le programme de la team NDT, ce qui va permettre d'authentifier le flash, et ainsi pouvoir le flasher sur la PS3 sans qu'elle ne plante.
Mais, est-ce utile ?
A priori non, car il faut l'Infectus. Mais il semblerait que ce programme ait déjà sauvé une PS3 :
Finally, this has already saved one PS3! Hacked2123's PS3, which bit the dust long ago due to a bad flash was recently fixed thanks to RPS's ECC Regeneration code which was built into NDT's newest FlowRebuilder!
His PS3 had bad data that did not match the ECC data, resulting in a plethora of issues. However, as described here, it is now fixed!
Soit :
Finalement, cela a déjà sauvé une PS3 ! La PS3 de Hacked2123, qui prenait la poussière depuis quelques temps à cause d'un mauvais flash, a été récemment réparée grace au Code de régénération ECC de RPS, qui est inclus dans la dernière version de FlowRebuilder de la NDT !
Sa PS3 avait des mauvaises données qui ne correspondaient pas avec les données ECC, ce qui menait à de nombreux soucis. Cependant, cela a été réparé !
Bref, même si ce n'est pas pour le commun des mortels, c'est tout de même intéressant de voir à quel point les choses évolues, et à quel point on commence à en apprendre plus sur la Playstation 3 !
Allez, laissons le mot de la fin à la team NDT :
Stay tuned next week for the release of NDT's newest FlowRebuilder, and lots more!