
30.07.2005, 18:08
|
|
Познающий
Регистрация: 29.07.2005
Сообщений: 58
Провел на форуме: 42372
Репутация:
0
|
|
В Общем, объясняю ещё раз кто поймет тот поймет =)
На практике : ~)
Допустим есть hash(MD5):
Пароль мы не знаем! И каждый из нас сразу бежит за программой
PasswordsPro и т. п. И начинает перебирать по словарю или переборам
А вот допустим, нет в словаре вашего пароля! А переборам долго
И вы теряйте время на перебор или ищете другой выход.
В общем, что бы не мучить ваш процессор и ваши нервы ожиданием
Ученые придумали электронную систему счисление, а точнее машину
Которая будет делать все за нас! Ну нам тоже надо иметь мозги что бы
Подружится с машиной! И на свет появились много программистов!
В общем, ЯСНО! Вернемся назад!
Создадим программу, которая создает Словарь!!! Из всех возможных символов!
ИЗВЕНИТЕ Я НЕ СИЛЬНЫЙ МАТИМАТИК И МНЕ ЛЕНЬ ЩИТАТЬ СКОЛЬКО
БУДЕТ ВЕСИТЬ ВЕСЬ СЛОВАРЬ!
Естественно для нас важен не Хеш - словарь а словарь - паролей, так как разные
системы шифруют по разному, к примеру, MD5!
Алгоритм созданием словаря из всех доступных в машине символов таков:
Допустим есть система ввода пароля! И ввод ограничивается таким правилам!
Доступные символы: 0,1,2,3
Длина пароля: 3
-----------
У нас есть пароль такого вида: 123
Алгоритм подбора должен быть таким:
123
---------------
000
001
002
003
010
011
012
013
020
021
022
023
030
031
032
100
101
102
103
110
112
113
120
121
122
>>>>>123<<<<<
130
131
132
133
200
201
202
203
210
211
212
213
220
221
222
223
230
231
232
233
300
301
302
303
310
311
312
313
320
321
322
323
330
331
332
333
---------------
Но мы не собираемся подбирать! А хотим создать словарь длиной 64 символов
и 256 символов в одном кардинале! В данном случи у нас словарь состайт до 333
и как видим там есть пароль 123! Вот таким образом надо сделать программу
которая будет перебирать длиной 64
00000000000000000000000000000000000000000000000000 00000000000000
Ограничение символов Char(256) = Ā
А нащет 5 секунд мы сделаем файл индексование!
Вот маленьки пример:
{$APPTYPE CONSOLE}
const
s: ShortString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz';
var
i1, i2, i3, i4, i5, i6: Integer;
len: Integer;
p: String[6];
label
e;
begin
len := Length(s);
p := '123456';
for i1 := 1 to len do begin
p[1] := s[i1];
for i2 := 1 to len do begin
p[2] := s[i2];
for i3 := 1 to len do begin
p[3] := s[i3];
for i4 := 1 to len do begin
p[4] := s[i4];
for i5 := 1 to len do begin
p[5] := s[i5];
for i6 := 1 to len do begin
p[6] := s[i6];
if p = 'Arazel' then begin
WriteLn('OK');
goto e
end
end
end
end
end
end
end;
WriteLn('Not found');
e:
end.
|
|
|