linkakro le 11/07/2011 à 19:14
Deux façons complémentaires de
PROTEGER les programmes.
EDIT 27/6/12 : Le récent programme
HIDE de Matrefeytontias permet de
CACHER ses programmes.
Cette nouveauté est mentionnée en partie 4 de mon message.
Cependant il semble innutile de protéger un programme destiné à être caché.
REMARQUE : J'utilise le lien d'un article contenant à la fois Protect et Hide lorsque je veux indiquer Hide.
EDIT 13/7/12 :
J'ai séparé les codes 1 et 2 en deux sous-parties, puis j'ai ajoûté la méthode "saisie invisible" et la méthode "carte bleu", puis un lien vers l'article de Vibra.
EDIT 12/5/2013 :
ajouté des codes à répétition
EDIT 1/7/2013 :
ajouté la partie 1-0- pour l'insertion
EDIT 15/11/2013 : j'ai exprimmé de nouvelles des idées sur la défense de programmes contre l'échange.
http://tout82.free.fr/forum/sujet.php?sujet=3939
Cela pourrait éventuellement être ajouté ici, d'ailleurs.
1-Placez un code au début de vos programmes.
Il y a de nombreux programmes sophistiqués sur internet. Choisissez un programme de code parmi ceux que je propose dans cette première partie OU utilisez en un autre qui vous convienne encore mieux.
1-0- Comment insérer un de ces programmes au début d'autres
Pour executer un programme, MDP par exemple, à l'intérieur d'un autre :
Code
prgmMDP // prgm est dans le menu prgm
Mais cela provoquera un plantage si on supprimmait le programme MDP, ou bien un pirate pourrait le remplacer par un programme vide.
Pour éviter les problèmes,
copiez le programme MDP au début de l'autre programme avec la fonctionnalité Rappel/Recall.
(2nde+sto+prgm+gauche+choix+entrer+entrer)
Copie de programme et bug 82statfr.
1-A- Code Visible (simple)
Vous pouvez utiliser un bête code à texte ou nombre, mais ce n'est pas efficace car on peut lire par dessus votre épaule.
Celui-ci pour un nombre.
Code
Input A
If A=/=1234 // code
Stop
DelVar A
Avec répétition
Code
Repeat A=1234
Input A
End
DelVar A
Celui-ci pour n'importe quel code sous forme de texte.
Code
Input Str1
If Str1=/="1234 // "code
Stop
DelVar Str1
Avec répétition
Code
Repeat Str1="1234
Input Str1
End
DelVar Str1
1-B- Code 49 Touches
A partir d'ici on veut optimiser le code avec une liste, et ne rien afficher à l'écran.
Celui-ci permet d'utiliser les touches du clavier, et donc aucun code n'est visible à l'écran.
¤CODE
Vous devez appuyer sur une série de touches. (n'importe lesquelles)
Code
ClrList L1
For(W,1,6 // 6 est le nombre de touches
Repeat K
getKey->K
End
K->L1(W
End
If sum(L1=/={11,21,31,41,51,61 // codes des touches
Stop
ClrList L1
Pour ceux qui ne connaissent pas les codes des touches :
getKey
L'optimisation avec la fonction sum (somme) et le symbole "inégal" (=/=) ne fonctionne qu'à partir de la ti82stats.
Ainsi :
Ce programme de code
peut être appelé depuis un autre programme,
MAIS il vaut mieux le recopier au début de chaque programme.
C'est plus lourd mais plus difficile à trafiquer pour les pirates.
1-C- Code Produit
code par produit
Remarque : le sujet vers lequel je vous redirrige utilise les touches du clavier comme celui que j'ai posté précédemment,
Mais il crypte la série des touches sous la forme d'un produit.
Cette méthode de produit peut être appliquée à d'autres méthodes de saisies.
1-D- Saisie invisible
Le programme se comporte presque comme s'il n'y avait pas de programme et pas de code à saisir.
Sur le principe de l'invisibilité, vous pourriez avoir besoin de ZNOLOAD pour masquer le marqueur d'activité.
http://tout82.free.fr/forum/sujet.php?sujet=2036
Send(9prgmZNOLOAD
Mais ici on j'utilise simplement la fonction Input.
Le défaut est que certains menus sont alors restreints et cela manque un peu de discrétion.
Le programme suivant est un exemple de programme discret.
Vous pouvez remplacer la variable A par une Chaîne/String pour faire comme précédemment, en plus de rester discret.
Code
//ce programme doit être protégé contre l'édition (voir le chapitre2)
//sinon il suffit de saisir quelque chose d'erroné pour découvrir la supercherie
ClrHome
Disp ""
//////////////////////
// Pour pouvoir duper l'humain, il faut dessiner le mot "Fait" sur ti82statfr
// ou "Done" sur ti82stat , avec des lettres minuscules.
// Mais pour cela il faut faire un montage avec plusieurs noms de fonctions.
// Donc je présente ci-dessous les deux versions pour ce fragment de programme
// Remarque : je n'utilise pas les caractères "e" (exponentielle) ni
// "i" (imaginaire) qui ne sont pas rigoureusement identiques aux lettres
// minuscules, j'utilise des fonctions ou bien le menu var\stat.
////// ti82stat/ti83
Output(1,13,"conj( // menu math\cpx
Output(1,13,"D
Output(1,16,"e " // e (menu var\stat\EQ) + espace
////// ti 82stat fr
Output(1,13,"Faimag( // F + a (menu var\stat\EQ) + imag( (menu math\cpx)
Output(1,16,"th( // catalogue
Output(2,1," " // trois espaces
///////////////////////
Input "",A
If A-999 // 999 est le code
Then
Disp A
Stop
End
DelVar A
1-E- Carte Bleue
Je vous propose que la saisie affiche des étoiles pour remplacer les caractères.
Consultez le site du
TI-Concours 2011 tour 2 pour avoir une large gamme de programme type carte bleue.
Je vous propose ici le mien. (un peu dépassé car je l'ai écrit au TI-concours 2011 et progressé depuis)
Il se manipule avec les touches des chiffres, la touche Clear (effacer tous les caractères), la touche Del (effacer le dernier caractère) et la touche Enter (valider).
Pour réinitialiser le compteur d'essais, il faut saisir
Code
0->B // ou un quelconque nombre différent de 127
Le programme.
Code
If B=127 // condition : 3 erreur successives ont déjà été commises
Goto 9
1->R
ClrHome
Lbl 0
Output(2,5,"----
ClrList L1
DelVar W
Goto 1
Lbl 8
W-1->W
Output(2,5+W,"-
Lbl 1
Output(1,3,"ESSAI /3
Output(1,9,R
Repeat K
getKey->K
End
Output(3,1," " // efface "essai"
If K=45 // annul
Goto 0
If K=23 and W // suppr
Goto 8
10
If K=102:0
If K=92:1
If K=93:2
If K=94:3
If K=82:4
If K=83:5
If K=84:6
If K=72:7
If K=73:8
If K=74:9
If Ans=10 // évite de détecter des touches autres que les chiffres
Goto 1
Ans->L1(W+1
W+1->W
Output(2,4+W,"*
If W-4 // si W différent de 4
Goto 1
Repeat K=105 // pause si 4 chiffres ont été saisis
getKey->K
If K=45 // annul
Goto 0
If K=23 // suppr
Goto 8
End
If not(prod(L1={1,0,5,7} // code 1057
Then
Output(3,1,"CODE INVALIDE
R+1->R
If R-4
Goto 0
Lbl 9
ClrHome
Disp "ACCES REFUSE
127->B // garde en mémoire le fait qu'il y ait eu 3 erreurs successives
Output(1,1,""
Stop
End
Output(3,1,"CODE VALIDE
1-F- bourrinage mathématique similaire au cryptage
Voir l'article de Vibra :
chaos mathématique et cryptage
2-Protégez vos programmes contre l'édition.
SOIT : Utilisez le programme
PROTECT
SOIT : Cochez la case "protéger" dans un logiciel d'édition (ti-graph-link par exemple)
3-Si vous conservez PROTECT dans la calculatrice, pensez à protéger protect avec le code et lui-même.
Mais c'est plus sûr de le supprimmer ainsi que ses annexes (ZPROT et ZUNPROT).
4-CACHEZ un programme ( édit 27/6/12 )
Utilisez le programme
HIDE de Matrefeytontias.
(Vous trouverez la réédition de Protect au même endroit)
Si personne ne connaît les noms des programmes que vous cachez, alors ils seront indétectables même avec HIDE.
5- Si vous voulez protéger encore mieux vos programmes, vous pouvez protéger le programme HIDE/ZHIDE/ZUNHIDE en vous servant d'un code et de PROTECT...
Cependant il semble innutile de protéger un programme destiné à être caché.