Hello world !!! -> eh, en faites je vous hais tous =) fo pas déconner quoi. Nopassword c'est quoi? C'est un nouveau zine qui parlera de password, ou pour être plus précis, pour apprendre comment fonctionne tous ces programmes débiles, ceux qui protège l'accès d'un logiciel, des No de licences par exemple. Mais il est difficile de trouver une idée original et je n'est jamais trouve ce genre de e-zine encore sur le web :)

Les algorithmes de ce genre de programme peut être assez simple, et j'ai donc commence par un langage simple appelé : BAZIC (? basic pardon :),).(note: Qbasic dos évidemment, graine de moules).(<- la honte :),)

 

1.1 Algorithme

ben euuuuhhhhh en quelques mots: Voyez vous même par le programme qui va suivre :)

 

1.2 Exemple

10 CLS

20 a$ = "password"

30 FOR n = 1 TO 60

40 PRINT a$, n

50 NEXT

DEF SEG = 0

POKE 1047, PEEK(1047) AND (255 - 1)

COLOR 1

DEFSTR Z

z0 = CHR$(3)

CLS

PRINT STRING$(80, CHR$(196))

PRINT "exemple password"

PRINT STRING$(80, CHR$(196))

 

in:

COLOR 11

LOCATE 10, 1: PRINT "donnez le mot de passe d'utilisateur:"

LOCATE 11, 1: PRINT STRING$(39, CHR$(196))

LOCATE 13, 11

IF nlettre < 5 THEN

z = INKEY$

IF z = "" THEN

GOTO in:

ELSE

pass$ = pass$ + z

nlettre = nlettre + 1

PRINT "*";

GOTO in:

END IF

END IF

faute = 0

IF MID$(pass$, 1, 1) <> CHR$(83) AND MID$(pass$, 1, 1) <> CHR$(115) THEN

faute = 1

ELSEIF MID$(pass$, 2, 1) <> CHR$(65) AND MID$(pass$, 2, 1) <> CHR$(97) THEN

faute = 1 CHR$(84) AND MID$(pass$, 3, 1) <> CHR$(116) THEN

faute = 1

ELSEIF MID$(pass$, 4, 1) <> CHR$(65) AND MID$(pass$, 4, 1) <> CHR$(97) THEN

faute = 1

ELSEIF MID$(pass$, 5, 1) <> CHR$(78) AND MID$(pass$, 5, 1) <> CHR$(110) THEN

faute = 1

END IF

IF faute = 1 THEN

BEEP

PRINT z0

PRINT "password erone try again"

nlettre = 0

pass$ = ""

GOTO in:

END IF

END

Commentaire:

10 cls

20 a$ = "password"

30 for n= 1 to 60

40 print a$,n

50 next

 

La on a une petite boucle qui imprime password a l'écran 60 lignes :),mais c'est juste pour déconner on peut aussi l'enlever du programme.

 

def seg=0

poke 1047,peek(1047) and (255 - 1)

 

Ah, la c'est intéressant on élimine un gros problème , celui du control break (crtl + c) sans ca le programme ne sert a rien :-(.

in:

color 11

locate 10,1: print "donnez le mot de passe d'utilisateur:"

locate 11,1: print string$(39, chr$(196)

locate 13,11

if nlettre < 5 then

La on créé une petite boucle qui définie un passwd de 5 lettre maximum. (variable nombre lettre -> nlettre)

else

pass$ = pass$+z

nlettre = nlettre + 1

print "*";

goto in:

Ici on a une variable pass$ qui permet de positionner la frappe de touche a l'écran (comme locate) et Z qui sert a initialiser le nombre de lettre -> z=0

Bref a chaque appuie d'une touche (nlettre) on imprime un * a l'écran et on revient dans la boucle In:

 

if mid$(pass$, 1, 1)<> chr$(83) and mid$(pass$,1,1) <> chr$(115) then

Et voila le secret du programme :-), la on encode le password avec la variable chrs$(83) qui 83 et le code décimale de la touche en minuscule, 115 est le code décimale en majuscule de la touche etc etc..

if faute = 1 then

beep

print z0

print "password erone try again"

nlettre = 0

pass$ = ""

goto in:

Et donc si on a fait une faute de le password on demande a qbasic de faire un petit beep, puis on réinitialise nlettre = z0, pass$ = "" est définie pour l'appuie d'une touche, et on retourne dans la boucle in: afin de pouvoir recommencer.Ouf, que c'est long.

Notes: le password de ce programme est satan ou SATAN si ca vous ennuis de rechercher les codes des touchesDu programme. Pour faire vous même votre propre password dans ce programme il faut changer les lignes:

if nlettre < 5 then en if nlettre < 6 si vous voulez un password de 6 lettres

rajoutez ensuite la ligne:

if mid$(pass$, 1, 1)<> chr$(83) and mid$(pass$,1,1) <> chr$(115) then

avec les codes décimale de votre choix, en oubliant pas de changer bien sur le passw$,1,1) pour l'affichage. exemple (passwd$6,1) etc .

1.3 Euuuhhhh savoir le nombre de lettre dans le programme une fois code

cls: input "nom du fichier:";n$

open n$ for output as #1

print len(z) + 1