Poster un nouveau sujet Poster une réponse
prgm Code
Auteur Message
chr4
Invité
Posté le : Ven 10 Jui 2011, 18:15   Citer 

Bonjour à tous,

En passant sur le forum, j'ai vu beaucoup de demande de programme permettant de limiter l'accès à un autre programme.
Je sais qu'il existe déjà des programmes demandant des identifiants, etc. Mais aucun, au grand aucun, ne prend la peine de cacher justement le mot de passe.
Aussi voilà mon programme :

1) Instructions préliminaires :


J'ai crée deux versions. Une OPTIMALE pour les calculatrices TI-82 Stats.fr,
et une moins sécurisée mais plus compatible.

Les listes (TI-82 Stats.fr) :
Z(1) = Code
Z(2) = touche 1
Z(3) = touche 2
Z(4) = touche 3
Z(5) = touche 4
Z(6) = produit des touches 1,2,3 et 4
Z(7) = code de remise à 0 en cas de perte du code.
Important : Le "l" dans la syntaxe du code (ex : lZ(A+1) )correspond à la déclaration d'une liste [2nde][stats]<OPS>[alpha][matrice] (je sais, c'est long à taper)
Taille du programme : 213 octets.


2) Programme Code, version 1.0 :



Code

:ListesDéfaut Z     #création de la liste Z, où seront stockées les données.
:8->dim(lZ)
:24024->lZ(7)       # Repère 1
:1->A
:EffEcr
:Disp "CODE ?"
:While A<5
:0->K
:While non(K)
:codeTouch->K
:End
:Output(1,7+A,"*"
:K->lZ(A+1)
:A+1->A
:End
:lZ(2)*lZ(3)*lZ(4)*lZ(5)->lZ(6)
:If non(lZ(1))         #Premier usage ou après remise à zéro
:lZ(6)=lZ(1)
:If lZ(6)=lZ(1)        #Code correct
:Return
:If lZ(6)=lZ(7)        #demande de remise à zéro
:Then
:0->lZ(1)
:Disp "Reset"
:Stop                  #Important : Le programme n'autorise pas l'accès sans code.
:End
:Disp "Erreur"         #Mauvais code.
:Stop




3) Usage :
Installation :
Si vous voulez protéger un programme, allez dans son code (il ne doit pas être protégé pour ça) : [prgm]<EDIT> Ouvrez le programme.
Puis, vous devez rajouter une courte instruction au TOUT début du code (faites [2nde][suppr][entrer] pour créer une ligne vide au tout début. C'est important qu'aucune instruction ne soit devant.
Ensuite, allez dans [prgm]<EXEC> et faites [entrer] sur le nom du programme code
Enfin, quittez [2nde][mode]

Utilisation :
La première utilisation, le programme affiche "Code ?" lorsque vous lancez le programme protégé. Or, il n'y a pas de code. Vous devez justement en entrer un.
Un code est une suite de 4 pressions de touches (peut importe l'ordre) du clavier. TOUTES les touches SAUF [ON] sont utilisables. elles peuvent l'être plusieurs fois.
Tapez donc votre code. (exemple de code : [entrer][entrer][entrer][entrer] ou[2nde][annul][alpha][5] les touches [2nde] ou [alpha] comptent comme une pression. un dernier code possible, parmi l'énormité de possibilités : [sto][3][6][graphe])
Le code autorise ensuite l'accès au programme protégé.
En cas d'oubli du code : tapez [f(.x.)][fenêtre][zoom][trace] (1)
Ceci est un code par défaut. Il vous faudra ensuite relancer le programme et entrer un nouveau code, comme vous l'avez déjà fait au début.
Important :
Ne tapez pas [f(.x.)][fenêtre][zoom][trace] (1) comme code, si votre code de réinitialisation est le même. En cas de problème, effacez la liste Z (ou là où sont stockées les données du programme.
(1) : problème d'affichage à cause des smileys. Il s'agit bien de la touche 11, f ( x ) en haut à gauche.

4) Pour les pros :

Le code de réinitialisation est modifiable au niveau du repère 1. Vous devez changer ce nombre. En lisant le code, vous avez compris que ce nombre est un produit de facteurs (codeTouche). Pour trouver rapidement le produit de votre nouvelle combinaison de touches, tapez là à la place du code (ça va mettre code erroné), et consultez la donnée Z(6).

5) Code très compatible :

Code
:8->dim(L3) !!
:24024->L3(7)
:1->A
:ClrHome
:Disp "CODE ?"
:While A<5
:0->K
:While not(K)
:getKey->K
:End
:Output(1,7+A,"*"
:K->L3(A+1)
:A+1->A
:End
:L3(2)*L3(3)*L3(4)*L3(5)->L3(6)
:If not(L3(1))
:L3(6)=L3(1)
:If L3(6)=L3(1)
:Return
:If L3(6)=L3(7)
:Then
:0->L3(1)
:Disp "Reset"
:Stop
:End
:Disp "Erreur"
:Stop



6) Divers :
J'ai peur d'avoir fait quelques erreurs sur le code très compatible. Notamment sur le getKey.
Attention pour le code très compatible à ne JAMAIS utiliser la liste L3. Sinon, remettez à zéro, ou effacez la liste.

Ce code, bien que très évolué, ne protègera que de l'exécution du programme par un débutant.
Pour une meilleure protection, vous devez protéger contre les modifications le programme Code, ainsi que celui qui doit être protégé. Vous pouvez également modifier l'emplacement de stockage des données (après tout, c'est pas si compliqué), vers un espace le plus innocent possible (exemple, la matrice A ou plus compliqué, une image.

A Bientôt !
chr4

  Haut de page Bas de page 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Ven 10 Jui 2011, 20:12   Citer 

voila un bon mot de passe pour les contrôles ^^, tu protèges tout dabord le prog, avec TI graph link ou se que tu veux, puis tu mets ça au début du progr: ( je sais, se n'est pas ce que tu voulais faire mais qu'importe je le met quand même winkle.gif)


Code

:"progrm:MATHS               >by UGO<
EffEcr
Disp "            Done
Input "",Cha ne1
If Cha ne1ø"++
Then
Disp expr(Cha ne1
Output(8,1," "
Stop
End
If Cha ne1="++
Then
Goto 0
End
Lbl 0    //: le prog



quand tu cliques sur le programme, ça te met "Done", ou "fait", puis si tu met ton code (++ pour moi) et bien tu ouvres le programme, sinon c'est comme l'écran de calcule winkle.gif

----------------------
&quot;Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi .&quot;

&quot;L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
&quot;
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 10 Jui 2011, 20:43   Citer 

L'inconvénient du produit, c'est qu'il existe plusieurs séquences pouvant donner un même produit. (mais ce n'est ni dramatique ni systématique)

Autre méthode immaginée sur le gaz :
Code
EffListe L1
For(W,1,6        // choisissez le nombre de touches
Repeat K
codeTouche->K
End
K->L1(W
End
If somme(L1=/={11,21,31,41,51,61  // verrifier code
Stop                              // stop si code faux
EffListe L1
// programme ou rien(Return sous-entendu)


Le code ne peut être copié qu'en éditant le programme. Donc protégez le avec PROTECT

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
chr4
Invité
Posté le : Ven 10 Jui 2011, 21:12   Citer 


Citer : linkakro
L'inconvénient du produit, c'est qu'il existe plusieurs séquences pouvant donner un même produit. (mais ce n'est ni dramatique ni systématique)


Oui je sais. Mais franchement, je te mets au défi de trouver 2 séquences de combinaisons de 4 touches différentes qui donnent le même produit.
(en sachant qu'on utilise seulement une trentaine de touche, ayant des numéros qui ne se suivent pas ! Personnellement, je ne vais pas essayer de créer un programme capable de calculer ça. Est-ce qu'il faut être en base 6 ? Oui car il y a des trous, non car le produit se fait en base 10.
Je pense même que pour un petit nombre de possibilités comme sur la calculette, le risque d'interférence est mathématiquement impossible).

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 10 Jui 2011, 21:40   Citer 

Défi relevé :
[fenêtre][mode][?][?]ou [Y=][flèche gauche][?][?] //remplace les [?] par des touches quelconques, tant que ce sont les mêmes à gauches et à droite (11*22*x*y=264xy et 11*24*x*y=264xy).

ça te suffit ou tu en veut d'autres de combinaisons possibles?


Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 11 Jui 2011, 11:48   Citer 

Voici quelques autres combinaisons égales (pour l'instant que à 2 touches (les deux autres étant peu importe) et même là non exaustive (je n'ai pas encore étudié les cas avec [flèche droite] ) )
[fenêtre][mode]=[Y=][flèche gauche]
[mode][mode]=[Y=][var]
[fenêtre][matrice]=[2nde][flèche gauche]
[supr][x,t,théta,n]=[Y=][)]
[mode][matrice]=[Y=][6]
[mode][matrice]=[2nde][var]
[mode][sin]=[Y=][( - )
[x,t,théta,n][matrice]=[2nde][)]
[mode][virgule au-dessus du 7]=[alpha][var]
[matrice][matrice]=[2nde][6]
[mode][4]=[maths][var]
[x,t,théta,n][virgule au-dessus du 7]=[alpha][)]
[matrice][sin]=[2nde][( - )
[matrice][virgule au-dessus du 7]=[alpha][6]
[matrice][4]=[maths][)]
[sin][virgule au-dessus du 7]=[alpha][( - )
[x,t,théta,n][0]=[^-1][)]
[matrice][4]=[maths][6]
[sin][4]=[maths][( - )
[matrice][0]=[^-1][[6]
[sin][0]=[^-1][( - )

Sauf étourderie(s) de ma part, cette liste contient l'integralité des sequences de 2 touches ne comprennant pas [flèche droite] et dont le produit est égal. Elles ont été optenues plus par la force brute qu'autre chose, donc si vous y tenez je peut finir pour 2 touches mais je n'yrais pas plus loing (déja que d'étudier 6 listes de 100 termes c'est long, alors ne parlant même pas de plus.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 11 Jui 2011, 13:37   Citer 

Avec 6 touches c'est bien plus rare qu'à deux touches. Comme je l'ai dit ce n'est pas systématique.

En revanche il y a plusieurs ordres (commutations) pour une même combinaison. (720 séquences pour chaque combinaison et bien plus pour chaque produit)

Même s'il y avait deux combinaisons valides, ce serait 2 parmi environ 19 millions de combinaisons.
( En tout il y a 49^6 = environ 14 milliards de séquences (tous ordres et combinaisons compris) )

Le même genre de probabilité que les clés d'activation de certains logiciels comme EAgames :
De nombreuses solutions MAIS des possibilités encore bien plus nombreuses.

De plus et heureusement : connaître le produit final ne suffit pas à déterminer une séquence valide (sauf avec les bons outils).
Cela rend impuissante une simple lecture de LZ.



Stop à cette polémique.

----

Que pensez-vous de ma méthode pour le programme ?

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Sam 11 Jui 2011, 14:33   Citer 

Pas mal mais tu peut raccourcir la vérification de fin:


Code
If 216=/=sum(L1
Stop



Sangohan38

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 11 Jui 2011, 15:48   Citer 

J'avais oublié de mettre un opérateur global pour que le résultat du test ne soit pas une liste. C'est modifié.

Ta solution avec la somme est malheureusement mauvaise :
il suffit de remplacer une touche de code X par une touche de valeur X+D puis idem avec Y et Y-D, pour avoir une nouvelle combinaison à la même somme.
Le nombre de solutions est ici incalculable (énorme).

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 11 Jui 2011, 18:50   Citer 

la seule solution que je connaisse pour empêcher la moindre combinaison équivalente, ce serrait d'utiliser des nombres premier exclusivement et en associer un à chaque touche ([Y=]=2 ; [fenêtre]=3;[zoom]=5;...]) et d'en faire le produit. Si deplus on tient à ce que l'ordre soit respecté, il faudrait rechoisir les équivalences pour chaque caractère.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
chr4
Invité
Posté le : Dim 12 Jui 2011, 13:45   Citer 

D'accord Sandro,
J'ai été un peu imprudent sur le coup.
Si on utilise un nombre premier de touches entrées, ça réduit considérablement les interférences, non ?

Code

:1->A
:Disp "CODE ?"
:While A<7
:0->K
:While non(K)
:codeTouch->K
:End
:Output(1,7+A,"*"
:K->lZ(A+1)
:A+1->A
:End
:lZ(2)*lZ(3)*lZ(4)*lZ(5)*lZ(6)*lZ(7)*lZ(8)->lZ(9)
:If lZ(9)=lZ(1)        #Code correct
:Return



Avouez sinon que le programme est plutôt bien fait cry.gif

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 12 Jui 2011, 20:59   Citer 

Oui le programme est bien
(mais personnellement je préfère le test d'égalité entre deux liste.)

Je ne suis pas sûr qu'un nombre premier de touches change quelque chose mais ça ne coûte rien d'essayer.
Ce sont des nombres premiers dans le code de chaque touche qui seraient vraiment efficaces.


D'autre part nous pouvons simplifier ton dernier programme.

Code
1->dim(lZ(1
Disp "CODE ?"
For(A,1,7
Repeat K
codeTouch->K
End
Output(1,7+A,"*
K->lZ(A+1)
End
lZ(2)*lZ(3)*lZ(4)*lZ(5)*lZ(6)*lZ(7)*lZ(8)->lZ(9
If lZ(9)=lZ(1)        #Code correct
Return
Stop      // sinon la calculatrice retourne quand même au programme sécurisé


J'aurais pu encore simplifier la fin, mais comme ça la valeur de réinitialisation demeure dans lZ(9) pour les simplets qui ne savent pas la calculer.

Si vous voulez simplifier, et si vous vous sentez cappable de calculer le produit clé seuls :

Code
1->dim(lZ(1
Disp "CODE ?"
For(A,1,7
Repeat K
codeTouch->K
End
Output(1,7+A,"*
K->lZ(A+1)
End
If prod(lZ)=/=lZ(1)^2        // code faux
Stop
1->dim(lZ
Return




PS : avec le programme de facteurs, nous sommes en mesure de craquer facilement la combinaison en fonction du produit contenu dans lZ(1). tongue.gif
même si les codes ne sont pas des nombres premiers.


----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 13 Jui 2011, 9:46   Citer 

Où alors

Code
Effliste L1
Disp "CODE ?"
For(A,1,8
Repeat K
codeTouch->K
End
{ct n°1, ct n°2, ct n°3, ... ,ct n°8 -> L2   //ct n°X représente le code associé à la touche corecte à appuyer)
K [différend de] L2(A -> L1(A
Effliste L2
Output(1,7+A,"*
End
If somme(L1        // si une touche à été fausse ou appuyée au mauvais moment
Return
EffListe L1



J'ai écrit ce programme de manière à laisser les données les moins vulnérables possibles (la liste contennant les codes corects ne reste pas même une seconde en mémoire et même la liste contenant le fait que la réponse est juste ou fausse est suprimée à la fin du prog).

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 13 Jui 2011, 13:13   Citer 

Dans la même lignée que cette proposition et aussi sécuritaire, j'avais déjà proposé celle-ci qui n'a pas été remarquée.
Peu importe que L1 reste à la fin de celui-ci, cela ne donne pas le code valide pour autant :

Citer : linkakro

Code
EffListe L1
For(W,1,6        // choisissez le nombre de touches
Repeat K
codeTouche->K
End
K->L1(W
End
If somme(L1=/={11,21,31,41,51,61  // verrifier code
Stop                              // stop si code faux
EffListe L1
// programme ou rien(Return sous-entendu)



Je ne jure que par mon idée minied.gif mais je félicite quand même votre inventivité ! bigmouth.gif

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 13 Jui 2011, 16:21   Citer 

Non, mais si on tient vraiment à percer le mot de passe, si L1 demeure, il suffit de 50 aissais pour trouver le bon code alors que si l'on suprime la liste, il faut en plus couper au bon moment.

Sandro

PS : étant encore un peu fatigué quand j'ai posté le programme, je n'ai plus pensé que tu en avais déjà posté un de presque identique.

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
KevinJungYong
Invité
Posté le : Mar 04 Oct 2011, 16:05   Citer 

Le premier programme ne marche pas chez moi ... Le programme se lance pour n'importe quel code, pourtant je pense avoir tout bien recopier :/

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 04 Oct 2011, 20:11   Citer 

Première erreur classique : le petit "l" pour écrire "lZ"
Ce "l" est dans le menu liste ou le catalogue.
(existe à partir de la 82stat)

Un des deux derniers programme que j'ai posté devrait te convenir et être plus simple à recopier que la version initiale du sujet.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink