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