Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2009, 17:55
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
Восклицание Генетатор паролей

Здравствуйте уважаемые прогеры!!!

Не буду скрывать... Идея возникла изначально для написания брутфорса...
Но эта идея для этого немного не катит... А потом стало интересно... Ну скорость там и все такое...
Нужно сделать алгоритм который бы генирил пароль по порядку... То есть например пароль из 4 символов... Значит нужно 0000..9999... Но с цифрами все просто... А вот как быть с остальными символами??? Заранее благодарю за ответы идеи и все что с этой темой связанно...
Ответить с цитированием
  #2  
Старый 21.10.2009, 18:32
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

У каждого символа есть свой порядковый код...
Например:
! - 33
% - 37
c - 99
d - 100
Просто перечисляй коды символов...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 21.10.2009, 19:46
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Код:
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  
Старый 21.10.2009, 20:06
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Перечислить их можно при помощи цикла например...
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  
Старый 21.10.2009, 20:37
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Безполезная затея.

На брут 10-ти символьного пасса у тебя уйдет мин 184 года, на обычном компе.

Как тебе такой пасс:
cyfxfkfgjxbnfqfgjnjve;tdslevsdfqnfre.[htym )))))
Ответить с цитированием
  #6  
Старый 21.10.2009, 21:15
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Ну это понятно...в большинстве случаев брут бесполезен. Для 4-х значного пароля число комбинаций около 4228200000...а 6-7 значный пароль практически невзламываем...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #7  
Старый 21.10.2009, 21:30
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от NIch
а 6-7 значный пароль практически невзламываем...
Не совсем так...
Невзламный предложенным методом и на домашних компах, но это еще не значит что не существует других способов.
Ответить с цитированием
  #8  
Старый 21.10.2009, 21:36
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Ну да, если каждый китаец введет по одному паролю, то китай взломает пентагон)))простите за офтоп...
понятно есть распределенные вычисления, но в контексте данной темы, увы это так...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #9  
Старый 21.10.2009, 22:52
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Я все конечно понимаю... Перебрать все невозможно и все такое... Но тут такая тема... Пользовался программой на домашнем компе для взлома пароля Windows... 10 000 000 комбинаций/сек... Так вот просто хочу посмотреть на скорость... А если еще научится использовать для этого графический проццесор... То в 25 раз быстрее... Мне нужен просто алгоритм... Пример... Хотя бы 4 символа... Спсибо Вам большое за горячее обсуждение Темы...

P.S. Я знаю приблезительные цифры времени за которое подберется пароль из 10 символов... И генерацию делать только по тем символам что Я указал Выше...
Ответить с цитированием
  #10  
Старый 22.10.2009, 01:27
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А вот так вас устроит?
Код:
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  
Старый 22.10.2009, 16:55
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Да!!! Спасибо большое... Не думал что все так будет просто... Но как убрать нули в начале??.. Я думаю без генерации нулей в начале он будет работать гораздо быстрее!..
Ответить с цитированием
  #12  
Старый 22.10.2009, 20:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Существенно быстрее он будет работать, если убрать вот эти две строчки:
Код:
Label1.Caption :=  S + Symbol[i];
    Application.ProcessMessages;
То что я предложил, тоже имеет свои минусы, т.к. рекурсия считается не самым быстрым алгоритмом.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 22.10.2009, 21:50
mskvkin mskvkin вне форума
Новичок
 
Регистрация: 31.08.2008
Сообщения: 99
Репутация: 10
По умолчанию

Я немного подправил выше написанный код:

Код:
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  
Старый 23.10.2009, 01:00
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

А как насчет придумать самый быстрый алгоритм перебора пароля!?. Ну это так просто мысль!.. Несколько потоков... И там еще что нить!.. рекурсия... А какие еще есть методы... Где почитать??? Но в Любом случае огромное Всем спасибо!...
Ответить с цитированием
  #15  
Старый 23.10.2009, 16:41
mskvkin mskvkin вне форума
Новичок
 
Регистрация: 31.08.2008
Сообщения: 99
Репутация: 10
По умолчанию

Можно каждый символ засунуть в поток во всей строке то есть 10 символов 10 потоков. Тока надо подумать как такое реализовать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter