Omega 2.0.4 avec bootloader protégé contre Epsilon 20
Posted: 04 Jan 2023, 10:00
Lancée pour la rentrée 2017, la calculatrice NumWorks était initialement un formidable projet de machine ouverte.
Le développement tiers a pu s'y hisser à un niveau jamais atteint chez la concurrence, et permettre l'émergence d'un projet formidable, Omega par Quentin Guidee et ses non moins illustres collaborateurs.
Il s'agit d'un firmware alternatif pour ta calculatrice NumWorks. Basé sur le code source du firmware officiel Epsilon 15.5 comme la licence l'y autorisait jusqu'alors, Omega avait pour but de regrouper et mettre en avant les meilleures contributions au code d'Epsilon, très souvent non reprises par le constructeur qui a son propre calendrier et sa propre vision de l'interface.
Difficile de tout citer ici mais voici déjà par exemple un des fantastiques ajouts d'Omega. Contrairement à l'ensemble de ses concurrentes de milieu de gamme, la NumWorks travaille en interne sur des arbres de calcul, une technique qui permet le calcul littéral. Toutefois elle les bridait artificiellement pour n'accepter que des valeurs numériques, empêchant donc tout calcul littéral. Omega à la différence autorise ces arbres à utiliser des lettres / inconnues, ce qui te donne ainsi un moteur de calcul littéral. De quoi même dériver à seulement 80€, des fonctionnalités que la concurrence réserve usuellement aux modèles haut de gamme avec des prix à 3 chiffres !
Citons aussi un tableau périodique des éléments, ou encore la possibilité d'avoir une bibliothèque de constantes physiques avec unités bien avant que ce ne soit disponible dans le firmware officiel.
Outre ce qu'il intègre, Omega offre également l'avantage de pouvoir installer à chaud des applications, fonctionnalité jusqu'alors absente du firmware officiel Epsilon. Plusieurs applications de très haute facture furent développées, on peut citer entre autres :
Les fonctionnalités du firmware Omega ont été reprises par la suite pour plusieurs forks, les firmwares Upsilon et Khi, ce dernier par nul autre que Bernard Parisse en personne.
Un gros avantage de plus est ici que KhiCAS et l'ensemble des fonctionnalités rajoutées via des applications restent accessibles en mode examen, de façon parfaitement légale et légitime en France, puisque ces fonctionnalités ne sont pas des données et viennent de plus directement intégrées à des modèles concurrents haut de gamme parfaitement autorisés.
Le développement tiers a pu s'y hisser à un niveau jamais atteint chez la concurrence, et permettre l'émergence d'un projet formidable, Omega par Quentin Guidee et ses non moins illustres collaborateurs.
Il s'agit d'un firmware alternatif pour ta calculatrice NumWorks. Basé sur le code source du firmware officiel Epsilon 15.5 comme la licence l'y autorisait jusqu'alors, Omega avait pour but de regrouper et mettre en avant les meilleures contributions au code d'Epsilon, très souvent non reprises par le constructeur qui a son propre calendrier et sa propre vision de l'interface.
Difficile de tout citer ici mais voici déjà par exemple un des fantastiques ajouts d'Omega. Contrairement à l'ensemble de ses concurrentes de milieu de gamme, la NumWorks travaille en interne sur des arbres de calcul, une technique qui permet le calcul littéral. Toutefois elle les bridait artificiellement pour n'accepter que des valeurs numériques, empêchant donc tout calcul littéral. Omega à la différence autorise ces arbres à utiliser des lettres / inconnues, ce qui te donne ainsi un moteur de calcul littéral. De quoi même dériver à seulement 80€, des fonctionnalités que la concurrence réserve usuellement aux modèles haut de gamme avec des prix à 3 chiffres !
Citons aussi un tableau périodique des éléments, ou encore la possibilité d'avoir une bibliothèque de constantes physiques avec unités bien avant que ce ne soit disponible dans le firmware officiel.
Outre ce qu'il intègre, Omega offre également l'avantage de pouvoir installer à chaud des applications, fonctionnalité jusqu'alors absente du firmware officiel Epsilon. Plusieurs applications de très haute facture furent développées, on peut citer entre autres :
- KhiCAS, une formidable application intégrée de Mathématiques et de Sciences par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, qui étendait gratuitement les capacités de ta calculatrice au niveau d'une HP Prime. L'application intègre le moteur de calcul formel GIAC développé pour le logiciel Xcas du même auteur pour des possibilités en calcul encore plus étendues. Étaient également inclus un tableur, gros manque du firmware officiel, une bibliothèque de constantes physiques, un convertisseur d'unités, un tableau périodique des éléments et bien d'autres choses encore. Le tout est en prime programmable en Python, avec une collection de bibliothèques importables bien plus étoffée que celle de l'application Python officielle, et surtout ici de façon intégrée, tes scripts Python pouvant en effet faire appel au moteur de calcul formel GIAC par l'intermédiaire du module cas.
- Nofrendo, un émulateur de console de jeux Nintendo NES par zardam
- Peanut-GB, un émulateur de console de jeux Nintendo GameBoy par M4x1m3
- Periodic, un tableau périodique des éléments par M4x1m3
Les fonctionnalités du firmware Omega ont été reprises par la suite pour plusieurs forks, les firmwares Upsilon et Khi, ce dernier par nul autre que Bernard Parisse en personne.
Un gros avantage de plus est ici que KhiCAS et l'ensemble des fonctionnalités rajoutées via des applications restent accessibles en mode examen, de façon parfaitement légale et légitime en France, puisque ces fonctionnalités ne sont pas des données et viennent de plus directement intégrées à des modèles concurrents haut de gamme parfaitement autorisés.
Mais voilà, en 2020-2021 il y a eu 2 très graves incidents concernant le modèle ouvert de la calculatrice NumWorks :
Toute N0110 mise à jour ou venant préchargée d'une version 16.3 ou supérieure, comprend un bootloader (chargeur de démarrage) censé être non effaçable, empêchant l'installation de tout firmware non correctement signé par le constructeur, c'est-à-dire entre autres de tout firmware tiers (Omega, Upsilon, Khi, ...).
Par conséquent, cela t'empêche également de bénéficier des applications additionnelles persistantes en mémoire Flash et en mode examen (logiciel intégré de Mathématiques avec moteur ce calcul formel KhiCAS, émulateurs Nintendo Game Boy et NES, tableau périodique des éléments, ...).
Dans sa volonté de frapper très fort, le constructeur est même allé jusqu'à révoquer la licence ouverte de son firmware Epsilon. Les développeurs des firmwares tiers n'ont depuis plus le droit d'en réutiliser le code des dernières nouveautés, et les firmwares en question restent basés sur le code d'Epsilon 15.5, la dernière version sortie sous licence ouverte. Passer outre serait s'exposer à des poursuites, les menaces semblant être un véritable réflexe chez ce constructeur.
Les quelques utilisateurs de N0110 ayant eu la chance d'être informés avaient certes le choix mais étaient depuis face à un cruel dilemme :
- une initiative hostile d'un tiers en avril 2020 aux Pays-Bas, qui a effectué exprès une modification frauduleuse du firmware officiel avant de la filmer et l'envoyer à l'autorité de régulation des examens
- un véritable camouflet au Portugal qui a formalisé pour la session 2021 une interdiction de toute calculatrice open source, sans doute choqué par le comportement hautement incorrect de NumWorks qui osait prétendre dans la presse portugaise à la rentrée 2020 que sa calculatrice serait autorisée, devançant ainsi de plusieurs mois la publication officielle de la liste de modèles approuvés (qui pour le coup n'a pas intégré la NumWorks, avec en prime le traitement de faveur de l'interdiction)
Toute N0110 mise à jour ou venant préchargée d'une version 16.3 ou supérieure, comprend un bootloader (chargeur de démarrage) censé être non effaçable, empêchant l'installation de tout firmware non correctement signé par le constructeur, c'est-à-dire entre autres de tout firmware tiers (Omega, Upsilon, Khi, ...).
Par conséquent, cela t'empêche également de bénéficier des applications additionnelles persistantes en mémoire Flash et en mode examen (logiciel intégré de Mathématiques avec moteur ce calcul formel KhiCAS, émulateurs Nintendo Game Boy et NES, tableau périodique des éléments, ...).
Dans sa volonté de frapper très fort, le constructeur est même allé jusqu'à révoquer la licence ouverte de son firmware Epsilon. Les développeurs des firmwares tiers n'ont depuis plus le droit d'en réutiliser le code des dernières nouveautés, et les firmwares en question restent basés sur le code d'Epsilon 15.5, la dernière version sortie sous licence ouverte. Passer outre serait s'exposer à des poursuites, les menaces semblant être un véritable réflexe chez ce constructeur.
Les quelques utilisateurs de N0110 ayant eu la chance d'être informés avaient certes le choix mais étaient depuis face à un cruel dilemme :
- soit mettre à jour sur le firmware Epsilon pour bénéficier de toutes les dernières nouveautés officielles, mais en contrepartie renoncer définitivement aux firmwares tiers
- soit rester sur un firmware tiers, mais en contrepartie se priver des nouveautés officielles
Dans une actualité fin Mars 2022, nous t'annoncions la sortie de Phi par l'équipe des développeurs Omega. Phi est un bootloader tiers avec lequel il suffit d'écraser le bootloader officiel, grâce à une faille présente dans les firmwares Epsilon officiels jusqu'à la version 18.2.0.
Après plus de 6 mois d'attente Phi te permettait enfin de déverrouiller ta calculatrice et d'y installer librement le firmware de ton choix.
Mais mieux que ça, Phi supprimait également le dilemme précédent. Ce bootloader absolument génial introduisait en effet une fonctionnalité de dualboot, te permettant d'installer simultanément 2 firmwares sur ta N0110 dans 2 emplacements Flash appelés slot A et slot B, pour pouvoir par la suite basculer librement entre les deux à tout moment grâce aux raccourcis reset+
Tu bénéficiais ainsi du meilleur des deux mondes :
Les différents firmwares tiers Omega, Upsilon et Khi ont par la suite chacun intégré leur propre bootloader avec des spécificités, Phi n'étant nécessaire que si tu partais d'une machine déjà verrouillée.
Une grande ouverture d'esprit de la part de l'équipe de développement de ces firmwares tiers, qui malgré toutes les crasses auxquelles elle avait eu droit continuait à faire des efforts pour travailler avec le firmware officiel Epsilon et donc par extension avec NumWorks, et toujours bénévolement.
Après plus de 6 mois d'attente Phi te permettait enfin de déverrouiller ta calculatrice et d'y installer librement le firmware de ton choix.
Mais mieux que ça, Phi supprimait également le dilemme précédent. Ce bootloader absolument génial introduisait en effet une fonctionnalité de dualboot, te permettant d'installer simultanément 2 firmwares sur ta N0110 dans 2 emplacements Flash appelés slot A et slot B, pour pouvoir par la suite basculer librement entre les deux à tout moment grâce aux raccourcis reset+
1et reset+
2!
Tu bénéficiais ainsi du meilleur des deux mondes :
- les quelques nouveautés apportées par les mises à jour officielles du firmware Epsilon depuis la version 15.5
- toutes les géniales nouveautés apportées par les firmwares tiers Omega, Upsilon et Khi
Les différents firmwares tiers Omega, Upsilon et Khi ont par la suite chacun intégré leur propre bootloader avec des spécificités, Phi n'étant nécessaire que si tu partais d'une machine déjà verrouillée.
Une grande ouverture d'esprit de la part de l'équipe de développement de ces firmwares tiers, qui malgré toutes les crasses auxquelles elle avait eu droit continuait à faire des efforts pour travailler avec le firmware officiel Epsilon et donc par extension avec NumWorks, et toujours bénévolement.
Bien évidemment malgré cette sortie tout sauf malveillante, les extrémistes de chez NumWorks ne l'ont pas entendu de cette oreille, ne saisissant pas la main tendue par une communauté qu'ils avaient eux-mêmes très profondément blessée.
Ils ont cherché par nombre de moyens depuis à empêcher l'utilisation des bootloaders tiers ainsi que de tout firmware tiers. Nous n'allons pas tout lister ici car ce serait particulièrement long, attardons nous aujourd'hui plutôt sur quelques points bien précis.
Les bootloaders tiers étaient donc capables comme expliqué précédemment d'amorcer n'importe quelle version du firmware officiel Epsilon conçue pour un bootloader. Tu pouvais ainsi installer et utiliser aussi bien Epsilon 16 qu'Epsilon 17 ou Epsilon 18.
Sauf que ce n'était comme par hasard plus le cas avec la mise à jour suivante Epsilon 19, finalisée en version stable pour Juillet 2022.
Histoire de bien rajouter des bâtons dans les roues, le constructeur a de plus fait le choix avec Epsilon 19 de ne plus publier l'intégralité du code source. Plusieurs éléments critiques en sont manquants, dont justement ce qui concerne l'amorçage. Déjà que l'on ne pouvait déjà quasiment plus rien faire du code suite à la révocation de la licence, désormais on ne peut donc même plus le consulter.
La correction a en conséquence pris plusieurs mois, et vient tout juste de sortir fin novembre. En effet la dernière mise à jour Omega 2.0.3 inclut un nouveau bootloader capable d'amorcer Epsilon 19.
Ils ont cherché par nombre de moyens depuis à empêcher l'utilisation des bootloaders tiers ainsi que de tout firmware tiers. Nous n'allons pas tout lister ici car ce serait particulièrement long, attardons nous aujourd'hui plutôt sur quelques points bien précis.
Les bootloaders tiers étaient donc capables comme expliqué précédemment d'amorcer n'importe quelle version du firmware officiel Epsilon conçue pour un bootloader. Tu pouvais ainsi installer et utiliser aussi bien Epsilon 16 qu'Epsilon 17 ou Epsilon 18.
Sauf que ce n'était comme par hasard plus le cas avec la mise à jour suivante Epsilon 19, finalisée en version stable pour Juillet 2022.
Histoire de bien rajouter des bâtons dans les roues, le constructeur a de plus fait le choix avec Epsilon 19 de ne plus publier l'intégralité du code source. Plusieurs éléments critiques en sont manquants, dont justement ce qui concerne l'amorçage. Déjà que l'on ne pouvait déjà quasiment plus rien faire du code suite à la révocation de la licence, désormais on ne peut donc même plus le consulter.
La correction a en conséquence pris plusieurs mois, et vient tout juste de sortir fin novembre. En effet la dernière mise à jour Omega 2.0.3 inclut un nouveau bootloader capable d'amorcer Epsilon 19.
Il y a de plus eu quelque chose d'autrement plus grave avec Epsilon 19 si bien que, certes en partie par manque de temps en pleine période d'examens mais aussi pour te protéger, nous n'avons annoncé Epsilon 19 non pas directement lors de la sortie de la bêta mais avec un peu plus d'un mois de retard, le temps de comprendre ce qui se passait.
En effet, lors de l'installation d'Epsilon 19, l'interface web se permettait d'installer une nouvelle version du bootloader sur certaines calculatrices. Après plusieurs semaines de tests et retours, nous avons pu comprendre que cela concernait :
Aucune trêve dans ce contexte, le constructeur s'est permis de mettre ses utilisateurs en danger (surtout lorsque l'on a pu se rendre compte depuis qu'Epsilon 19 présentait des calculs faux lorsque l'on faisait intervenir des pourcentages, et était de plus instable, contrairement à toutes les versions l'ayant précédé). Quand on est capable de faire une telle chose pour servir ses propres intérêts, on ne mérite aucune confiance. Et quand en prime on perd la bienveillance envers les élèves/candidats, l'on n'a rien strictement à faire dans le secteur de l'Education.
En effet, lors de l'installation d'Epsilon 19, l'interface web se permettait d'installer une nouvelle version du bootloader sur certaines calculatrices. Après plusieurs semaines de tests et retours, nous avons pu comprendre que cela concernait :
- les N0110 qui étaient dépourvues de bootloader (versions d'Epsilon inférieures à 16, versions d'Omega, Upsilon ou Khi installées avant la sortie de Phi)
- mais également les N0110 munies de versions avec bootloader d'Omega, Upsilon, Khi
Aucune trêve dans ce contexte, le constructeur s'est permis de mettre ses utilisateurs en danger (surtout lorsque l'on a pu se rendre compte depuis qu'Epsilon 19 présentait des calculs faux lorsque l'on faisait intervenir des pourcentages, et était de plus instable, contrairement à toutes les versions l'ayant précédé). Quand on est capable de faire une telle chose pour servir ses propres intérêts, on ne mérite aucune confiance. Et quand en prime on perd la bienveillance envers les élèves/candidats, l'on n'a rien strictement à faire dans le secteur de l'Education.
Suite à ce comportement absolument scandaleux, NumWorks est tombé de son piédestal nous concernant. Chat échaudé craignant l'eau froide, lorsque la version bêta d'Epsilon 20 est sortie, nous avons fait le choix de ne pas l'annoncer justement pour ne pas te mettre en danger, pour ne pas que tu te fasses une nouvelle fois piéger d'une façon ou d'une autre.
L'urgence était de ne pas se précipiter pour ne pas se faire avoir une nouvelle fois et griller une autre calculatrice. Notre priorité était avant tout de comprendre pour mieux t'informer : où était le piège ?
Epsilon 20 restait apparemment amorçable par le dernier bootloader d'Omega 2.0.3. Mais après l'incident précédent montrant que le constructeur NumWorks n'a aucun interdit moral lorsqu'il s'agit d'imposer ce qu'il pense être dans son intérêt, il était clair pour nous qu'il devait y en avoir un quelque part, si ce n'était même plusieurs.
Et effectivement la page d'installation d'Epsilon 20 fait quelque chose de totalement anormal ; elle inscrit une copie du dernier bootloader officiel en mémoire Flash à une adresse a priori non amorçable, 0x10000.
Une image servant sans aucun doute à être comparée avec le bootloader installé sur la calculatrice. Après la question est pour quoi faire et nous pouvons imaginer nombre de choses, toutes malveillantes :
L'urgence était de ne pas se précipiter pour ne pas se faire avoir une nouvelle fois et griller une autre calculatrice. Notre priorité était avant tout de comprendre pour mieux t'informer : où était le piège ?
Epsilon 20 restait apparemment amorçable par le dernier bootloader d'Omega 2.0.3. Mais après l'incident précédent montrant que le constructeur NumWorks n'a aucun interdit moral lorsqu'il s'agit d'imposer ce qu'il pense être dans son intérêt, il était clair pour nous qu'il devait y en avoir un quelque part, si ce n'était même plusieurs.
Et effectivement la page d'installation d'Epsilon 20 fait quelque chose de totalement anormal ; elle inscrit une copie du dernier bootloader officiel en mémoire Flash à une adresse a priori non amorçable, 0x10000.
Une image servant sans aucun doute à être comparée avec le bootloader installé sur la calculatrice. Après la question est pour quoi faire et nous pouvons imaginer nombre de choses, toutes malveillantes :
- écrasement par le firmware Epsilon 20 du bootloader avec la copie de la dernière version officielle
- refus par Epsilon 20 de l'accès à certaines fonctionnalités jusqu'à-ce que l'utilisateur accepte de réinstaller un bootloader officiel (mode examen, clignotement de la diode examen, outils en ligne, ...)
- marquage infâmant (popup à chaque allumage avec un message effrayant pour l'utilisateur ou le surveillant qui verrait ça, signe distinctif dans la barre de titre, ...)
- ...
Et bien l'année 2023 commence bien, l'équipe de développement Omega vient tout juste de sortir Omega 2.0.4.
Cette mise à jour inclut un nouveau bootloader Omega pour NumWorks N0110 destiné à te protéger contre toute initiative malveillante d'Epsilon 20. Le principe consiste à vérifier la présence de la copie non amorçable du bootloader officiel en mémoire Flash, et à l'effacer si trouvée. Quoi qu'il ait été prévu qu'Epsilon 20 en fasse, ce sera alors strictement impossible. Une fois la mise à jour d'Omega effectuée, tu pourras alors enfin t'installer Epsilon 20 sans crainte pour profiter des derniers ajouts !
Ce n'est pas la seule nouveauté.
Et bien le nouveau bootloader Omega 2.0.4 supprime la nécessité de telles acrobaties dans ces cas-là : la simple pression des touches
Malgré tout, il y a des améliorations de la gestion du mode examen avec le nouveau bootloader Omega 2.0.4.
Cette mise à jour inclut un nouveau bootloader Omega pour NumWorks N0110 destiné à te protéger contre toute initiative malveillante d'Epsilon 20. Le principe consiste à vérifier la présence de la copie non amorçable du bootloader officiel en mémoire Flash, et à l'effacer si trouvée. Quoi qu'il ait été prévu qu'Epsilon 20 en fasse, ce sera alors strictement impossible. Une fois la mise à jour d'Omega effectuée, tu pourras alors enfin t'installer Epsilon 20 sans crainte pour profiter des derniers ajouts !
Ce n'est pas la seule nouveauté.
Jusqu'à présent, pour régler le firmware à amorcer par défaut, tu devais utiliser une combinaison avec le bouton reset : reset+
Nécessité donc d'avoir à tout moment sous la main un outil pour actionner le bouton reset ainsi que de quelques acrobaties pour presser simultanément le bouton reset à l'arriège ainsi que la touche à l'avant, fort pénible.
1pour régler l'amorçage par défaut sur le slot A, et reset+
2pour le slot B.
Nécessité donc d'avoir à tout moment sous la main un outil pour actionner le bouton reset ainsi que de quelques acrobaties pour presser simultanément le bouton reset à l'arriège ainsi que la touche à l'avant, fort pénible.
Et bien le nouveau bootloader Omega 2.0.4 supprime la nécessité de telles acrobaties dans ces cas-là : la simple pression des touches
1ou
2à l'écran du bootloader permet maintenant de sélectionner le slot et donc firmware par défaut, et la touche on/off permet alors immédiatement de l'amorcer !
Enfin, à partir du moment où le bootloader permet d'amorcer 2 firmwares différents, qui stockent chacun séparément leur propre configuration du mode examen, le bootloader se doit d'en tenir compte afin de garantir la conformité de la calculatrice pour les examens.
Or, sans doute exprès pour pousser les bootloaders et firmwares tiers à la faute et ensuite pouvoir la dénoncer, le code source relatif au format de la configuration de mode examen écrit en mémoire Flash fait justement partie des éléments censurés.
Or, sans doute exprès pour pousser les bootloaders et firmwares tiers à la faute et ensuite pouvoir la dénoncer, le code source relatif au format de la configuration de mode examen écrit en mémoire Flash fait justement partie des éléments censurés.
Malgré tout, il y a des améliorations de la gestion du mode examen avec le nouveau bootloader Omega 2.0.4.
Par contre, nous déplorons la solution retenue dans ce contexte : pour ne pas s'embêter à gérer 2 configurations de mode examen utilisant 2 formats différents dont 1 format inconnu, le bootloader t'interdit de changer de firmware une fois le mode examen activé.
C'est hautement problématique et contraire à l'esprit initial du projet, car cela remet le cruel dilemme initial sur la table. Il faudra choisir en début d'épreuve entre :
C'est hautement problématique et contraire à l'esprit initial du projet, car cela remet le cruel dilemme initial sur la table. Il faudra choisir en début d'épreuve entre :
- soit activer le mode examen dans Omega, Upsilon ou Khi et bénéficier de leurs fonctionnalités additionnelles respectives, mais pas des derniers ajouts officiels
- soit activer le mode examen dans Epsilon et bénéficier des derniers ajouts officiels, mais d'aucune des fonctionnalités additionnelles tierces conçues pour Omega, Upsilon ou Khi
Pour mettre à jour ton bootloader Phi, Omega, Upsilon ou Khi avec le nouveau bootloader Omega protégé contre Epsilon 20, il te faut :
- aller sur le site Omega
- faire reset+
6
pour passer ta calculatrice dans le mode de récupération autorisant la réécriture du bootloader (à ne jamais faire sur une page du site officiel de NumWorks, sans quoi tu reverrouilles ta calculatrice, et peut-être cette fois-ci définitivement) - cliquer sur le bouton Recovery et suivre les instructions
Lien :
- tuto de déverrouillage édition rentrée 2022
- outil DFU en ligne pour sauvegarder/réinstaller des images firmwares compatibles avec les bootloaders tiers (ne jamais changer de slot, les images sauvegardées depuis le slot A doivent être réécrites dans le seul slot A, et de même pour le slot B)
Installation :
- Omega + applications
- Upsilon + applications
- Khi + applications
- Epsilon (ne jamais faire reset+
6
même si le site en question te le conseille, c'est un piège)
Source : https://getomega.dev/releases