#Automatisation du downgrade

1 messages · Page 1 of 1 (latest)

brittle cloud
#

Bonjour !

Pour un projet personnel, j'aimerais savoir si c'est possible théoriquement d'automatiser le downgrade depuis les versions supérieures à Epsilon 18.2

Je compterais faire un site web qui, quand on lance l'installation flash automatiquement l'internal et l'external de Epsilon 18.2 (avec le code source de WebDFU). Je sais que ce n'est pas autorisé, mais dans la mesure d'un projet privé ça ne poserait pas de problèmes je pense.

Ensuite pour automatiser Phi, je penserais juste flash un fichier vide pour l'internal et l'external puis automatiquement mettre en recovery pour finalement installer Upsilon (une version un peu custom).

Mes questions sont donc : est ce que c'est réalisable ? Si non, qu'est ce qu'il faudrait obligatoirement faire manuellement ? Est ce que je risque de hard rock ma calculatrice (n0110) en faisant mes tests ? Si vous voyez d'autres choses importantes à mentionner, n'hésitez pas à me le partager !

Merci !

onyx verge
#

Pour moi, c'est réalisable et pas de risque de bricker ta NumWorks, mais je ne sais pas si c'est une bonne idée

brittle cloud
#

Pas une bonne idée au niveau de NumWorks qui l'interdisent ?

#

Dans la mesure où ça serait "privé" encore une fois ils ne devraient pas s'en apercevoir à moins d'utiliser Google Dorks et puis c'est destiné à moi, des amis qui galèrent avec l'installation et d'autres types de mon lycée

#

Je pense pas que NumWorks condamnerait un petit projet comme ça

#

À l'échelle d'Upsilon c'est sûr par contre

white haven
#

alors je recommande peu quand même déjà car c'est impossible d'automatiser plus que ce qui est fait par phi en l'état et que le downgrade est de plus en plus restreint et la distribution de fichiers quel que soit la portée est interdite dès que ça rentre dans un cadre d'action public surtout spécifique au downgrade

onyx verge
#

Le fichier 18-2-0.dfu est protégé par droit d'auteur

tall tendon
#

Oui, le fichier est partagé via IPFS mais l'héberger sur un serveur n'est pas du tout conseillé

brittle cloud
#

...

#

Si tout le monde me dit que c'est une mauvais idée, je vais éviter alors

#

Surtout que j'ai jamais travaillé avec la NumWorks en dev web donc ça serait un peu long pour moi de mettre tout en place. Je l'installerai manuellement

#

Juste j'ai une autre question, est ce que c'est possible de downgrade directement à Epsilon 15 par exemple ? (je crois que la version 15 n'est pas protégée par des droits d'auteurs)

onyx verge
#

Non, sinon il n'y aurait pas besoin de Phi

brittle cloud
onyx verge
#

En gros, Epsilon est passé en mode bootloader depuis Epsilon 16

#

Le bootloader contient le lock et est en read-only (pour résumer)

#

Les versions jusqu'a Epsilon 18.2.0 sont vulnérables à une faille de sécurité (exploitée par Phi)

#

Trois jours après la sortie de Phi, NumWorks a publié Epsilon 18.2.3, qui bloque cette faille

tall tendon
#

est-ce que le lock d'Upsilon est vulnérable à phi ? troll

onyx verge
#

Mais il était possible de downgrade (=remettre Epsilon 18.2.0)

#

Non

onyx verge
#

Mais le bootloader est effaçable (mais pas inscriptible) sur Upsilon

onyx verge
tall tendon
#

oui, j'étais sur place

#

ils ont sorti la 18.2.3 comme ça

onyx verge
#

Enfin bref, ensuite, NumWorks a sorti Epsilon 19 avec son bootloader qui bloque le downgrade

#

