1. dank12.03.2025 в 23:46от
  2. D1zo12.03.2025 в 22:05от
Загрузка...

[Урок] Разработка однопоточного брутфорса

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем MDK, 06.12.2013.

  1. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Как и обещал серия уроков по разработке брутфорсов, пока однопоточных.
    Пока уроки будут появляться по мере свободного времени.

    Сразу скажу, что все уроки будут направлены на начинающего программиста, который имеет хоть какое-то представление о данном языке программированию и умеет разработать простую программу с типичным сообщением "Hello World!".

    После каждого урока будет прикреплен исходник проделанной работы, то бишь полноценный проект, то что мы делали в уроке. То есть, после каждого урока будет прилагаться дополненный предыдущий проект (исходник) и в конце концов мы получим уже готовый полноценный проект (однопоточный брутфорс).

    Поехали!

    Все уроки представлены форумом ImbaCode.ru и источник обязателен!
     
  2. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Первый урок - Настройка
    Для полноценной работы нам понадобиться установить некоторые модули и компоненты, которые будут использоваться в ходе разработки однопоточного брутфорса.

    Во-первых это конечно же компоненты для работы с Интернетом, а именно Synapse, который вы можете скачать на нашем форуме в одном из тем данного раздела.
    Во-вторых нам может понадобиться функция для парсинга необходимых данных из ответа от сервера (куки, содержимое и т.д.):

    Код:
    function Pars(T_, ForS, _T: String): String;
    var
    A, B: Integer;
    begin
    Result := '';
    if (T_ = '') or (ForS = '') or (_T = '') then Exit;
    A := Pos(T_, ForS);
    if A = 0 then Exit else A := A + Length(T_);
    ForS := Copy(ForS, A, Length(ForS) - A + 1);
    B := Pos(_T, ForS);
    if B>0 then
    Result := Copy(ForS, 1, B - 1);
    end;

    Пока это все что нам нужно, но по ходу разработки будут появляться новые компоненты, которые так же пригодятся нам в разработке.
     
  3. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Второй урок - Заготовки
    Для начала всех работ нам понадобиться все подготовить, а именно сделать визуальную часть программы, а так же написать первый код, например загрузка аккаунтов.

    А первым делом создадим сам проект в Delphi:
    [​IMG]

    Теперь подготовим визуальную часть:
    [​IMG]

    Дальше сделаем загрузку аккаунтов и проксей с файла.
    Для этого нам пригодится компонент TOpenDialog, который находится в разделе Dialogs.
    Создаем обработчик событий onclick на кнопку "Аккаунты" и пишем следующий код:

    Код:
    if OpenDialog1.Execute then
    begin
    Accounts.LoadFromFile(OpenDialog1.FileName);
    Label6.Caption := IntToStr(Accounts.Count);
    end;
    Как видите тут есть неизвестная нам переменная Accounts, которую нужно в принципе объявить и объявлять нужно в глобальных переменных (кстати, тип StringList, если кто не в курсе):
    [​IMG]
    И чтобы не возникало ошибок и мы могли проделывать все что угодно с этим переменным, мы должны его создать. Для этого создаем обработчик событий OnCreate на нашу форму и пишем следующий код:

    Код:
    Accounts := TStringList.Create;
    Теперь проделываем то же самое, только с проксями. Создаем обработчик событий onclick на кнопку "Прокси" и пишем такой же код только с другим переменным, который у нас уже должен быть объявлен в глобальных переменных:

    Код:
    if OpenDialog1.Execute then
    begin
    Proxies.LoadFromFile(OpenDialog1.FileName);
    Label7.Caption := IntToStr(Proxies.Count);
    end;
    Так же мы могли заметить, что свойству Caption наших Label6 и Label7 мы присваиваем какие-то значения и это не спроста, мы присваиваем им количество строк в переменных Accounts и Proxies заведомо сделав перевод в строковой тип (по умолчанию, Count это числовой тип).

    Так же можем проделывать все что угодно с нашими кнопками для загрузки аккаунтов и проксей, а так же и с нашим компонентом OpenDialog, например как сделать фильтр загружаемых типов файлов (.txt, .doc, .html и т.д.).

    Исходник
     
  4. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Третий урок - Потоки и кнопки "Запустить", "Остановить"

    Для работы любого нормального брутфорса нужны потоки, которыми можно запросто воспользоваться в приложениях разрабатываемых на языке программирования Delphi. Я не стану приводить тут полное описание того, что такое поток и сразу скажу что для создания потока, а если правильнее, то для создания экземпляра класса потока используется следующий код, который прописывается перед глобальными переменными:
    Код:
    type
    First = class(TThread)
    private
    { Private declarations }
    protected
    procedure Execute; override;
    end;
    
    Это простой экземпляр класса потока, мы можем объявлять в ней какие-либо переменные и процедуры, а пока в ней одна единственная процедура и это - Execute, процедура в которой и будет весь код, который должен выполняться в потоке. То есть, непосредственно после кода

    Код:
    implementation
    {$R *.dfm}
    
    мы пишем это:
    Код:
    procedure First.Execute;
    begin
    end;
    
    Как обычно в этой процедуре пишем какой-либо код, который будет выполняться в потоке, который мы позже создадим по нажатию кнопки "Запустить".

    Так же для регулировки работы потока, то есть если она работает выполнять какой-то код, а если нет, то какой-то другой, нам понадобиться переменная, например Work и она будет типа Boolean.

    Объявляем ее в глобальных переменных. После чего создаем обработчик событии onclick на кнопку "Остановить" и пишем Work := False, то есть останавливаем поток (в нашем случае).

    Таким же образом создаем обработчик событии onclick на кнопку "Запустить" и пишем следующий код:
    Код:
    Work := True;
    First.Create;
    
    Пока все.

    Исходник