2nd
Фев

Брутфорс (полный перебор)

Posted by Chas under Топик-обзор

Tronix:

Нужен алгоритм переборки набора букв с заданным алфавитом и заданным максимальным размером пароля. Ну, например алфавит: «abc», максимальный размер пароля – 5 букв. При этом, начинаются генерироваться пароли с одного символа, потом два, потом 3 и так до 5 символьных.

Если брать вышеупомянутые данные то мы должны получить такой набор паролей примерно:
a
b
c
aa
ba
ca
ab
bb
ну и так далее.

Const

      Alphabet : String = ‘abcdefghijklmnopqrstuvwxyz’; // задаем алфавит

Var

      szAlphabet : Array [0..255] of Char;

      szPassword : Array [0..255] of Char;      // текущий паpоль

      bAlphabet  : Array [0..255] of Char;      // таблица

      i,k : Byte;

Begin

      // пpеабазуем в массив байт

      For i := 1 to Length(Alphabet) do szAlphabet[i-1] := Alphabet[i];

      // сгенеpим таблицу

      i := 0;

      k := 0;

      repeat

        bAlphabet[k] := szAlphabet[i];

        if szAlphabet[i] = chr(0) then

            break;

        k := Ord(szAlphabet[i]);

        Inc(i);

      until false;

      // главный цикл

      repeat

            asm

                  pushad

                  mov edi,offset szPassword

                  mov ebx,offset bAlphabet

            @L1:  movzx eax,byte ptr [edi]

                  xlat

                  cmp al,0

                  je @L3

                  mov [edi],al

                  jmp @L5

            @L3:  xlat

                  stosb

                  jmp @L1

            @L5:  popad

            end;

            // печать каждого паpоля

            i := 0;

            repeat

               write(szPassword[i]);

               inc(i);

            until Ord(szPassword[i]) = 0;

            writeln;

      until false;

End.

Тема на форуме

Похожие статьи