Mais son bootloader ne peut être flashé que sur Epsilon 15 et inférieur, à cause de leur sécurité sur Epsilon 16-18 (qui pourraient contourner, mais ils ne l'ont pas fait)

#

Et donc, pour répondre à ta question, Epsilon 15, ne contenant aucun lock, ne peut pas être booté avec le bootloader de E16+ pour deux raisons

#
  1. Avant Epsilon 15, il y avait des données en internal (mémoire où est stockée le bootloader) qui remplaçait le bootloader et qui étaient spécifiques à chaque version
#
  1. La raison la plus importante, c'est que le bootloader de NumWorks n'accepte de booter des kernels signés par NumWorks
#

(le kernel est "root", il a tous les droits)

brittle cloud
#

Ok je vois à peu près

onyx verge
#

Par contre, tu peux exécuter des userlands customs, mais avec des limitations : pas d'accès à la LED, impossible de le reboot après un RESET, …)

tall tendon
#

ce qui explique qu'on peut avoir un système installé mais il bloque sur recovery, non signé, donc boot pas

brittle cloud
#

Mais le downgrade vers 1.18.2 c'est une faille ou c'est juste que comme il est signé NumWorks on peut l'installer, NumWorks s'en fout

onyx verge
#

Mais (théoriquement), je pense qu'il serait totalement possible de réimplémenter Phi en tant qu'userland custom sur Epsilon 18.2.0 et -

brittle cloud
#

parce que on peut signer numériquement un os avec la signature de NumWorks normalement

onyx verge
#

Si tu as la clé privée

brittle cloud
#

Même si je soute que ce soit totalement autorisé

onyx verge
#

Mais c'est impossible

#

Tu as déjà utilisé du chiffrement ?

brittle cloud
#

On peut décompiler l'OS non?

tall tendon
#

sauf si on reverse la clé (ce qui est impossible pour nous)

onyx verge
brittle cloud
#

je sais que c'est chaud mais pas impossible

#

oui mais la clé est dans le .gitignore j'imagine

onyx verge
#

Mais comment tu signes ta version modifiée ?

tall tendon
onyx verge
#

La clé privée est, par définition, privée

brittle cloud
#

Aucune idée mais je sais que c'est possible de signer un fichier avec n'import quoi

onyx verge
#

C'est de la crypto

tall tendon
#

la signature est unique, tu ne peux pas la reproduire

brittle cloud
tall tendon
#

peut-être sur le repo epsilon-core, mais on a pas accès

onyx verge
#

Elle n'est pas dans le code

brittle cloud
#

donc même en décompilant le binpack il y aurait aucun moyen de le retrouver

onyx verge
#

Le chiffrement RSA (nommé par les initiales de ses trois inventeurs) est un algorithme de cryptographie asymétrique, très utilisé dans le commerce électronique, et plus généralement pour échanger des données confidentielles sur Internet. Cet algorithme a été décrit en 1977 par Ronald Rivest, Adi Shamir et Leonard Adleman. RSA a été breveté par l...

tall tendon
#

non, car ce n'est qu'une signature, pas la clé entière

brittle cloud
#

c'est du cryptage, c'est pas hashé?

tall tendon
#

*chiffrement

onyx verge
#

Regarde un exemple de comment marche le chiffrement (ce n'est pas du RSA, mais c'est le même principe)

brittle cloud
#

je connais le chiffrement et les hash vite fait

onyx verge
#

C'est de la signature, une autre propriété, mais qui est liée

brittle cloud
#

Mais même si j'imagine que vous avez déjà du essayer, il pourrais y avoir des failles hypothétiques

onyx verge
brittle cloud
#

Et l'environnement MicroPython il est isolé ?

brittle cloud
onyx verge
onyx verge
#

Si tu accèdes en dehors, ça crash

#

(c'est intégré dans le microcontrôleur)

brittle cloud
#

Et sur Epsilon 19 et 20 on ne peux pas faire grand chose dans le userland

onyx verge
#

Déjà que dans E16/E18, c'était safe, alors ils ont tout bloqué dans E19

brittle cloud
#

ah oui les exploit ils sont pas trop évident...

#

Si j'arrivais à décompiler le binpack d'Epsilon 19, ça aiderait à trouver des exploits, des bugs... où ça servira pas plus que leur GitHub ?

onyx verge
#

La solution la plus probable, mais qui ne va surement pas arriver, c'est que NumWorks leak sa clé ou qu'ils unlock la N0110 en décidant de n'autoriser que la N0120 ou quelque chose du genre…

onyx verge
#

(ils ont viré le kernel du git dans E19)

brittle cloud
#

D'ailleurs pour la n0120, ça veut dire quoi qu'elle est bloquée matériellement ? C'est pas un programme, c'est directement inscrit dans le microprocesseur ?

onyx verge
brittle cloud
#

et le kernel on n'y a pas accès en écriture ?

brittle cloud
#

et dessus on est root ?

onyx verge
#

Oui

#

Mais il est signé

brittle cloud
#

Mais à ce moment là on peux pas l'overwrite avec un kernel custom en rust ou même en C++ qui lui pourrai nulock toute la calculatrice ?

onyx verge
#

Comment ?

#

Tu écris comment dans la flash ?

brisk meteor
#

Il est signé donc si tu l'écrase par du code perso tu poura plus lexecuter ?

onyx verge
#

Oui

#

Et tu auras un écran numworks.com/rescue

#

Comme quand le downgrade est bloqué

brittle cloud
#

Alors je connais pas très bien le fonctionnement de la NumWorks mais pour moi le kernel c'est la base de l'OS et si tu as ton propre kernel, tu es root mais vu qu'on est déjà root dessus.... ça change rien effectivement

#

Mais comme le kernel est signé, si on overwrite tout le kernel sauf la signature, ça marcherait en théorie, non ?

brisk meteor
onyx verge
#

La signature est vérifiée

#

C'est de la crypto

brisk meteor
#

de comment tout sa c secure

brittle cloud
#

Bon je vais lire tout ça (il y en a beaucoup à lire et si je pense à des trucs intéressant après, je vous en reparlerai)

#

Quoique j'ai une dernière idée

#

Il y a une partition de recovery sur NumWorks (comme sur Android)

#

?

brisk meteor
#

Bah le numworks.com/rescue

onyx verge
#

Si tu veux voir ce qu'on avait cherché quand Epsilon 16 était en bêta sans le code : https://tiplanet.org/forum/viewtopic.php?f=102&t=24973

onyx verge
#

Qui n'est pas inscriptible

brisk meteor
brittle cloud
#

Donc c'est pas un vrai recovery c'est juste un truc qui te dit "branche ta calculatrice à ton ordi"

onyx verge
#

Le bootloader lance quand même le DFU

brisk meteor
brittle cloud
#

Oui c'est vrai

onyx verge
#

Comme si tu étais sur l'écran "La calculatrice est connectée", à quelques différences techniques près

brisk meteor
#

Le dfu on peut lire et écrire des trucs dans la mem ram ?

onyx verge
#

Oui

brisk meteor
#

vu que c comme sa qu'on envoie des scripts python

#

ya pas moyen "d'écraser" le code qui tourne sur la calc?

brittle cloud
#

donc on peux pas modifier le dfu pour qu'il accepte des os qui ne sont pas forcément signé NumWorks?

onyx verge
#

Le DFU, c'est ce qui écrit

#

Qui accepte tout en flash externe

#

Tu peux flasher ce que tu veux

brittle cloud
#

ah je vois

onyx verge
#

C'est le bootloader qui va refuser de booter

brittle cloud
#

j'ai capté j'ai capté

#

donc tout le problème viens du bootloader

onyx verge
#

Oui

brittle cloud
#

Et l'OS ne communique jamais avec le bootloader?

#

Si, quand on reset la caluclatrice

onyx verge
#

Non, je ne pense pas

brisk meteor
brittle cloud
#

Et ça serait pas possible quand on utilise la fonction "restaurer la caluclatrice" dans les paramètres de modifier le bootloader ou jsp

brisk meteor
#

genre après que le bootloader verifie l'os sa fait l'inverse

onyx verge
brittle cloud
#

il se passe quoi au niveau de la calculatrice quand on utilise cette fonction ?

onyx verge
#

C'est comme le downgrade

#

Même process

#

Juste que le site de NumWorks flash la dernière version d'Epsilon et le downgrade flash E18.2.0

brittle cloud
#

donc en aucun cas ça permettrai d'écrire du code dans le bootloader

onyx verge
#

Non

brittle cloud
#

bon j'ai des posts et des pages wikipédia à lire...

#

et un blog

#

a +

brittle cloud
#

@onyx verge la version 16 d'Epsilon est signée NumWorks, et mis à part la version 16.4.3, la calculatrice reste unlock c'est bien ça ?

#

Parce que dans ce cas là, pourquoi ne pas directement flasher cette version ?

#

Le bootloader ne se downgrade pas ?

tall tendon
#

non

brittle cloud
#

argh

#

et le bootloader, on n'a pas les perms pour le wipe depuis le userland ou le kernel ?

tall tendon
#

non

#

le principe de l'userland, c'est d'être sandbox

brittle cloud
#

Bon je me doute que si vous avez pas trouvé d'autre manière plus simples d'unlock la calulatrice, je vais galérer mais c'est vrai que c'est bien foutu leur protection

brittle cloud
tall tendon
#

car il exploite un bug

#

plutôt une erreur de développement

brittle cloud
#

certes

brittle cloud
#

Sinon @onyx verge pourquoi est ce que quand tu installes Epsilon 20 après upsilon ça lock définitivement la nw ??

tall tendon
brittle cloud
#

Parce que si j'ai bien compris, si on a jamais installé upsilon, même si on est sur E20 on peut downgrade

#

Mais si on l'a déjà c'est mort

tall tendon
#

Depuis E20 on peut downgrade si:

On l'a installé depuis une version d'epsilon entre 16.3 et 18.2.3 (sauf 16.4.3)
Raison: le bootloader numworks est déjà présent dans cer versions et ne peut pas être mit à jour, E19 a ajouté cette possibilité et a bloqué l'exécution des anciennes versions.
Le bootloader étant déjà présent, il n'a pas pu être remplacé.
En 15.5 (Upsilon est basé sur 15.5) et en dessous, il n'y a pas de bootloader, donc E20 va l'installer, en bloquant tout.