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

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.
Merci de vos réponses.

Titeeee