Dans une vidéo, Deloge vous vantait le démarrage ultra rapide (comparé à une TI-Nspire CX CAS) en seulement quelques secondes de la HP-Prime.
En effet, Texas Instruments a une haute opinion de la “sécurité”, possiblement due au passé militaire de l’entreprise, et de nos jours une volonté de protéger la poule aux oeufs d’or. La TI-Nspire CX CAS doit franchir deux couches de sécurité lors de son démarrage:
En effet, Texas Instruments a une haute opinion de la “sécurité”, possiblement due au passé militaire de l’entreprise, et de nos jours une volonté de protéger la poule aux oeufs d’or. La TI-Nspire CX CAS doit franchir deux couches de sécurité lors de son démarrage:
- le boot1 décompresse le boot2 et vérifie l’authenticité d’une signature avec une clé RSA 2048 bits, avant de lancer le boot2 s’il est validé;
- le boot2 déchiffre et décompresse l’OS, avant d’en vérifier l’authenticité avec une autre clé RSA 2048 bits… et de le lancer, enfin.
In a video, Deloge gave props to the fast boot speed of the HP Prime, only several seconds whereas the Nspire’s boot procedure takes dozens of seconds (especially on the CX series).
Indeed, Texas Instruments gives priority to “security”, possibly a consequence of the company’s military past, nowadays a will to protect the lucrative business model. The Nspire CX CAS uses two layers of security during its boot process:
Indeed, Texas Instruments gives priority to “security”, possibly a consequence of the company’s military past, nowadays a will to protect the lucrative business model. The Nspire CX CAS uses two layers of security during its boot process:
- the boot1 decompresses the boot2 and validates the authenticity of a signature using a 2048-bit RSA key, before launching the boot2 if it passes validation;
- the boot2 decrypts and decompresses the OS, before validating its authenticity with another 2048-bit RSA key… and launching it, at last.
On pouvait donc supposer que la HP-Prime ne disposait pas d’une telle “sécurité”, à l’image des calculatrices Casio où l’on peut modifier les OS installés comme bon nous semble, à condition de mettre à jour une simple somme de contrôle.
Les guillemets autour de “sécurité” dans la phrase précédente sont là pour rendre compte du fait que ces signatures et ce chiffrage n’empêchent pas le reverse-engineering, les exploits et diverses manipulations que nous avons déjà amplement décrites dans de nombreuses autres news et divers tutorials, et qui ne sont pas l’objet de cette news. Du point de vue de l’utilisateur, le déchiffrement, en particulier, est une pure perte de temps.
Les guillemets autour de “sécurité” dans la phrase précédente sont là pour rendre compte du fait que ces signatures et ce chiffrage n’empêchent pas le reverse-engineering, les exploits et diverses manipulations que nous avons déjà amplement décrites dans de nombreuses autres news et divers tutorials, et qui ne sont pas l’objet de cette news. Du point de vue de l’utilisateur, le déchiffrement, en particulier, est une pure perte de temps.
Therefore, it felt logical that the HP Prime didn’t use such a “security” scheme, like Casio calculators where the installed OS can be modified at will, provided a simple checksum is updated.
The use of quotes around “security” in the previous sentence is meant to refer to the fact that signatures and encryption do not prevent reverse-engineering, exploits and various manipulations which we already described at length in many other news items and various tutorials, and aren’t directly related to the current news item. From a user’s perspective, decryption (especially) is a pure waste of time.
The use of quotes around “security” in the previous sentence is meant to refer to the fact that signatures and encryption do not prevent reverse-engineering, exploits and various manipulations which we already described at length in many other news items and various tutorials, and aren’t directly related to the current news item. From a user’s perspective, decryption (especially) is a pure waste of time.
Les firmwares HP-Prime se composent de plusieurs fichiers.
HP Prime firmwares are made of multiple files.
- BXCBOOT0.BIN
- BESTAARM.ROM
- MASTER.DAT
- APPSDISK.DAT
Aussi en août, Lionel et moi avions fait une expérience relatée par Lionel.
In August, Lionel and I had made a quick experiment described by Lionel.
Elle consistait à modifier, dans le firmware de la Prime (partie \programs\misc\armfir.elf du système de fichiers FAT16 contenu dans APPSDISK.DAT), des éléments visibles, à l’époque les chaînes d’aide de WHILE et REPEAT.
La modification a été réalisée sous Linux, après montage de l'image:
Elle a été effectuée grâce à l’éditeur hexa `hte`, après avoir trouvé les chaînes avec `strings` et un peu de `od`. Du classique, donc.
La modification a été réalisée sous Linux, après montage de l'image:
- Code: Select all
mkdir appsdisk; mount -o loop,offset=8192 APPSDISK.DAT appsdisk/
Elle a été effectuée grâce à l’éditeur hexa `hte`, après avoir trouvé les chaînes avec `strings` et un peu de `od`. Du classique, donc.
The experiment was made of a modification, in the Prime’s firmware ( \programs\misc\armfir.elf part of the FAT16 filesystem embedded into APPSDISK.DAT), of some user-visible items, namely the help strings of WHILE and REPEAT.
The modification was performed under Linux, after mounting the image:
It was done thanks to the `hte` hex editor, after finding the strings with `strings` and a sprinkling of `od`. No fancy tools.
The modification was performed under Linux, after mounting the image:
- Code: Select all
mkdir appsdisk; mount -o loop,offset=8192 APPSDISK.DAT appsdisk/
It was done thanks to the `hte` hex editor, after finding the strings with `strings` and a sprinkling of `od`. No fancy tools.
Bien sûr, pour qu’une modification ait une chance de fonctionner (du moins, nous l’imaginons, mais nous allons poursuivre les tests), il faut mettre à jour la somme MD5 dans le fichier \APPSLIST.MD5 du filesystem FAT16, après avoir calculé la somme MD5 du fichier armfir.elf modifié.
Ensuite, il faut transférer le firmware complet, comprenant le fichier APPSDISK.DAT modifié, à la calculatrice.
Ensuite, il faut transférer le firmware complet, comprenant le fichier APPSDISK.DAT modifié, à la calculatrice.
Of course, such a modification has no chance of working (well, at least, we think so, but we’ll perform more tests) without updating the MD5 sum in the \APPSLIST.MD5 file of the FAT16 filesystem, after computing the MD5 sum of the modified armfir.elf
Avec ça, c’est bon ? Non, notre expérience en août avait échoué. Les chaînes de caractères de l’aide de WHILE et REPEAT n’avaient pas changé, sur la calculatrice, et nous avions donc supposé que la procédure de validation était plus compliquée. Il fallait quand même tenter les choses simples et très rapides en premier
So far, so good ? Nope, our experiment from August had failed. The help strings for WHILE and REPEAT didn’t change, on the calculator, so we supposed that the checking procedure was more complicated. Trying out the simple, quick things first was the appropriate thing to do
Mais nous avons compris ce week-end pourquoi nous avions échoué: dans cette expérience, le firmware n’avait pas été intégralement transféré à la calculatrice !
Pour déclencher un transfert complet, une méthode apparemment fiable est de downgrader le firmware, avant de l’upgrader. Peut-être y a-t-il plus simple (modification dans MASTER.DAT ou autre), mais les transferts de firmware vers la Prime sont suffisamment rapides grâce à un contrôleur USB supérieur à celui des Nspire et à un protocole plus malin.
Pour déclencher un transfert complet, une méthode apparemment fiable est de downgrader le firmware, avant de l’upgrader. Peut-être y a-t-il plus simple (modification dans MASTER.DAT ou autre), mais les transferts de firmware vers la Prime sont suffisamment rapides grâce à un contrôleur USB supérieur à celui des Nspire et à un protocole plus malin.
However, this week-end, we understood why our experiment had failed: the firmware hadn’t been fully re-transferred to the calculator !
In order to trigger a full firmware transfer, a seemingly reliable method is to downgrade the firmware before upgrading it back. Maybe there are simpler ways (e.g. modifying MASTER.DAT), but on the Prime, firmware upgrades are fast enough, thanks to an USB controller better than that of the Nspire, and a better protocol.
In order to trigger a full firmware transfer, a seemingly reliable method is to downgrade the firmware before upgrading it back. Maybe there are simpler ways (e.g. modifying MASTER.DAT), but on the Prime, firmware upgrades are fast enough, thanks to an USB controller better than that of the Nspire, and a better protocol.
Lors du downgrade + upgrade, la calculatrice affiche pendant quelques secondes un message "verifying firmware". Il y a donc peut-être bien une signature, mais elle ne concernerait que certains fichiers jugés critiques ?
En tout cas, le fichier APPSDISK.DAT modifié est bien transféré à la calculatrice, et les modifications sont visibles, comme le montrent les photos ci-contre ainsi que la capture d’écran réalisée avec le programme de test de libhpcalcs (“libticalcs pour les Prime”, et davantage) en développement par Lionel et que je teste:
En tout cas, le fichier APPSDISK.DAT modifié est bien transféré à la calculatrice, et les modifications sont visibles, comme le montrent les photos ci-contre ainsi que la capture d’écran réalisée avec le programme de test de libhpcalcs (“libticalcs pour les Prime”, et davantage) en développement par Lionel et que je teste:
During the upgrade + downgrade, the calculator displays a “verifying firmware” message for several seconds. Therefore, there may be a signature, but it could be applied only to a subset of files considered highly critical ?
Anyhow, the modified APPSDISK.DAT file is correctly transferred to the calculator, and the modifications are visible, as shown by the opposite snapshots as well as the screenshot made with the libhpcalcs (“libticalcs for the Prime”, and more) being developed by Lionel, which I’m testing:
Anyhow, the modified APPSDISK.DAT file is correctly transferred to the calculator, and the modifications are visible, as shown by the opposite snapshots as well as the screenshot made with the libhpcalcs (“libticalcs for the Prime”, and more) being developed by Lionel, which I’m testing:
(on remarquera les couleurs avec inversion des teintes rouges et bleues, venant du fait que le post-processing nécessaire sur les images produites par la machine n’est pas encore implémenté)
(notice the inverted colors, caused by the current lack of implementation of necessary post-processing on the images produced by the calculator)
Il est évident que si on peut modifier aussi facilement les chaînes de caractères de l’OS, on peut modifier bien d’autres choses
Espérons donc plein de bonnes choses pour la plate-forme Prime, à commencer par:
Espérons donc plein de bonnes choses pour la plate-forme Prime, à commencer par:
- l’utilisation de la pleine puissance de la machine grâce au code natif (la puissance brute la plus élevée du marché pour une calculatrice à l’heure actuelle, même si elle est faible par rapport aux smartphones modernes);
- le portage de Linux et l’émulation la machine, largement faisables avant la fin de l’année si une équipe peut y passer assez de temps, d’autant que la machine est basée sur des composants connus, déjà supportés pour la plupart par Linux et de vieux forks de QEMU, voir http://tiplanet.org/hpwiki/index.php?ti ... /Emulation ;
- la correction de bugs, comme celui de l’indice des suites ne pouvant pas commencer à zéro (très embêtant pour l’enseignement secondaire français).
It is obvious that if modifying the OS’s strings is so easy, then many other things can be modified
Let’s hope the best for the Prime platform, starting with:
Let’s hope the best for the Prime platform, starting with:
- unleashing the full power of the calculator through native code (at the time of this writing, the highest raw power on a calculator in the entire marketplace, even if it’s low compared to modern smartphones);
- porting Linux and emulating the calculator, clearly doable before the end of the year if someone can spend enough time on it, all the more the calculator is based on well-known components, most of them already supported by Linux and old QEMU forks, see http://tiplanet.org/hpwiki/index.php?ti ... /Emulation ;
- bugfixes, such as making it possible for sequence index to start at 0 (the current impossibility to do so is very annoying for French high school teaching).
coécrit par Critor et Lionel Debroux
cowritten by Critor and Lionel Debroux