Poster un nouveau sujet Poster une réponse
[TUTO] PROTEGER + CACHER vos programmes
Auteur Message
linkakro



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

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é.

----------------------
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 
 
azerty1



Autorisation : Membre
Nb de messages : 468
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Lun 11 Juil 2011, 22:35   Citer 

Vraiment pas bête ton programme CODE, bravo =)
et si on a PROTECT, il faut le protéger evidemment mais aussi protéger les programmes ZPROT et ZUNPROT...

----------------------
Ti-Connect 64bits
PROTECT
Tuto Skin Perso Wabbitemu
 Adresse email Haut de page Bas de page 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Mar 12 Juil 2011, 0:17   Citer 

Pour un code qui trompe l’intrus :


Code

Disp"            Done
Input"",Str1
If Str1#"1+1
Then
Disp expr(Str1
Output(8,1,"
Stop
End

(programme)



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

"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 ...
"
 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 : Mar 12 Juil 2011, 0:50   Citer 

@ trotithuthur :

Hélas ZPROT et ZUNPROT ne peuvent être protégés contre l'execution car ils sont en assembleur. Donc un pirate expérimenté peut les executer tout-de-même.

Conclusion : finalement il vaut mieux supprimmer PROTECT, ZPROT et ZUNPROT pour une sécurité maximale.


@ programaths :

Hélas le "Done" ne peut être beau (réaliste) que sur ti83+ et postérieures car elles ont des lettres minuscules.
(EDIT : ou bien en superposant des mots)

Cette idée est drôle. Comment faire tourner en bourique les noobs laugh.gif

De plus on peut remplacer "1+1" par un code textuel. sarcatisk.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 
 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Mar 12 Juil 2011, 1:02   Citer 

En revanche, sur 84+ le Output(8,1," ou un disp" " ne sert a rien contre le "done" a la fin :p c'est le retour du bâton crazy.gif

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

"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 ...
"
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
azerty1



Autorisation : Membre
Nb de messages : 468
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Mar 12 Juil 2011, 1:16   Citer 


Citer : linkakro

Hélas ZPROT et ZUNPROT ne peuvent être protégés contre l'execution car ils sont en assembleur. Donc un pirate expérimenté peut les executer tout-de-même.

Conclusion : finalement il vaut mieux supprimmer PROTECT, ZPROT et ZUNPROT pour une sécurité maximale.


Je ne m'y connais pas beaucoup en assembleur et tout, mais est-ilk possible de mettre les codes de ZPROT et ZUNPROT directement dans PROTECT? comme ça il n'y aurait que PROTECT, que l'on pourrait proteger...?
Par exemple au lieu de faire qqch comme (je n'est pas le prgm en tête):

Code
Send(9prgmZPROT


Pourrait-on faire:

Code
Send(9[le code de ZPROT]

????

----------------------
Ti-Connect 64bits
PROTECT
Tuto Skin Perso Wabbitemu
 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 : Mar 12 Juil 2011, 2:02   Citer 

Bonne idée mais je crois que c'est impossible ! frozen.gif cry.gif
Si cela existait, ce serait sur 83+ et postérieures car je ne maîtrise pas ces modèles.
Cependant je n'ai pas trouvé la moindre manipulation de ce genre dans les manuels.

Dans ce cas il faudrait réécrire ces programmes assembleur tel qu'ils dépendent obligatoirement du lancement de PROTECT, ce qui n'est pas abordable par le commun des mortels.
Moi-même je ne m'y connais pas.

EDIT : reformulation de mon second paragraphe :
Il faudrait soit écrire un seul code asm protégé par mot-de-passe et qui bloque l'édition d'autres programmes, soit réécrire ZPROT et ZUNPROT pour qu'ils refusent d'être lancés par autre chose que 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 
 
azerty1



Autorisation : Membre
Nb de messages : 468
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Mar 12 Juil 2011, 13:30   Citer 

Ok, merci de la réponse, c'est dommage...
Sinon n'existe-il pas un seul code hexa qui rassemble tt cela? (je crois que c'est ce que tu voulais dire par 'réécrire ces programmes assembleur tel qu'ils dépendent...').

----------------------
Ti-Connect 64bits
PROTECT
Tuto Skin Perso Wabbitemu
 Adresse email Haut de page Bas de page 
 
matrefeytontias



Autorisation : Membre
Nb de messages : 111
Inscrit le : Lun 25 Jui 2012, 15:51
Posté le : Ven 13 Juil 2012, 16:14   Citer 

L'article a été mis à jour, maintenant y'a la dose d'hexa ^^

----------------------
Vous n'avez pas d'iPod ? Pas grave, vous pouvez quand même jouer à Jetpack sur votre calculatrice z80 : http://mattias.refeyton.fr/espace-ti/jetpack8x(+).zip !

Apprenez l'hexadécimal z80 ! Nan, vous n'êtes pas obligés de vouloir mourir, mais ça peut aider : http://espace-ti.forumactif.com/t576-programmer-en-hexadecimal-c-est-possible
 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Sam 15 Sep 2012, 20:29   Citer 


Citer : trotithuthur
Ok, merci de la réponse, c'est dommage...
Sinon n'existe-il pas un seul code hexa qui rassemble tt cela? (je crois que c'est ce que tu voulais dire par 'réécrire ces programmes assembleur tel qu'ils dépendent...').


Je suis entrain de faire un shell en basic+hexa regroupant ça.

 Adresse email Haut de page Bas de page 
 
matrefeytontias



Autorisation : Membre
Nb de messages : 111
Inscrit le : Lun 25 Jui 2012, 15:51
Posté le : Dim 16 Sep 2012, 16:20   Citer 

Sérieux ? ahh.gif
Tiens-nous au courant =D

----------------------
Vous n'avez pas d'iPod ? Pas grave, vous pouvez quand même jouer à Jetpack sur votre calculatrice z80 : http://mattias.refeyton.fr/espace-ti/jetpack8x(+).zip !

Apprenez l'hexadécimal z80 ! Nan, vous n'êtes pas obligés de vouloir mourir, mais ça peut aider : http://espace-ti.forumactif.com/t576-programmer-en-hexadecimal-c-est-possible
 Adresse email Haut de page Bas de page 
 
AlexRider38



Autorisation : Membre
Nb de messages : 139
Inscrit le : Ven 26 Mar 2010, 17:13
Posté le : Dim 16 Sep 2012, 18:58   Citer 

Pas de problèmes, dès que j'ai fini (dans 2 ou 3 jours)

 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