Page 1 of 1

Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 04 Jan 2023, 10:00
by Admin
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.

12024Outre 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 :
  • 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)
14500Après un simulacre de prise en compte de l'avis de sa communauté de développement sur la période 2020-2021, le constructeur a contre toute attente clairement préparé tout autre chose dans le dos de sa communauté, introduisant lors de la mise à jour 16.3 de rentrée 2021 un verrouillage extrême de ses calculatrices N0110.

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
15413Dans 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+
1
et 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.
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 :
  • 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
Problème, ce nouveau bootloader officiel refusait le retour à la version 18 précédente. Les utilisateurs concernés étaient donc coincés sur une version bêta, et ce en plein mois d'épreuves d'examen dans l'hémisphère nord, totalement irresponsable et impardonnable de la part d'un acteur du secteur de l'Education !

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 :
  • é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, ...)
  • ...
L'inconnue est de savoir quand est-ce que ça se déclenche et à ce jour n'avons pas de réponse, nous n'avons pas trouvé. Mais NumWorks n'a sûrement pas fait ça pour rien. Si ce n'est pas systématique ou pourrait penser au lancement du mode examen (à moins que ce ne soit aléatoire pour mieux nous piéger). Mais peut-être que cette sécurité n'est justement pas complètement activée sur la version bêta cette fois-ci.
16349Et 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é.
Jusqu'à présent, pour régler le firmware à amorcer par défaut, tu devais utiliser une combinaison avec le bouton reset : reset+
1
pour régler l'amorçage par défaut sur le slot A, et reset+
2
pour 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
1
ou
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.

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 :
  • 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
Par la suite il te suffira d'aller sur les sites d'installation des firmwares te permettant d'obtenir la configuration dualboot de ton choix.

Lien :

Installation :
Source : https://getomega.dev/releases

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 04 Jan 2023, 11:38
by Smart Crystal
Bravo à la team, ça me fait rire ce jeu du chat et de la souris. :funny:

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 04 Jan 2023, 22:34
by DoOmnimaga
Sachant ce qu'ils ont fait avec le dernier concours de TI-Planet, souhaitons que la team d'Omega ne se fasse pas swatter. :P

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 10 Jan 2023, 23:35
by critor
L'image du bootloader ne semble plus présente dans le dernier Epsilon 20.1.0 pour N0110.

Information toutefois à prendre avec des pincettes, car cela n'empêche pas de faire autrement / pire.

La fonction de mise à jour du bootloader est toujours présente dans le firmware, et non neutralisée.

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 27 Jan 2023, 15:05
by critor
Nouvelle bêta Epsilon 20.2.

Semble à première vue toujours fonctionner avec le dernier bootloader Omega.

Mais installation à vos risques et périls.

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 26 Mar 2024, 13:36
by stevetuc
Its mentioned with the new bootloader a simple press of the keys 1 or 2 on the bootloader screen now allows you to select the slot
How do you access this bootloader screen?

Re: Omega 2.0.4 avec bootloader protégé contre Epsilon 20

Unread postPosted: 26 Mar 2024, 13:38
by critor
stevetuc wrote:How do you access this bootloader screen?

Reset+4 if I remember well.