Advertisement
Guest User

down.php

a guest
Aug 23rd, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.99 KB | None | 0 0
  1. <?php
  2.  
  3. // ********************************************************************************************************
  4. // *                                                                                                      *
  5. // *       down.php v0.1.4 (Released 13.02.2010)                                                          *
  6. // *  by JeFFrey © 2007–2010                                                                              *
  7. // *  всё очень сыро и хреново...                                                                         *
  8. // *                                                                                                      *
  9. // *  http://gameart.110mb.com/                                                                           *
  10. // *                                                                                                      *
  11. // ********************************************************************************************************
  12.  
  13. // ********************************************************************************************************
  14. // Настройки
  15.  
  16.   // Все настройки описаны в файле "readme.txt"
  17. $host="www.ag.ru";
  18. $page="/stats/";
  19. $local_folder="";
  20. $log_file="";
  21. $crc="";
  22. $username="downphp";
  23. $password="setitfree";
  24. $send_cards=true;
  25. $save_to_subfolders=false;
  26. $time_for_sleep=0;
  27. $time_offset=0;
  28.  
  29. // ********************************************************************************************************
  30.  
  31.   // директива, снимающая ограничение выполнения скрипта по времени
  32. ini_set("max_execution_time",0);
  33.  
  34. // ********************************************************************************************************
  35. // Собственно скрипт
  36.  
  37. if(!$l=@file($crc)) $l="";
  38. $time_offset=$time_offset*3600;
  39. $traffic=0;
  40. $init_time=time();
  41. $i=1;
  42. $downloaded=1;
  43. $host="http://".$host;
  44.  
  45. if ($send_cards)
  46. {
  47.   while (!$mw=file_get_contents("http://gameart.110mb.com/most_wanted.txt"));
  48.   $mw=explode("\n",trim($mw));
  49. }
  50.  
  51.   // вызов процедуры входа в AG.ru по указанным логину и паролю
  52. if (($username=="") || !$out=ag_login($username,$password))
  53.   $out="GET /stats/ HTTP/1.0\r\nAccept: */*\r\nHost: www.ag.ru\r\n\r\n";
  54.  
  55. while (true)
  56. {
  57.   do
  58.   {
  59.     do
  60.       $s=read($page,$out);
  61.     while (!$s || $s=="");
  62.     $traffic+=strlen($s);
  63.     $link=substr(strtok(strstr(strstr($s,"<!-- GameArt -->"),"src="),">"),4);
  64.   }
  65.   while($link=="");
  66.   $link=$host.$link;
  67.   parse_str(substr(strstr($link,"?"),1));
  68.   $file=strrev(strtok(strrev($f),"/"));
  69.  
  70.   // Вывод в лог
  71.   // закомментируйте любую строку, просто предварив ее двумя слешами (//), чтобы отключить вывод того или иного параметра
  72.     // дата/время:
  73.       $log="";
  74.       $log.=date("d-m-Y H:i:s",time()+$time_offset).": ".strtok($file,".").str_repeat(" ",(23-strlen($file)));
  75.     // параметры url:
  76.       //$log.=$x." ";
  77.       //$log.=$t." ";
  78.       //$log.=$e." ";
  79.       //$log.=$h." ";
  80.     // израсходаванный трафик:
  81.       $log.=str_repeat(" ",(5-strlen(strlen($s)))).strlen($s);
  82.  
  83.   $result="";
  84.   echo($log);
  85.   if ($link!=$host)
  86.   {
  87.     if (strstr($file,".jpg"))
  88.     {
  89.       if ($save_to_subfolders)
  90.       {
  91.         $subfolder=str_pad(strtok($file,"_"),4,"S",STR_PAD_LEFT)."\\";
  92.         if (!file_exists($local_folder.$subfolder))
  93.           mkdir($local_folder.$subfolder);
  94.       }
  95.       else
  96.       {
  97.         $subfolder="";
  98.       }
  99.      
  100.       if (!file_exists($local_folder.$subfolder.$file))
  101.       {
  102.         $downloaded=0;
  103.  
  104.         if (!$downloaded)
  105.         {
  106.           if ($link!="http://www.ag.ru/")
  107.           {
  108.             $img=read_card($link,"GET ".$link." HTTP/1.0\r\nAccept: */*\r\nHost: www.ag.ru\r\n\r\n");
  109.             $traffic+=strlen($img);
  110.             $result="Downloaded"." ".strlen($img);
  111.             echo(": ".$result);
  112.             $f=fopen($local_folder.$subfolder.$file,"w");
  113.             fwrite($f,$img);
  114.             fclose($f);
  115.           }
  116.         }
  117.  
  118.         if (check($file,$img,$crc))
  119.           $i++;
  120.         else
  121.         {
  122.           if (strlen($img)>58)
  123.           {
  124.             if (strlen($img)<70000)
  125.             {              
  126.               if (crc($file,$crc)!="")
  127.               {
  128.                 $result=$result.": Wrong CRC ".dechex(crc32($img))." (must be ".strtolower(crc($file,$crc)).")";
  129.                 echo(": Wrong CRC ".dechex(crc32($img))." (must be ".crc($file,$crc).")");
  130.                 if (!file_exists($local_folder.$subfolder."Wrong CRC\\".$file))
  131.                 {
  132.                   rename($local_folder.$subfolder.$file,$local_folder.$subfolder."Wrong CRC\\".$file);
  133.                 }
  134.                 else
  135.                 {
  136.                   if (file_exists($local_folder.$subfolder.$file))
  137.                   {
  138.                     unlink($local_folder.$subfolder.$file);
  139.                   }
  140.                 }
  141.               }
  142.               else
  143.               {
  144.                 if ($crc!="")
  145.                 {
  146.                   $result=$result.": Unknown file ".dechex(crc32($img));
  147.                   echo(": Unknown file ".dechex(crc32($img)));
  148.  
  149.                   if (!file_exists($local_folder.$subfolder."Unknown files\\"))
  150.                     mkdir($local_folder.$subfolder."Unknown files\\");
  151.  
  152.                   if (!file_exists($local_folder.$subfolder."Unknown files\\".$file))
  153.                   {
  154.                     if (file_exists($local_folder.$subfolder."Unknown files\\"))
  155.                     {
  156.                       rename($local_folder.$subfolder.$file,$local_folder.$subfolder."Unknown files\\".$file);
  157.                     }
  158.                     else
  159.                     {
  160.                       mkdir($local_folder.$subfolder."Unknown files");
  161.                     }
  162.                   }
  163.                   else
  164.                   {
  165.                     unlink($local_folder.$subfolder."Unknown files\\".$file);
  166.                   }
  167.                 }
  168.  
  169.                 if ($send_cards)
  170.                 {
  171.                   $send=false;
  172.                   for ($i=0;$i<count($mw);$i++)
  173.                   {
  174.                     if ($mw[$i]."_"==strtok($file,"_")."_")
  175.                     {
  176.                       $send=true;
  177.                       break;
  178.                     }
  179.                   }
  180.                   if ($send && send_card($file,$img))
  181.                     echo(". Card Sended.");
  182.                 }
  183.               }
  184.             }
  185.             else
  186.             {
  187.               $result="AG Index";
  188.               echo(": ".$result);
  189.  
  190.             }
  191.           }
  192.           else
  193.           {
  194.             $result="Time expired";
  195.             echo(": ".$result);
  196.           }
  197.         }
  198.       }
  199.       else
  200.       {
  201.         $result="Already got";
  202.         echo(": ".$result);
  203.       }
  204.     }
  205.     else
  206.     {
  207.       $result="Bad format";
  208.       echo(": ".$result);
  209.     }
  210.     if ($log!="")
  211.       write_log($log_file,$log.": ".$result."\n");
  212.      
  213.     if ($time_for_sleep>0)
  214.       for ($sl=0;$sl<3;$sl+=1)
  215.       {
  216.         usleep($time_for_sleep/3*1000000);
  217.         echo ".";
  218.       }
  219.    
  220.     echo("\n");
  221.   }
  222. }
  223.  
  224. // ********************************************************************************************************
  225. // Функции, необходимые для работы скрипта
  226.  
  227.   // функция входа в AG по логину и паролю
  228.   // лучше ничего не менять — а вот проверить на вшивость советую — мало ли, кто чего сюда дописал...
  229. function ag_login($username,$password)
  230. {
  231.   function read_index($file)
  232.   {
  233.     $f=@fopen($file,"r");
  234.     if (!$f)
  235.       return false;
  236.     else
  237.     {
  238.       $s="";
  239.       while(!feof($f))
  240.       {
  241.         $line=fgets($f,1024);
  242.         $s.=$line;
  243.         if ((substr(strtok(strstr(strstr($s,"<INPUT type=hidden value=\"0\" name=is_javascript>"),"src="),">"),5)!="") || (!$line))
  244.           break;
  245.       }
  246.       fclose($f);
  247.       return($s);
  248.     }
  249.   }
  250.  
  251.   function get_h($s)
  252.   {
  253.     if ($s)
  254.     {
  255.       $t=substr($s,0,strpos($s,"\" name=h"));
  256.       $t=substr($t,strlen($t)-32,32);
  257.       return($t);
  258.     }
  259.     else
  260.       return(false);
  261.   }
  262.  
  263.   function get_time($s)
  264.   {
  265.     if ($s)
  266.     {
  267.       $t=substr($s,0,strpos($s,"\" name=time"));
  268.       $t=substr($t,strlen($t)-strlen(time()),strlen(time()));
  269.       return($t);
  270.     }
  271.     else
  272.       return(false);
  273.   }
  274.  
  275.   function get_ip($s)
  276.   {
  277.     if ($s)
  278.     {
  279.       $t=substr($s,0,strpos($s,"\" name=ip"));
  280.       $t=substr($t,strlen($t)-32,32);
  281.       return($t);
  282.     }
  283.     else
  284.       return(false);
  285.   }
  286.  
  287.   function get_header($out,$all)
  288.   {
  289.     while (!$fp=@fsockopen("www.ag.ru",80,$errno,$errstr,30));
  290.     @fwrite($fp, $out);
  291.     $s="";
  292.     while (!feof($fp) && (!strpos($s,"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">") || $all))
  293.       $s.=fgets($fp,1454);
  294.     fclose($fp);
  295.  
  296.     if (!$all)
  297.       $s=substr($s,0,strpos($s,"\r\n\r\n"))."\r\n\r\n";
  298.  
  299.     return $s;
  300.   }
  301.  
  302.   $s=read_index("http://www.ag.ru/stats/");
  303.  
  304.   $h=get_h($s);
  305.   $ip=get_ip($s);
  306.   $time=get_time($s);
  307.   $act="login";
  308.   $code="do_login";
  309.   $action="http://ag.ru/post/";
  310.  
  311.   $p = md5($password);
  312.   $p = md5($p.$h);
  313.   $p = md5($p.$ip);
  314.   $p = md5($p.$time);
  315.   $passwrd = $p;
  316.   $is_javascript="1";
  317.   $cookieneverexp="1";
  318.   $rp="http://www.ag.ru/stats/";
  319.  
  320.   $post='act='.$act."&";
  321.   $post.='code='.$code."&";
  322.   $post.='h='.$h."&";
  323.   $post.='ip='.$ip."&";
  324.   $post.='time='.$time."&";
  325.   $post.='is_javascript='.$is_javascript."&";
  326.   $post.='cookieneverexp='.$cookieneverexp."&";
  327.   $post.='rp='.$rp."&";
  328.   $post.='username='.$username."&";
  329.   $post.='passwrd='.$passwrd;
  330.  
  331.   $s="";
  332.  
  333.   $out="POST /post/ HTTP/1.0\r\n";
  334.   $out.="Accept: */*\r\n";
  335.   $out.="Referer: http://www.ag.ru/stats/\r\n";
  336.   $out.="Content-Type: application/x-www-form-urlencoded\r\n";
  337.   $out.="Host: ag.ru\r\n";
  338.   $out.="Content-Length: ".strlen($post)."\r\n";
  339.   $out.="Connection: close\r\n\r\n";
  340.   $out.=$post;
  341.  
  342.   do
  343.   {
  344.     $s=get_header($out,0);
  345.  
  346.     //echo "<code>".str_replace("\r\n","<br>\r\n",$out)."<br>\r\n<br>\r\n";
  347.     //echo "<b>".str_replace("\r\n","<br>\r\n",$s)."</b></code><hr>";
  348.  
  349.     $c=0;
  350.  
  351.     $line=explode("\r\n",$s);
  352.     $error=strtok(substr($line[0],9)," ");
  353.     for ($i=0;$i<count($line);$i++)
  354.     {
  355.       if (strstr($line[$i],"Set-Cookie: "))
  356.       {
  357.         $cookie[$c]=substr($line[$i],12);
  358.         $c++;
  359.       }
  360.       if (strstr($line[$i],"Location: "))
  361.       {
  362.         $location=substr($line[$i],10);
  363.         $n=strpos($location,"/",8);
  364.         $host=substr($location,7,$n-7);
  365.         $dir=substr($location,$n);
  366.       }
  367.       else
  368.       {
  369.         $host="www.ag.ru";
  370.         $dir="/stats/";
  371.       }
  372.     }
  373.  
  374.     $out="GET ".$dir." HTTP/1.0\r\n";
  375.     $out.="Accept: */*\r\n";
  376.     $out.="Host: ".$host."\r\n";
  377.     for ($i=0;$i<count($cookie);$i++)
  378.     {
  379.       $out.="Cookie: ".$cookie[$i]."\r\n";
  380.     }
  381.     $out.="\r\n";
  382.  
  383.     $s=get_header($out,0);
  384.   }
  385.   while(!$cookie);
  386.  
  387.   $cookies=implode("",$cookie);
  388.   $ag_con="1";
  389.   $ag_name=$username;
  390.   $ag_pass=substr($cookies,strpos($cookies,"ag_pass=")+8,32);
  391.   $ag_last=substr($cookies,strpos($cookies,"ag_last=")+8,10);
  392.   $ag_lp=substr($cookies,strpos($cookies,"ag_lp=")+6,10);
  393.   $ag_lp_next="0";
  394.  
  395.   $out="GET /stats/ HTTP/1.0\r\n";
  396.   $out.="Accept: */*\r\n";
  397.   $out.="Host: www.ag.ru\r\n";
  398.   $out.="Cookie: ag_con=$ag_con; ag_name=$ag_name; ag_pass=$ag_pass; ag_last=$ag_last; ag_lp_next=$ag_lp_next; ag_lp=$ag_lp\r\n";
  399.   $out.="\r\n";
  400.  
  401.   return $out;
  402. }
  403.  
  404.   // логгинг
  405. function write_log($log_file,$s)
  406. {
  407.   $f=fopen($log_file,"a");
  408.   @fwrite($f,$s);
  409. }
  410.  
  411.   // поиск строки с CRC данной карточки в файле
  412. function crc($file,$crc)
  413. {
  414.   if (file_exists($crc))
  415.   {
  416.     $f=file($crc);
  417.     $i=0;
  418.     while (($i<count($f)) && (strtolower(strtok($f[$i]," "))!=strtolower($file)))
  419.       $i++;
  420.     return substr(strtok(strstr(strtok($f[$i],"\r\n")," ")," "),0,8);
  421.   }
  422.   else
  423.     return '';
  424. }
  425.  
  426.   // проверка CRC, хранящейся в файле с фактической
  427. function check($file,$img,$crc)
  428. {
  429.   $r=true;
  430.   $crc32=crc($file,$crc);
  431.   if (hexdec(dechex(crc32($img)))!=hexdec($crc32))
  432.   {
  433.     $r=false;
  434.   }
  435.   return $r;
  436. }
  437.  
  438.   // загрузка карточки по ссылке
  439. function read_card($file,$out)
  440. {
  441.   if ($out=="")
  442.   {
  443.     $f=@fopen($file,"r");
  444.     if (!$f)
  445.     {
  446.       return false;
  447.     }
  448.     else
  449.     {
  450.       $s="";
  451.       while(!feof($f))
  452.       {
  453.         $line=fgets($f,1024);
  454.         $s.=$line;
  455.         if ((substr(strtok(strstr(strstr($s,"<!-- GameArt -->"),"src="),">"),5)!="") || (!$line))
  456.         {
  457.           break;
  458.         }
  459.       }
  460.       fclose($f);
  461.       return $s;
  462.     }
  463.   }
  464.   else
  465.   {
  466.     while (!$fp=@fsockopen("www.ag.ru", 80, $errno, $errstr, 30));
  467.     $s="";
  468.  
  469.     $file=substr($file,strpos($file,"http://www.ag.ru")+16);
  470.  
  471.     fwrite($fp, $out);
  472.     while (!feof($fp) && ($line=fgets($fp, 1454)))
  473.     {
  474.       $s.=$line;
  475.     }
  476.     fclose($fp);
  477.     $s=substr($s,strpos($s,"\r\n\r\n")+4);
  478.     return $s;
  479.   }
  480. }
  481.  
  482.   // загрузка данных по ссылке
  483. function read($file,$out)
  484. {
  485.   if ($out=="")
  486.   {
  487.     $f=@fopen($file,"r");
  488.     if (!$f)
  489.     {
  490.       return false;
  491.     }
  492.     else
  493.     {
  494.       $s="";
  495.       while(!feof($f))
  496.       {
  497.         $line=fgets($f,1024);
  498.         $s.=$line;
  499.         if ((substr(strtok(strstr(strstr($s,"<!-- GameArt -->"),"src="),">"),5)!="") || (!$line))
  500.         {
  501.           break;
  502.         }
  503.       }
  504.       fclose($f);
  505.       return $s;
  506.     }
  507.   }
  508.   else
  509.   {
  510.     while (!$fp=@fsockopen("www.ag.ru", 80, $errno, $errstr, 30));
  511.       $s="";
  512.  
  513.       fwrite($fp, $out);
  514.       while (!feof($fp) && (substr(strtok(strstr(strstr($s,"<!-- GameArt -->"),"src="),">"),5)=="") && ($line=fgets($fp,1024)))
  515.       {
  516.         $s.=$line;
  517.       }
  518.       fclose($fp);
  519.       $s=substr($s,strpos($s,"<html>"));
  520.       return $s;
  521.   }
  522. }
  523.  
  524.   // отправка карты в проект на gameart.110mb.com
  525. function send_card($filename,$s)
  526. {
  527.   $host="gameart.110mb.com";
  528.   $source="/upload.php";
  529.  
  530.   $boundary="----------f1MiuqE2SmFuSNu3FP0IHz";
  531.  
  532.   $post="--".$boundary."\r\n";
  533.   $post.="Content-Disposition: form-data; name=\"userfile\"; filename=\"".$filename."\"\r\n";
  534.   $post.="Content-Type: application/octet-stream\r\n\r\n";
  535.   $post.=$s."\r\n";
  536.   $post.="--".$boundary."--\r\n";
  537.  
  538.   $out="POST ".$source." HTTP/1.0\r\n";
  539.   $out.="Accept: */*\r\n";
  540.   $out.="Host: ".$host."\r\n";
  541.   $out.="Connection: close\r\n";
  542.   $out.="Content-Length: ".strlen($post)."\r\n";
  543.   $out.="Content-Type: multipart/form-data; boundary=".$boundary."\r\n\r\n";
  544.   $out.=$post;
  545.  
  546.   while (!$fp=@fsockopen($host,80,$errno,$errstr,30)) ;
  547.   fwrite($fp, $out);
  548.     $s.=fgets($fp,1);
  549.   fclose($fp);
  550.   return true;
  551. }
  552. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement