|
#1
|
|||
|
|||
Генетатор паролей
Здравствуйте уважаемые прогеры!!!
Не буду скрывать... Идея возникла изначально для написания брутфорса... Но эта идея для этого немного не катит... А потом стало интересно... Ну скорость там и все такое... Нужно сделать алгоритм который бы генирил пароль по порядку... То есть например пароль из 4 символов... Значит нужно 0000..9999... Но с цифрами все просто... А вот как быть с остальными символами??? Заранее благодарю за ответы идеи и все что с этой темой связанно... |
#2
|
||||
|
||||
У каждого символа есть свой порядковый код...
Например: ! - 33 % - 37 c - 99 d - 100 Просто перечисляй коды символов... В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
Код:
const CR: string = '0' + '1' + '2' + '3' + '4' + '5' + '6' + '7' + '8' + '9' + 'Q' + 'q' + 'W' + 'w' + 'E' + 'e' + 'R' + 'r' + 'T' + 't' + 'Y' + 'y' + 'U' + 'u' + 'I' + 'i' + 'O' + 'o' + 'P' + 'p' + 'A' + 'a' + 'S' + 's' + 'D' + 'd' + 'F' + 'f' + 'G' + 'g' + 'H' + 'h' + 'J' + 'j' + 'K' + 'k' + 'L' + 'l' + 'Z' + 'z' + 'X' + 'x' + 'C' + 'c' + 'V' + 'v' + 'B' + 'b' + 'N' + 'n' + 'M' + 'm'; Что значит перечисляй.??! оО... Если бы было все так просто уже сделал бы... 0001, 0002, 0003... 0009...000m. Далее нужно определить что символы закончились... И поменять пред последний символ... 0010... 001m... Но тут проблема в том... Что под каждый символ че то нехочится код писать... Может предложите алгоритм??? |
#4
|
||||
|
||||
Перечислить их можно при помощи цикла например...
var s : string; begin for i := 0 to 255 do //количество символов в кодировке ASCII s := #i;//присваеваем переменной символ end; как то так, нужно учесть что не все коды символов можно ввести с клавиатуры...типа #13, #10 символы конца строки и переноса каретки... можно перечислять в кодировке Юникод но там более 65000 символов, скорее всего большинтсво из них никто вводить не будет...а вот русские, английские буквы, цифры, и символы типа . , ) ( / * - + и т.д. есть в кодировке ASCII... з.ы. Дополнительная инфа тут http://ru.wikipedia.org/wiki/ASCII В начале был Бит, потом Байт и только потом появилось Слово... Последний раз редактировалось NIch, 21.10.2009 в 20:08. |
#5
|
||||
|
||||
Безполезная затея.
На брут 10-ти символьного пасса у тебя уйдет мин 184 года, на обычном компе. Как тебе такой пасс: cyfxfkfgjxbnfqfgjnjve;tdslevsdfqnfre.[htym ))))) |
#6
|
||||
|
||||
Ну это понятно...в большинстве случаев брут бесполезен. Для 4-х значного пароля число комбинаций около 4228200000...а 6-7 значный пароль практически невзламываем...
В начале был Бит, потом Байт и только потом появилось Слово... |
#7
|
||||
|
||||
Цитата:
Невзламный предложенным методом и на домашних компах, но это еще не значит что не существует других способов. |
#8
|
||||
|
||||
Ну да, если каждый китаец введет по одному паролю, то китай взломает пентагон)))простите за офтоп...
понятно есть распределенные вычисления, но в контексте данной темы, увы это так... В начале был Бит, потом Байт и только потом появилось Слово... |
#9
|
|||
|
|||
Я все конечно понимаю... Перебрать все невозможно и все такое... Но тут такая тема... Пользовался программой на домашнем компе для взлома пароля Windows... 10 000 000 комбинаций/сек... Так вот просто хочу посмотреть на скорость... А если еще научится использовать для этого графический проццесор... То в 25 раз быстрее... Мне нужен просто алгоритм... Пример... Хотя бы 4 символа... Спсибо Вам большое за горячее обсуждение Темы...
P.S. Я знаю приблезительные цифры времени за которое подберется пароль из 10 символов... И генерацию делать только по тем символам что Я указал Выше... |
#10
|
||||
|
||||
А вот так вас устроит?
Код:
Const Symbol = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; procedure TForm33.FindCombination(S: String; Level: Integer); Var i: Integer; begin for i := 1 to Length(Symbol) do begin Label1.Caption := S + Symbol[i]; Application.ProcessMessages; if Level < Length(Symbol) then FindCombination(S + Symbol[i],Level+1); end; end; procedure TForm33.Button1Click(Sender: TObject); begin FindCombination('',0); end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#11
|
|||
|
|||
Да!!! Спасибо большое... Не думал что все так будет просто... Но как убрать нули в начале??.. Я думаю без генерации нулей в начале он будет работать гораздо быстрее!..
|
#12
|
||||
|
||||
Существенно быстрее он будет работать, если убрать вот эти две строчки:
Код:
Label1.Caption := S + Symbol[i]; Application.ProcessMessages; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#13
|
|||
|
|||
Я немного подправил выше написанный код:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, sButton, syncobjs, comctrls, sGroupBox; Const Symbol = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; type TForm1 = class(TForm) sGroupBox1: TsGroupBox; Button1: TButton; sGroupBox2: TsGroupBox; Memo1: TMemo; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; tnew = class(tthread) private protected procedure execute; override; end; var Form1: TForm1; new1, new2: tnew; implementation {$R *.dfm} procedure tnew.execute; procedure FindCombination(S: String; Level: Integer); Var i: Integer; begin for i := 1 to Length(Symbol) do begin Form1.Memo1.Lines.Add(S + Symbol[i]); if Level < Length(Symbol) then FindCombination(S + Symbol[i],Level+1); end; end; begin FindCombination('',0); end; procedure TForm1.Button1Click(Sender: TObject); begin new1 := tnew.create(true); new1.freeonterminate := true; new1.priority := {tphighest}tptimecritical; new1.resume; end; procedure TForm1.Button2Click(Sender: TObject); begin new1.Suspend; end; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Clear; end; procedure TForm1.FormDestroy(Sender: TObject); begin new1.Suspend; new1.Terminate; end; end. это даст возможность выполнения одновременно нескольких действий при подборе значений |
#14
|
|||
|
|||
А как насчет придумать самый быстрый алгоритм перебора пароля!?. Ну это так просто мысль!.. Несколько потоков... И там еще что нить!.. рекурсия... А какие еще есть методы... Где почитать??? Но в Любом случае огромное Всем спасибо!...
|
#15
|
|||
|
|||
Можно каждый символ засунуть в поток во всей строке то есть 10 символов 10 потоков. Тока надо подумать как такое реализовать
|