Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Ajouter CasioPython en mode examen
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Ajouter CasioPython en mode examen

Posté le 05/09/2018 12:45

Pour que CasioPython soit disponible en mode examen, il faudrait faire un OS modifié qui l'inclut.

Niveau technique, ça m'a pas l'air très difficile :
- Mettre le code binaire de CPy dans l'OS
- Soit ajouter un lien vers CPy dans le menu, soit modifier le lien de E-Con2 (qui sert à rien) pour qu'il pointe vers CPy.
- Changer l'icône, mais ça c'est assez facile dès lors qu'on sait où la trouver.

Par contre apparemment il y aurait des problèmes au niveau du copyright. (mais pour moi, on viole déjà la règle "ne pas faire de reverse engineering" rien qu'en flashant des OS custom...)

Du coup ce topic est pour discuter de comment réaliser cette manipulation tout en ne se prenant pas un procès.
(ah et tant qu'on y est, peut être ajouter Eigenmath )


Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 05/09/2018 21:25 | #


Non, pas de fonctions exotiques. Si une bonne partie du travail est deja fait, ca change bien sur la perspective. Mais quid du mode examen?

Pour le mode examen, je pense que le travail de reverse-engineering de Critor a permis de localiser la zone de code qui gère la LED, non ? Dans ce cas il doit suffir de copier ce que l'OS fait. Après tout je ne fais que ça. xD

Je prefererais aussi de loin un bon accord avec Casio (signature cryptographique par exemple, qui pourrait obliger TI et HP a suivre)

Peut-être peut-on trouver dans nos communautés quelqu'un qui soit assez calé en cryptographie pour nous fournir un avis éclairé sur la faisabilité de la signature d'add-ins ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 05/09/2018 21:26 | #


Lephenixnoir a écrit :
Merci de me corriger, ça fait du bien. Y a-t-il une documentation du format de stockage ? Combien de versions d'OS ont été testées avec ce mécanisme ?

Pas trouvé de doc. Le mieux serait de revoir mon code.
Toutes les versions Graph 35+USB SH3 ont été testées, et tous les OS Casio Graph SH3/SH4 utilisent ce format.

Le voilà par exemple dans l'OS Graph 75+E 2.09 :


On voit bien les offsets de décroissants dans le sens de lecture, et ils sont suivis de la taille de chaque langue également sur 4 octets.

Lephenixnoir a écrit :
Enfin, comment savez-vous que modifier le tableau ne casse rien d'autre dans le système.

C'est une petite liste de pas grand chose qui ne référence que les langues (sauf l'anglais), elles-mêmes situées en fin d'OS. Pas grand chose à casser à patcher ça.
Cakeisalie5 En ligne Ancien administrateur Points: 1960 Défis: 11 Message

Citer : Posté le 05/09/2018 21:26 | #


TI fait déjà de la signature d'add-ins, c'est d'ailleurs ce qui a cassé KnightOS dans son développement.
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 05/09/2018 21:50 | #


Je ne pense pas que c'est difficile de signer un addin avec du RSA. On calcule un grand entier a avec les octets de l'addin (un hash), puis on calcule b=a^d mod n ou d est la clef privee RSA de Casio, on l'ajoute a l'addin. En mode examen, l'OS calcule b^e mod n ou e est la clef publique correspondant a d (e et d sont inverses modulo l'indicatrice d'Euler de n) et on verifie que c'est la meme chose que le calcul du hash donnant a, si oui l'OS lance l'addin, sinon il refuse de lancer.
Je ne suis pas un specialiste en crypto ceci dit.
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/09/2018 12:53 | #


Ça a l'air pas mal. Est-ce qu'on a plus de détails sur la façon dont TI le fait ? Plus on leur met d'arguments sous les yeux, plus on a de chances de les convaincre.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 06/09/2018 13:02 | #


Pourquoi vous voulez mettre une signature cryptographique (qui va rendre le reverse engineering encore plus difficile) ?

Franchement je pense pas que casio soit d'accord avec ce port : s'ils voulaient mettre MPy sur graph 35+E, ils ont pas besoin de moi. C'est une décision de leur part de restreindre le python au haut de gamme.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/09/2018 13:06 | #


Zezombye a écrit :
Pourquoi vous voulez mettre une signature cryptographique (qui va rendre le reverse engineering encore plus difficile) ?

Situons un peu le contexte... il s'agit d'autoriser des add-ins en mode examen.

Il est clair que les add-ins autorisés doivent être sélectionnés par Casio si l'on veut proposer quelque chose qui a la moindre chance d'être débattu. Et avant même de savoir comment ils sont choisis, se pose une question sérieuse : comment la calculatrice qui passe en mode examen peut-elle distinguer un add-in spécialement autorisé par Casio d'un autre ?

La réponse est : une signature cryptographique. Si Casio signe les add-ins autorisés, alors la calculatrice peut savoir d'une façon sûre (grâce à la magie de la cryptographie) si les add-ins présents sont autorisés ou non.

Le reverse-engineering ne devrait pas être impacté selon toute vraisemblance puisque le code compilé restera intact. Cela ne fait qu'ajouter un niveau de sécurité ; pour nous, c'est tout bénef. Usurper sera plus dur (sauf à casser RSA ?) mais de toute façon notre objectif n'est pas là, bien au contraire.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/09/2018 13:33 | #


Pour la signature, je confirme que c'est très facilement faisable. Par contre ça nécessite une màj du système, et ça se contourne "relativement" facilement avec un poil de rétro-ingénierie si c'est fait de manière évidente.
Par exemple, il pourrait suffire de remplacer le saut à l'adresse de la fonction qui vérifie la signature à l'adresse qui lance l'addin pour que ça foire (en gros un +x à une adresse bien choisie).

Il faut savoir que fonctionnellement parlant, ce n'est pas possible de faire un système fiable à 100 %. La preuve : tous les logiciels finissent pas être crackés, même bourrés de DRM. Il y a donc une grosse partie d'acceptation du risque de fraude.
Mais ça c'est pareil avec le mode examen en général, Casio ne peut pas assurer à 100 % que personne n'ira publier un truc qui permet de sortir du mode examen par une combinaison de 2 touches, par exemple
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 06/09/2018 14:05 | #


Ce type d'attaque devrait deja pouvoir etre mis en place, il doit bien y avoir du code quelque part qui teste si on est en mode examen ou pas quand on essaie de lancer l'addin et qui le lance uniquement hors mode examen, qu'est-ce qui empecherait de bypasser ce code deja maintenant?
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 06/09/2018 14:13 | #


Si casio doit autoriser les addins au cas par cas, autant qu'ils les implémentent eux-mêmes. Et surtout, qui leur dit que l'auteur d'un des addins autorisés n'ajoute pas une backdoor du mode examen ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/09/2018 14:20 | #


Casio n'a pas forcément envie d'implémenter un CAS complet sur Graph 90. Ça serait un gros projet très ambitieux... alors qu'il en existe déjà un.

Quant aux possibilité de backdoor, le but est que ce soient eux qui compilent les add-ins autorisés. On ne fournit que le code, eux ont le contrôle sur tout ce qui filtre. De toute façon il n'y a qu'eux qui pourraient les signer.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 06/09/2018 17:01 | #


Casio n'a aucune envie d'implementer un CAS, le CAS de la classpad est externalise, chez Saltire je crois. TI non plus, c'etait Derive. HP non plus, c'est moi. Ensuite il y a un minimum de confiance a avoir, ils ne vont pas relire 200 000 lignes de code. Quel interet aurais-je a installer une backdoor?
Le probleme c'est de convaincre Casio qu'il gagnera plus a avoir une Graph 90+e avec CAS et programmation compatible Python bien plus complete ou une monochrome avec Eigenmath et addin Python que sans: c'est un argument vis-a-vis de la concurrence au meme prix.
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/09/2018 17:06 | #


Le probleme c'est de convaincre Casio qu'il gagnera plus a avoir une Graph 90+e avec CAS et programmation compatible Python bien plus complete ou une monochrome avec Eigenmath et addin Python que sans

Je crois que tu mets le doigt sur le bon point ici... sauf s'ils en profitent pour changer le prix, mais ça j'ai des doutes.

Question beaucoup plus pragmatique étant comment les contacter. Il faut que je demande à Dark Storm qui on a comme interlocuteurs, de mémoire Casio France n'est pas très réceptif mais Casio Europe beaucoup plus. Mieux vaut peut-être aller directement voir les seconds.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 06/09/2018 17:15 | #


Je pensais discuter avec Casio France lors de l'APMEP en octobre prochain a Bordeaux, mais si on peut contacter quelqu'un avant c'est mieux.
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 06/09/2018 18:24 | #


Quant aux possibilité de backdoor, le but est que ce soient eux qui compilent les add-ins autorisés. On ne fournit que le code, eux ont le contrôle sur tout ce qui filtre. De toute façon il n'y a qu'eux qui pourraient les signer.


Du coup tu veux qu'ils distribuent des addins officiels (comme geometry et physium) ? Faudrait que l'OS de la graph 35+E soit mis à jour pour accepter des addins aussi, ce qu'ils ne veulent pas forcément. Je pense qu'ils l'intégreront dans l'OS (mais ça revient au même).

Par contre, honnêtement, je suis pas super chaud pour confier mon code à Casio : déjà j'ai aucune idée de s'ils vont virer mon nom ou pas (genre remplacer Zezombye par "casio computer co" dans le message de bienvenue de l'interpréteur), apparemment la GPL v3 le permet : https://opensource.stackexchange.com/questions/1786/removing-the-original-copyright-line-from-footer

Ensuite, vu les décisions douteuses qu'ils ont faites avec leur interpréteur (grosse police, majuscules par défaut) j'ai pas envie qu'ils modifient mon UI pour mettre la leur qui est moins bien.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/09/2018 20:07 | #


Si tu n'as pas envie de leur partager ton code ou que les conditions sur lesquelles on pourrait hypothétiquement s'accorder avec Casio si tout se passe bien ne te plaisent pas... pas de problème, mais ça ne m'empêchera pas de faire mon propre port de MicroPython.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 506 Défis: 0 Message

Citer : Posté le 06/09/2018 20:35 | #


Si Casio a choisi la police de taille maximale sur la 90 c'est peut-etre dans l'idee de porter leur UI et MicroPython sur les monochromes.
Concernant le changement de notice de copyright, la GPL ne permet absolument pas de s'attribuer le travail d'un autre apres modification, elle dit qu'il faut attribuer a chacun ce qu'il a fait ou modifie.
Sur la distribution d'un addin signe, j'ai un doute, parce que la GPL garantit le droit d'un tiers de modifier le logiciel sous licence GPL et de l'utiliser, mais evidemment l'addin modifie ne serait plus signe. Ca necessiterait peut-etre une exception.
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/09/2018 20:58 | #


Zezombye a écrit :
Par contre, honnêtement, je suis pas super chaud pour confier mon code à Casio : déjà j'ai aucune idée de s'ils vont virer mon nom ou pas (genre remplacer Zezombye par "casio computer co" dans le message de bienvenue de l'interpréteur), apparemment la GPL v3 le permet : https://opensource.stackexchange.com/questions/1786/removing-the-original-copyright-line-from-footer

Je pense que tu as mal choisi la licence. Si tu ne veux pas que le code soit réutilisé sans que l'on cite ton nom, c'est pas une GPLv3 qu'il te faut.

Le problème étant que MicroPython étant sous GPLv3, t'as pas le choix
Faut faire avec
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 07/09/2018 10:53 | #


Je pense que tu as mal choisi la licence. Si tu ne veux pas que le code soit réutilisé sans que l'on cite ton nom, c'est pas une GPLv3 qu'il te faut.


Ce serait laquelle du coup ?

MicroPython est sous MIT, c'est Edit qui est sous GPL v3.

Du coup il faudrait déjà envoyer un mail à Casio pour savoir s'ils comptent faire un MPy pour graph 35 (sur TI-P, quelqu'un a déjà envoyé un mail pour la FX-CG 10/20, ils ont dit non car c'était plus vendu).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Cakeisalie5 En ligne Ancien administrateur Points: 1960 Défis: 11 Message

Citer : Posté le 07/09/2018 11:01 | #


J'en profite pour dire qu'un copyright avec un pseudonyme n'est pas un copyright valide et n'a aucune valeur, tout comme un nom de team ; il faut un vrai nom.
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 07/09/2018 11:22 | #


Apparemment, ça a de la valeur :
https://askubuntu.com/questions/46380/how-do-i-use-gpl-and-mit-licenses-correctly
https://opensource.stackexchange.com/questions/4023/must-authors-name-be-included-in-gnu-gpl-v3

Un peu moins qu'un vrai nom, mais je pense que si je mets "Copyright (c) Zezombye <Email address, replace the 【arobase】 with a @ and ▶ with a . : magmacubenetherrique【arobase】gmail▶com>" ça devrait le faire, je peux facilement prouver que je suis le détenteur de mon email.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 149 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd