Voilà j'ai réalisé un brute force, qui trouve la chaine 'pass' de mon programme avec les caratère minuscule.
Le problème c'est que pour j, k, l, m commence à b. Normal me direz vous car les boucles for sont incrémentée. Sauf que quand je met 96 au lieux de 97, sa marche la 1ere fois (pour la même raison) mais pas la seconde car on affiche le caractère avant le 'a' c'est $06 je croit.
Je pense pas avoir été très claire, je vous laisse le code, qui se compile sous
tp7, free pascal, lazarus... Il suffit de le lancer pour comprendre le problème
Merci de vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 program BF; uses crt; var i : integer; j : integer; mot : string; nb : integer; k : integer; l : integer; m : integer; pass : string; procedure verif(s : string) ; begin if s = pass then begin clrscr; writeln('Le mot de passe est ' + mot); readkey; halt(0); end; end; begin pass := 'abcd'; nb := 1; (* on part avec un nombre de char de 1 *) for m := 97 to 122 do begin for l := 97 to 122 do begin for k := 97 to 122 do begin for j := 97 to 122 do begin for i := 97 to 122 do begin case (nb) of 1 : mot := chr(i); 2 : mot := chr(j) + chr(i); 3 : mot := chr(k) + chr(j) + chr(i); 4 : mot := chr(l) + chr(k) + chr(j) + chr(i); 5 : mot := chr(m) + chr(l) + chr(k) + chr(j) + chr(i); end; verif(mot); writeln(mot); end; if nb = 1 then nb := 2; end; if nb = 2 then nb := 3; end; if nb = 3 then nb := 4; end; if nb = 4 then nb := 5; end; end.
Titeeee
Partager