Обфускация кода (вопросы, просьбы зашифровать/расшифровать скрипт )

Discussion in 'PHP' started by Sharky, 29 Sep 2009.

  1. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    В данной теме обсуждаются вопросы связанные с обфускацией кода, а также осуществлется помощь с обфускацией/деобфускацией скриптов.


    Ссылки на утилиты и ресурсы, которые могут помочь в деобфускации:

    JavaScript:
    • http://jsbeautifier.org/
    • http://matthewfl.com/unPacker.html
    • https://addons.mozilla.org/en-us/firefox/addon/javascript-deobfuscator/ (расширение для Firefox)
    PHP:
    • http://ctrlq.org/beautifier/
    • http://beta.phpformatter.com/
    • Методика деобфускации PHP-скриптов для чайников.
    • PHP Generic Eval Unpacker
    • ByteRun PHP Decoder
    • DeIONizer

    Batch (.bat-файлы Windows):
    • Статический деобфускатор .bat-файлов.
     
    #1 Sharky, 29 Sep 2009
    Last edited by a moderator: 28 Sep 2016
    2 people like this.
    1. LolFEm

      LolFEm Elder - Старейшина

      Joined:
      8 Sep 2006
      Messages:
      160
      Likes Received:
      52
      Reputations:
      5
      небольшой обзор обфускаторов
       
      1. morpeh007

        morpeh007 New Member

        Joined:
        31 Mar 2009
        Messages:
        3
        Likes Received:
        1
        Reputations:
        0
        Помогите пожалуйста распутать веревку вроде этой:
        PHP:
        <?php 
        $OOO000000
        =urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');
        $OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
        $OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
        $OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};
        $O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14}.$OOO000000{3};
        $O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
        $OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};
        $OOO0O0O00=__FILE__;
        $OO00O0000=2504;
        eval(
        $OOO0000O0('aWYoITApJE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwME8wMCgkTzAwME8wTzAwLDEwMjQpOyRPME8wMDBPMDAoJE8wMDBPME8wMCw0MDk2KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMzgwKSwnVmlBcnRTaG9wUlVMY2tLZXlZRUNPbHVQSHNUYUl2QmJEZEZmR2dKak1tTm5RcVd3WHhaejAxMjM0NTY3ODkrLz0nLCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJykpO2V2YWwoJE9PMDBPMDBPMCk7'));
        return;
        ?>
        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
         
        1 person likes this.
        1. eLWAux

          eLWAux Elder - Старейшина

          Joined:
          15 Jun 2008
          Messages:
          860
          Likes Received:
          616
          Reputations:
          211
          morpeh007:

          после снятия обфускации \ .. остается кусок кода:
          Code:
          AFY2Hl9qa2Y1ahlbTuyD...Hu1gvhlZP25dauOjLAYXHPRdaul0sPRbaJSqsEG7AFY0LC5zsPYbvJSZUAvXHPRdaul0sPRbvJSQvuOjLAYXHPRdaul0sPRbvJSQvuOmKXMGvA0+IhSZI2OMR3idIJSqsPYgIjcjLoYZvuOmKXm9AFY0LC5zIhSZI2OMR3k1HJ1mvS9XHPgqsu50RZxJHuxzsEG7AFY0LC5XIhSZI2OMR21dTu4jUCQUsPdmvrQU
          скрипт его расшифровывает так:
          PHP:
          strtr(..., 'ViArtShopRULckKeyYECOluPHsTaIvBbDdFfGgJjMmNnQqWwXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
          в результате дешифровки получаем скрипт (модуль оплаты по вебмани):
          PHP:
              $va_module_id 'WebMoneyPayment';
              
          $va_module_func 'process';
              include_once (
          './va_payment_process.php');
              
          $purse_type = Array (
                      
          'Z'=>'USD',
                      
          'R'=>'RUR',
                      
          'E'=>'EUR',
                      
          'C'=>'USD',
                      
          'D'=>'USD',
                      
          'U'=>'UAH',
                      
          'Y'=>'UZS',
                      
          'B'=>'BYR'
              
          );
              
          $selected_purse substr($pass_data['LMI_PAYEE_PURSE'],0,1);
              foreach (
          $purse_type as $type =>$currency) {
                  if (
          $selected_purse == $type) {
                      
          $sql  ' SELECT currency_code, exchange_rate FROM '.$table_prefix .'currencies ';
                      
          $sql .= ' WHERE currency_code='.$db->tosql($currency,'');
                      
          $db->query($sql);
                      if (
          $db->next_record()) {
                           
          $c_rate strtoupper($db->f('exchange_rate'));
                      } else {
                          echo 
          'Извините, но у Вас нет валюты '.$currency.' в системе для проведения платежей в системе WebMoney на кошельки типа WM'.$type;
                          return;
                      }
                  }
              }
              
          $pass_data['LMI_PAYMENT_AMOUNT'] = round($pass_data['LMI_PAYMENT_AMOUNT'] * $c_rate,2);
              
          $pass_data['LMI_RESULT_URL'] = $variables['site_url'].'payments/webmoney_response.php';
              
          $pass_data['LMI_SUCCESS_METHOD'] = 1;
              
          $pass_data['LMI_SUCCESS_URL'] = $variables['site_url'].'order_final.php';
              
          $pass_data['LMI_FAIL_METHOD'] = 1;
              
          $pass_data['LMI_FAIL_URL'] = $variables['site_url'].'order_final.php';
              
          $t = new VA_Template('.'.$settings['templates_dir']);
              
          $t->set_file('main','payment.html');
              
          $payment_name $variables['payment_name'];
              
          $goto_payment_message str_replace('{payment_system}',$payment_name,GOTO_PAYMENT_MSG);
              
          $goto_payment_message str_replace('{button_name}',CONTINUE_BUTTON,$goto_payment_message);
              
          $t->set_var('GOTO_PAYMENT_MSG',$goto_payment_message);
              
          $t->set_var('payment_url','https://merchant.webmoney.ru/lmi/payment.asp');
              
          $t->set_var('submit_method','post');
              foreach (
          $pass_data as $parameter_name =>$parameter_value) {
                  
          $t->set_var('parameter_name',$parameter_name);
                  
          $t->set_var('parameter_value',$parameter_value);
                  
          $t->parse('parameters',true);
              }
              
          $t->sparse('submit_payment',false);
              
          $t->pparse('main');
              exit;
           
          3 people like this.
          1. morpeh007

            morpeh007 New Member

            Joined:
            31 Mar 2009
            Messages:
            3
            Likes Received:
            1
            Reputations:
            0
            Ой спасибки!
            А можно узнать чем такие орехи раскалывать. Потому что есть еще 3 штуки.
             
            1. eLWAux

              eLWAux Elder - Старейшина

              Joined:
              15 Jun 2008
              Messages:
              860
              Likes Received:
              616
              Reputations:
              211
              часто просто помогает подстановка "echo" вместо "eval", и анализ кода
               
              1. Alex$09

                Alex$09 New Member

                Joined:
                1 Oct 2009
                Messages:
                31
                Likes Received:
                1
                Reputations:
                0
                Можно поэтапно рассказать...?
                И пожалуйста декадируйте код

                <?php /* Copyright 2009 Nikolay Konokhov */$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$O0O000O0O=$O0O000O00.$OOO000000{11};$O0O000O00=$O0O000O00.$OOO000000{3};$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};$OOO0O0O00=__FILE__;$OO00O0000=14324;eval($OOO0000O0('JE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwT08wMCgkTzAwME8wTzAwLDB4NDk5KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMHgxN2MpLCdFbnRlcnlvdXdraFJIWUtOV09VVEFhQmJDY0RkRmZHZ0lpSmpMbE1tUHBRcVNzVnZYeFp6MDEyMzQ1Njc4OSsvPScsJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSk7ZXZhbCgkT08wME8wME8wKTs='));return;?>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dUL7tJOScB5mfoIINUnzfukScB4PkriiF2iTfuwpKXpMd3wIhtOpwe0IkoxldMf0DtEsHTSLDUE+NUEXKZOpwt0shUn7tJOUcUE9wtOwCbYPA3OZGZOpgTShDBCIherINT09wtILOMxicZElHJLpwuShkyklwtS9wtOUcTShkyklwe0IholVftLPkyklwt8IHTEpwtSPkyklwtAxHtL7tm0hkrYPcBYqWml0cUEqNUELAMA7tJOodoymwtSqKXp9tJOeDoajD0k5foAIkT0IHTE7tMlMwtIXwtr9NUELW2ilC2stGbOlhUn7tJOeDoajD0k5foAINUExHtEskrYPcBYqWml0cTShDBCIherINT09wtILOMxicZElHJLIhUn7tMlMwtIxwe09NUEPkrYPcBYqWml0cUElHJLpwuShkrYPcBYqWml0cUEqNUE5KXp9tJOeDoajD0k5foAINj49wer7tm0hgWpZcbO1FM4IkzFmRJOeDoajD0k5foAVkriiF2iTfuw7tm0hcmaVC3Opd24Ic2a0C2IPkuaZdtLIG3klfuaZdJneDoajD0iiF2IPUoyzDyaUTtILfbkShUL7gWpMfB5jfolvdJnmcbOXFJILfbkShUn7tMfSd2kidtELc29vc2xlDo9zftXLc29vc2xlfBr7tJOjDtE9woflfoYPhtO1FMXpKXPLcmEINUnEcmYvC2svFoaVhtOmd29mdoaPd3Y0ReIXRtOlFmkVdZXLcbkZF3OZReHXhTShDBCIhtOMFtLIGXPLd3a0we0IwLfyatEvF2aiFMYPN2YSDBaVfe1VCbcjdolldmWsCba0dZcjDe0LC2IMcMaifuaZcbH9AMyVDZcxNBlVcM86kuaZdtnwayOWRzrVHaxZbo4JKXPLd3a0wt49wtkaF2aZRAymcB50KJELc29vc2xlfByFFlxVwjShko91ftEVNUEJUo9zfePIkofvd2fScBivF3OFFlxVwjShko91ftEVNUEJW29VdMajfolvdjPIW2xvF2aFFlxVbukFdJw7tMc3FMl0cUILcmESko91ftL7tmfPDBxlwtIicMavcJILcmEphUn7tJOLCbOiwe0IcMflfuHPkocXRerZKtL7tJOXd3HINUnzfukXd3HPkoOiforSwlkidMsgwJL7tMlMhtOXd3HINT09wociduYlhbs9cBxzcbSh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
                 
                #7 Alex$09, 1 Oct 2009
                Last edited: 1 Oct 2009
                1. Zedi

                  Zedi Elder - Старейшина

                  Joined:
                  6 Jun 2007
                  Messages:
                  316
                  Likes Received:
                  120
                  Reputations:
                  13
                  Вместо евал подставляешь echo чуть ниже вместо $000000 базе 64 декоде, короче экспериментируй:) там все легко просто мудрено зашифровано название функции base64_decode
                   
                  1. morpeh007

                    morpeh007 New Member

                    Joined:
                    31 Mar 2009
                    Messages:
                    3
                    Likes Received:
                    1
                    Reputations:
                    0
                    Я пытался как то сам расшифровать код. Хотел бы получить наставление. Мой метод был такой: декодировал (urldecode) и получил символы индексных значений переменного $OOO0000O0. Далее вставив значения идексов вместо {0}{1} и т.д. получилось нечто вроде base64_decode. Мне интересно был ли я на правельном пути? И еще мне совсем не понятно с чего начинать при раскодировке последней строки Rt9ecriecriecr1gIJljP3RgIhxdH2OMR19bYGgcYl9bRZXFRZ.....

                    Вроде бы находится за пределами php. то есть за return;?>
                     
                    1. BlackSun

                      BlackSun Banned

                      Joined:
                      1 Apr 2007
                      Messages:
                      989
                      Likes Received:
                      1,168
                      Reputations:
                      446
                      1. Вырезаем пробелы
                      2. Приводим скрипт к более читаемому виду, а именно деобфусицируем имена функций
                      PHP:
                      // было
                      $OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');
                      $OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
                      /*echo '<br>'.*/$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
                      /*echo '<br>'.*/$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
                      /*echo '<br>'.*/$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};
                      /*echo '<br>'.*/$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};
                      /*echo '<br>'.*/$O0O000O0O=$O0O000O00.$OOO000000{11};
                      /*echo '<br>'.*/$O0O000O00=$O0O000O00.$OOO000000{3};
                      /*echo '<br>'.*/$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
                      /*echo '<br>'.*/$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};
                      $OOO0O0O00=__FILE__;
                      $OO00O0000=14324;
                      PHP:
                      // стало
                      $OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');
                      $OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
                      $OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
                      // base64_decode $OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
                      // fopen $OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};
                      // fget $O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};
                      // fgetc $O0O000O0O=$O0O000O00.$OOO000000{11};
                      // fgets $O0O000O00=$O0O000O00.$OOO000000{3};
                      // fread $O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
                      // strtr $OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};
                      // $self - это закодированный файл, вырезано все до самого 
                      ?>
                      /*$OOO0O0O00*/ $self='/var/www/php.old';
                      /*$OO00O0000*/ $start=14324;
                      3. Заменим eval на echo, $OOO0000O0 на base64_decode
                      И получим кусок кода:
                      PHP:
                      $O000O0O00=$OOO000O00($OOO0O0O00,'rb');$O0O00OO00($O000O0O00,0x499);$OO00O00O0=$OOO0000O0($OOO00000O($O0O00OO00($O000O0O00,0x17c),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));eval($OO00O00O0);
                      Суем его вместо строки с eval'ом, предварительно проведя небольшое исправление
                      PHP:
                      // стало
                      $file=fopen($self,'rb');
                      $tmp=base64_decode(strtr(fread($file,0x17c),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));
                      echo(
                      $tmp);
                      4. Получаем
                      PHP:
                      $OO00O00O0=str_replace('__FILE__',"'".$OOO0O0O00."'",$OOO0000O0($OOO00000O($O0O00OO00($O000O0O00,$OO00O0000),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));fclose($O000O0O00);eval($OO00O00O0);
                      Суем его заместо echo($tmp);, так же вроведя деобфусикацию

                      PHP:
                      // стало
                      $tmp base64_decode(strtr(fread($file,$start),'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));
                      fclose($file);
                      echo(
                      $tmp);
                      5. Получаем сорец:
                      PHP:
                      @session_start();
                      @error_reporting(7);
                      @ini_set('display_errors',true);
                      @ini_set('html_errors',false);
                      define('DATALIFEENGINE',true);
                      define('ROOT_DIR','../..');
                      define('ENGINE_DIR','..');
                      include ENGINE_DIR.'/data/config.php';
                      @include_once ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                      @include  (ENGINE_DIR.'/data/referer.perf.php');
                      @include  (ENGINE_DIR.'/data/referer.conf.php');
                      @include_once ('engine/api/api.class.php');
                      if ($config['http_home_url'] == "") {
                      $config['http_home_url'] = explode("engine/ajax/referer.php",$_SERVER['PHP_SELF']);
                      $config['http_home_url'] = reset($config['http_home_url']);
                      $config['http_home_url'] = "http://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
                      }
                      $lic_tr = false;
                      $site_key = str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                      $site_key = md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                      if ($site_key == $confms['key']) $lic_tr = true;
                      if(!$lic_tr) $confms['func_copyright'] = "yes";
                      function referer_block_end ($referer) {
                      global $langms,$dle_api,$confms;
                      if ($confms['func_copyright'] == "yes") {
                      $copyright .= "<div align=\"right\" style=\"font-size: 9px; padding-right: 3px;\">Copyright &copy; <a href=\"http://getdle.org.ru/\" target=\"_blank\" style=\"text-decoration: none; font-size: 9px;\">GetDLE</a></div>";
                      }else $copyright = "";
                      if (!$referer) $referer = $langms['no_seatrans'];
                      $referer = $referer.$copyright;
                      $dle_api->save_to_cache ( 'referer_block',$referer );
                      return $referer;
                      }
                      if ($_REQUEST['option']) {
                      require_once ENGINE_DIR.'/classes/mysql.php';
                      require_once ENGINE_DIR.'/data/dbconfig.php';
                      require_once ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                      $config['charset'] = ($lang['charset'] != '') ?$lang['charset'] : $config['charset'];
                      require_once ENGINE_DIR.'/inc/include/functions.inc.php';
                      require_once ENGINE_DIR.'/modules/sitelogin.php';
                      }
                      if ($_REQUEST['option'] == "activations") {
                      $domain = strtolower($_SERVER['HTTP_HOST']);
                      $key = trim($_REQUEST['key']);
                      if (!@file_get_contents("http://getdle.org.ru/extras/referer/connect.txt"))
                      {
                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация модуля не была произведена, не удалось установить подключение к удаленному серверу. Попробуйте повторить активацию немного позднее.</div>");
                      }
                      if (!$key)
                      {
                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Форма не была заполнена, повторите ввод ключа!</div>");
                      }else {
                      $host='www.getdle.org.ru';
                      $path='/extras/referer/activate.php';
                      $query = "domain={$domain}&key={$key}";
                      if (@file_get_contents("http://".$host.$path."?".$query) == "yes") {
                      include_once (ENGINE_DIR.'/data/referer.conf.php');
                      $site_key = str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                      $site_key = md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                      $confms['key'] = $site_key;
                      $handler = fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                      fwrite($handler,"<?PHP\r\n\$confms = array (\r\n");
                      foreach($confms as $name =>$value)
                      PHP:
                      {
                      $value=addslashes($value);
                      fwrite($handler,"'{$name}' => \"{$value}\",\r\n");
                      }
                      fwrite($handler,");\r\n?>");
                      fclose($handler);
                      die(
                      "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#64c245;\" class=\"navigation\">Благодарим Вас за покупку нашего модуля. Надеемся что работа с ним доставит Вам только удовольствие! Обновите страницу, чтобы приступить к работе!</div>");
                      }else {
                      die(
                      "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация DataLife Engine не была произведена, введенные данные не соответствуют необходимым, либо данная копия была уже активирована на другом сервере.</div>");
                      }
                      };
                      }elseif (
                      $_REQUEST['option'] == "checkinfo") {
                      include 
                      ENGINE_DIR.'/data/referer.perf.php';
                      if (
                      in_array($_REQUEST['site'],$engines)) $_REQUEST['site'] = $engine[$_REQUEST['site']]['0'];
                      $url str_replace ('www.','',$_REQUEST['site']);
                      function 
                      getBarCY($_url) {
                      $_uri "http://bar-navig.yandex.ru/u?ver=2&url=".
                      urlencode($_url)."&show=1";
                      $fd = @fopen($_uri,"r");
                      if (
                      $fd) {
                      while (
                      $buffer fgets($fd,4096)) $haystack.=$buffer;
                      fclose($fd);
                      preg_match("/<tcy rang=\"(.*)\" value=\"(.*)\"\/>/isU",
                      $haystack,$cy);
                      return (int) 
                      $cy[2];
                      }else return 
                      0;
                      }
                      $googlehost='toolbarqueries.google.com';
                      $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
                      function 
                      StrToNum($Str,$Check,$Magic) {
                      $Int32Unit 4294967296;
                      $length strlen($Str);
                      for (
                      $i 0;$i <$length;$i++) {
                      $Check *= $Magic;
                      if (
                      $Check >= $Int32Unit) {
                      $Check = ($Check -$Int32Unit * (int) ($Check $Int32Unit));
                      $Check = ($Check <-2147483648) ?($Check +$Int32Unit) : $Check;
                      }
                      $Check += ord($Str{$i});
                      }
                      return 
                      $Check;
                      }
                      PHP:
                      function HashURL($String) {
                      $Check1 StrToNum($String,0x1505,0x21);
                      $Check2 StrToNum($String,0,0x1003F);
                      $Check1 >>= 2;
                      $Check1 = (($Check1 >>4) &0x3FFFFC0 ) |($Check1 &0x3F);
                      $Check1 = (($Check1 >>4) &0x3FFC00 ) |($Check1 &0x3FF);
                      $Check1 = (($Check1 >>4) &0x3C000 ) |($Check1 &0x3FFF);
                      $T1 = (((($Check1 &0x3C0) <<4) |($Check1 &0x3C)) <<) |($Check2 &0xF0F );
                      $T2 = (((($Check1 &0xFFFFC000) <<4) |($Check1 &0x3C00)) <<0xA) |($Check2 &0xF0F0000 );
                      return (
                      $T1 |$T2);
                      }
                      function 
                      CheckHash($Hashnum) {
                      $CheckByte 0;
                      $Flag 0;
                      $HashStr sprintf('%u',$Hashnum);
                      $length strlen($HashStr);
                      for (
                      $i $length -1;$i >= 0;$i --) {
                      $Re $HashStr{$i};
                      if (
                      === ($Flag %2)) {
                      $Re += $Re;
                      $Re = (int)($Re 10) +($Re %10);
                      }
                      $CheckByte += $Re;
                      $Flag ++;
                      }
                      $CheckByte %= 10;
                      if (
                      !== $CheckByte) {
                      $CheckByte 10 -$CheckByte;
                      if (
                      === ($Flag %2) ) {
                      if (
                      === ($CheckByte %2)) {
                      $CheckByte += 9;
                      }
                      $CheckByte >>= 1;
                      }
                      }
                      return 
                      '7'.$CheckByte.$HashStr;
                      }
                      function 
                      getch($url) {return CheckHash(HashURL($url));}
                      function 
                      getpr($url) {
                      global 
                      $googlehost,$googleua;
                      $ch getch($url);
                      $fp = @fsockopen($googlehost,80,$errno,$errstr,30);
                      if (
                      $fp) {
                      $out "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
                      $out .= "User-Agent: $googleua\r\n";
                      $out .= "Host: $googlehost\r\n";
                      $out .= "Connection: Close\r\n\r\n";
                      fwrite($fp,$out);
                      while (!
                      feof($fp)) {
                      $data fgets($fp,128);
                      $pos strpos($data,"Rank_");
                      if(
                      $pos === false){}else{
                      $pr=substr($data,$pos +9);
                      $pr=trim($pr);
                      $pr=str_replace("\n",'',$pr);
                      return 
                      $pr;
                      }
                      }
                      fclose($fp);
                      }
                      }
                      if(!
                      getpr($url)) {
                      $pr "0";
                      }else {
                      $pr getpr($url);
                      }
                      $tic getBarCY("http://".$url);
                      function 
                      dmoz($url) {
                      $path ="http://search.dmoz.org/cgi-bin/search?search=".str_replace("www.","",$url);
                      if(!
                      file_exists($path)) {
                      $data strip_tags(@implode("",@file($path)));
                      if(
                      strpos($data,"No Open Directory Project results found")) {
                      $results '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Не описан</a>';
                      }else {
                      $results '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Есть</a>';
                      }
                      }else {
                      $results 'нет данных';
                      }
                      PHP:
                      return $results;
                      }
                      $zurl = preg_replace("/^(http:\/\/)/i","",$url);
                      $zurl = preg_replace("/\/(.*)$/i","",$zurl);
                      $parse_ya = @file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$zurl);
                      function get_yaca($url){
                      global $parse_ya,$zurl;
                      preg_match('/<topic title="(.*)" url="(.*)"\/>/i',$parse_ya,$patterns);
                      $lnk_cat = $patterns[2];
                      $res = array();
                      array_push($res,$patterns[1]);
                      array_push($res,count($patterns[2]));
                      if(!empty($res[0])){
                      return 'Есть - <a href="'.$lnk_cat.'">'.$res[0].'</a>';
                      }else{
                      return "<a target=\"_blank\" href=\"http://search.yaca.yandex.ru/yca/cy/ch/{$zurl}/\">Не описан</a>";
                      }
                      }
                      $dmoz = dmoz($url);
                      $yaca = get_yaca($url);
                      $info .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
                        <tr> 
                          <td><img alt=\"Это скриншот сайта {$_REQUEST['site']}.\" src=\"http://images.websnapr.com/?url={$_REQUEST['site']}&size=t&nocache=90\" style=\"height:70px;    width:90px;\"></td>
                          <td>
                          PageRang: <b>{$pr}</b>; Яндекс тИЦ: <b>{$tic}</b>;<br />
                          Каталог DMOZ: {$dmoz}<br />
                          Каталог Yandex: {$yaca}<br /><br />
                          <a href=\"http://{$_REQUEST['site']}\" target=\"_blank\">Перейти на сайт &rarr;</a>
                          </td>
                        </tr>
                      </table>";
                      die($info);
                      }elseif ($_REQUEST['option'] == "addipignor") {
                      $site_tog = stristr($confms['ip_ignor'],$_REQUEST['ip']);
                      if($site_tog) die("Ошибка! IP-адрес {$_REQUEST['ip']} уже был занесен в список игнорируемых IP-адресов.");
                      if ($confms['ip_ignor']) {
                      $confms['ip_ignor'] = $confms['ip_ignor'].", ".$_REQUEST['ip'];
                      }else {
                      $confms['ip_ignor'] = $_REQUEST['ip'];
                      }
                      $handler = fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                      fwrite($handler,"<?PHP \r\n\$confms = array (\r\n");
                      foreach(
                      $confms as $name =>$value)
                      {
                      $value=trim(stripslashes ($value));
                      $value=htmlspecialchars ($value,ENT_QUOTES);
                      fwrite(
                      $handler,"'{$name}' => \"{$value}\",\r\n");
                      }
                      fwrite($handler,");\r\n?>");
                      fclose($handler);
                      die(
                      "IP-адрес {$_REQUEST['ip']} занесен в список игнорируемых IP-адресов.");
                      }elseif (
                      $_REQUEST['option'] == "addignor") {
                      $site_tog stristr($confms['site_ignor'],$_REQUEST['site']);
                      if(
                      $site_tog) die("Ошибка! Сайт {$_REQUEST['site']} уже был занесен в список игнорируемых сайтов.");
                      if (
                      $confms['site_ignor']) {
                      $confms['site_ignor'] = $confms['site_ignor'].", ".$_REQUEST['site'];
                      }else {
                      $confms['site_ignor'] = $_REQUEST['site'];
                      }
                      PHP:
                      $handler = fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                      fwrite($handler,"<?PHP \r\n\$confms = array (\r\n");
                      foreach(
                      $confms as $name =>$value)
                      {
                      $value=trim(stripslashes ($value));
                      $value=htmlspecialchars ($value,ENT_QUOTES);
                      fwrite(
                      $handler,"'{$name}' => \"{$value}\",\r\n");
                      }
                      fwrite($handler,");\r\n?>");
                      fclose($handler);
                      die(
                      "Сайт {$_REQUEST['site']} занесен в список игнорируемых сайтов.");
                      }elseif (
                      $_REQUEST['option'] == "confirmdelete") {
                      $db->query ("DELETE FROM ".PREFIX ."_referer WHERE id = '".$_REQUEST['id'] ."'");
                      if((
                      $member_id['user_group'] != 1)) {die ("error");}
                      if (
                      $_REQUEST['user_hash'] == ""OR $_REQUEST['user_hash'] != $dle_login_hash) {
                      die (
                      "error");
                      }
                      die(
                      "<div class=\"refer-del\" alt=\"".$langms['sea_delete_info']."\">".$langms['sea_delete']."</div>");
                      }elseif (
                      $_REQUEST['option'] == "checkupd") {
                      $update = @file_get_contents("http://www.getdle.org.ru/extras/referer/version.txt");
                      if(
                      $update >$langms['version']) $info $langms['ref_upd_01'];
                      elseif(
                      $update == $langms['version']) $info $langms['ref_upd_02'];
                      elseif(
                      $update == "") {$update "--";$info $langms['ref_upd_03'];}
                      elseif(
                      $update <$langms['version']) $info $langms['ref_upd_04'];
                      die(
                      "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190);padding: 5px;margin-top: 7px;margin-right: 10px;\">Последняя версия: ".$update." (".$info.")</div>");
                      }
                       
                      4 people like this.
                      1. eLWAux

                        eLWAux Elder - Старейшина

                        Joined:
                        15 Jun 2008
                        Messages:
                        860
                        Likes Received:
                        616
                        Reputations:
                        211
                        Alex$09:
                        PHP:
                        @session_start();
                        @
                        error_reporting(7);
                        @
                        ini_set('display_errors',true);
                        @
                        ini_set('html_errors',false);
                        define('DATALIFEENGINE',true);
                        define('ROOT_DIR','../..');
                        define('ENGINE_DIR','..');
                        include 
                        ENGINE_DIR.'/data/config.php';
                        @include_once 
                        ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                        @include  (
                        ENGINE_DIR.'/data/referer.perf.php');
                        @include  (
                        ENGINE_DIR.'/data/referer.conf.php');
                        @include_once (
                        'engine/api/api.class.php');
                        if (
                        $config['http_home_url'] == "") {
                        $config['http_home_url'] = explode("engine/ajax/referer.php",$_SERVER['PHP_SELF']);
                        $config['http_home_url'] = reset($config['http_home_url']);
                        $config['http_home_url'] = "http://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
                        }
                        $lic_tr false;
                        $site_key str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                        $site_key md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                        if (
                        $site_key == $confms['key']) $lic_tr true;
                        if(!
                        $lic_tr$confms['func_copyright'] = "yes";
                        function 
                        referer_block_end ($referer) {
                        global 
                        $langms,$dle_api,$confms;
                        if (
                        $confms['func_copyright'] == "yes") {
                        $copyright .= "<div align=\"right\" style=\"font-size: 9px; padding-right: 3px;\">Copyright &copy; <a href=\"http://getdle.org.ru/\" target=\"_blank\" style=\"text-decoration: none; font-size: 9px;\">GetDLE</a></div>";
                        }else 
                        $copyright "";
                        if (!
                        $referer$referer $langms['no_seatrans'];
                        $referer $referer.$copyright;
                        $dle_api->save_to_cache 'referer_block',$referer );
                        return 
                        $referer;
                        }
                        if (
                        $_REQUEST['option']) {
                        require_once 
                        ENGINE_DIR.'/classes/mysql.php';
                        require_once 
                        ENGINE_DIR.'/data/dbconfig.php';
                        require_once 
                        ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                        $config['charset'] = ($lang['charset'] != '') ?$lang['charset'] : $config['charset'];
                        require_once 
                        ENGINE_DIR.'/inc/include/functions.inc.php';
                        require_once 
                        ENGINE_DIR.'/modules/sitelogin.php';
                        }
                        if (
                        $_REQUEST['option'] == "activations") {
                        $domain strtolower($_SERVER['HTTP_HOST']);
                        $key trim($_REQUEST['key']);
                        if (!@
                        file_get_contents("http://getdle.org.ru/extras/referer/connect.txt"))
                        {
                        die(
                        "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация модуля не была произведена, не удалось установить подключение к удаленному серверу. Попробуйте повторить активацию немного позднее.</div>");
                        }
                        if (!
                        $key)
                        {
                        die(
                        "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Форма не была заполнена, повторите ввод ключа!</div>");
                        }else {
                        $host='www.getdle.org.ru';
                        $path='/extras/referer/activate.php';
                        $query "domain={$domain}&key={$key}";
                        if (@
                        file_get_contents("http://".$host.$path."?".$query) == "yes") {
                        include_once (
                        ENGINE_DIR.'/data/referer.conf.php');
                        $site_key str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                        $site_key md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                        $confms['key'] = $site_key;
                        $handler fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                        fwrite($handler," \"{$value}\",\r\n");
                        }
                        fwrite($handler,");\r\n?>");
                        fclose($handler);
                        die(
                        "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#64c245;\" class=\"navigation\">Благодарим Вас за покупку нашего модуля. Надеемся что работа с ним доставит Вам только удовольствие! Обновите страницу, чтобы приступить к работе!</div>");
                        }else {
                        die(
                        "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация DataLife Engine не была произведена, введенные данные не соответствуют необходимым, либо данная копия была уже активирована на другом сервере.</div>");
                        }
                        };
                        }elseif (
                        $_REQUEST['option'] == "checkinfo") {
                        include 
                        ENGINE_DIR.'/data/referer.perf.php';
                        if (
                        in_array($_REQUEST['site'],$engines)) $_REQUEST['site'] = $engine[$_REQUEST['site']]['0'];
                        $url str_replace ('www.','',$_REQUEST['site']);
                        function 
                        getBarCY($_url) {
                        $_uri "http://bar-navig.yandex.ru/u?ver=2&url=".
                        urlencode($_url)."&show=1";
                        $fd = @fopen($_uri,"r");
                        if (
                        $fd) {
                        while (
                        $buffer fgets($fd,4096)) $haystack.=$buffer;
                        fclose($fd);
                        preg_match("/<tcy rang=\"(.*)\" value=\"(.*)\"\/>/isU",
                        $haystack,$cy);
                        return (int) 
                        $cy[2];
                        }else return 
                        0;
                        }
                        $googlehost='toolbarqueries.google.com';
                        $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
                        function 
                        StrToNum($Str,$Check,$Magic) {
                        $Int32Unit 4294967296;
                        $length strlen($Str);
                        for (
                        $i 0;$i <$length;$i++) {
                        $Check *= $Magic;
                        if (
                        $Check >= $Int32Unit) {
                        $Check = ($Check -$Int32Unit * (int) ($Check $Int32Unit));
                        $Check = ($Check <-2147483648) ?($Check +$Int32Unit) : $Check;
                        }
                        $Check += ord($Str{$i});
                        }
                        return 
                        $Check;
                        }
                        function 
                        HashURL($String) {
                        $Check1 StrToNum($String,0x1505,0x21);
                        $Check2 StrToNum($String,0,0x1003F);
                        $Check1 >>= 2;
                        $Check1 = (($Check1 >>4) &0x3FFFFC0 ) |($Check1 &0x3F);
                        $Check1 = (($Check1 >>4) &0x3FFC00 ) |($Check1 &0x3FF);
                        $Check1 = (($Check1 >>4) &0x3C000 ) |($Check1 &0x3FFF);
                        $T1 = (((($Check1 &0x3C0) <<4) |($Check1 &0x3C)) <<) |($Check2 &0xF0F );
                        $T2 = (((($Check1 &0xFFFFC000) <<4) |($Check1 &0x3C00)) <<0xA) |($Check2 &0xF0F0000 );
                        return (
                        $T1 |$T2);
                        }
                        function 
                        CheckHash($Hashnum) {
                        $CheckByte 0;
                        $Flag 0;
                        $HashStr sprintf('%u',$Hashnum);
                        $length strlen($HashStr);
                        for (
                        $i $length -1;$i >= 0;$i --) {
                        $Re $HashStr{$i};
                        if (
                        === ($Flag %2)) {
                        $Re += $Re;
                        $Re = (int)($Re 10) +($Re %10);
                        }
                        $CheckByte += $Re;
                        $Flag ++;
                        }
                        $CheckByte %= 10;
                        if (
                        !== $CheckByte) {
                        $CheckByte 10 -$CheckByte;
                        if (
                        === ($Flag %2) ) {
                        if (
                        === ($CheckByte %2)) {
                        $CheckByte += 9;
                        }
                        $CheckByte >>= 1;
                        }
                        }
                        return 
                        '7'.$CheckByte.$HashStr;
                        }
                        function 
                        getch($url) {return CheckHash(HashURL($url));}
                        function 
                        getpr($url) {
                        global 
                        $googlehost,$googleua;
                        $ch getch($url);
                        $fp = @fsockopen($googlehost,80,$errno,$errstr,30);
                        if (
                        $fp) {
                        $out "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
                        $out .= "User-Agent: $googleua\r\n";
                        $out .= "Host: $googlehost\r\n";
                        $out .= "Connection: Close\r\n\r\n";
                        fwrite($fp,$out);
                        while (!
                        feof($fp)) {
                        $data fgets($fp,128);
                        $pos strpos($data,"Rank_");
                        if(
                        $pos === false){}else{
                        $pr=substr($data,$pos +9);
                        $pr=trim($pr);
                        $pr=str_replace("\n",'',$pr);
                        return 
                        $pr;
                        }
                        }
                        fclose($fp);
                        }
                        }
                        if(!
                        getpr($url)) {
                        $pr "0";
                        }else {
                        $pr getpr($url);
                        }
                        $tic getBarCY("http://".$url);
                        function 
                        dmoz($url) {
                        $path ="http://search.dmoz.org/cgi-bin/search?search=".str_replace("www.","",$url);
                        if(!
                        file_exists($path)) {
                        $data strip_tags(@implode("",@file($path)));
                        if(
                        strpos($data,"No Open Directory Project results found")) {
                        $results '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Не описан</a>';
                        }else {
                        $results '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Есть</a>';
                        }
                        }else {
                        $results 'нет данных';
                        }
                        return 
                        $results;
                        }
                        $zurl preg_replace("/^(http:\/\/)/i","",$url);
                        $zurl preg_replace("/\/(.*)$/i","",$zurl);
                        $parse_ya = @file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$zurl);
                        function 
                        get_yaca($url){
                        global 
                        $parse_ya,$zurl;
                        preg_match('/<topic title="(.*)" url="(.*)"\/>/i',$parse_ya,$patterns);
                        $lnk_cat $patterns[2];
                        $res = array();
                        array_push($res,$patterns[1]);
                        array_push($res,count($patterns[2]));
                        if(!empty(
                        $res[0])){
                        return 
                        'Есть - <a href="'.$lnk_cat.'">'.$res[0].'</a>';
                        }else{
                        return 
                        "<a target=\"_blank\" href=\"http://search.yaca.yandex.ru/yca/cy/ch/{$zurl}/\">Не описан</a>";
                        }
                        }
                        $dmoz dmoz($url);
                        $yaca get_yaca($url);
                        $info .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> 
                          <tr> 
                            <td><img alt=\"Это скриншот сайта 
                        {$_REQUEST['site']}.\" src=\"http://images.websnapr.com/?url={$_REQUEST['site']}&size=t&nocache=90\" style=\"height:70px;    width:90px;\"></td> 
                            <td> 
                            PageRang: <b>
                        {$pr}</b>; Яндекс тИЦ: <b>{$tic}</b>;<br /> 
                            Каталог DMOZ: 
                        {$dmoz}<br /> 
                            Каталог Yandex: 
                        {$yaca}<br /><br /> 
                            <a href=\"http://
                        {$_REQUEST['site']}\" target=\"_blank\">Перейти на сайт &rarr;</a> 
                            </td> 
                          </tr> 
                        </table>"
                        ;
                        die(
                        $info);
                        }elseif (
                        $_REQUEST['option'] == "addipignor") {
                        $site_tog stristr($confms['ip_ignor'],$_REQUEST['ip']);
                        if(
                        $site_tog) die("Ошибка! IP-адрес {$_REQUEST['ip']} уже был занесен в список игнорируемых IP-адресов.");
                        if (
                        $confms['ip_ignor']) {
                        $confms['ip_ignor'] = $confms['ip_ignor'].", ".$_REQUEST['ip'];
                        }else {
                        $confms['ip_ignor'] = $_REQUEST['ip'];
                        }
                        $handler fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                        fwrite($handler," \"{$value}\",\r\n");
                        }
                        fwrite($handler,");\r\n?>");
                        fclose($handler);
                        die(
                        "IP-адрес {$_REQUEST['ip']} занесен в список игнорируемых IP-адресов.");
                        }elseif (
                        $_REQUEST['option'] == "addignor") {
                        $site_tog stristr($confms['site_ignor'],$_REQUEST['site']);
                        if(
                        $site_tog) die("Ошибка! Сайт {$_REQUEST['site']} уже был занесен в список игнорируемых сайтов.");
                        if (
                        $confms['site_ignor']) {
                        $confms['site_ignor'] = $confms['site_ignor'].", ".$_REQUEST['site'];
                        }else {
                        $confms['site_ignor'] = $_REQUEST['site'];
                        }
                        $handler fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                        fwrite($handler," \"{$value}\",\r\n");
                        }
                        fwrite($handler,");\r\n?>");
                        fclose($handler);
                        die(
                        "Сайт {$_REQUEST['site']} занесен в список игнорируемых сайтов.");
                        }elseif (
                        $_REQUEST['option'] == "confirmdelete") {
                        $db->query ("DELETE FROM ".PREFIX ."_referer WHERE id = '".$_REQUEST['id'] ."'");
                        if((
                        $member_id['user_group'] != 1)) {die ("error");}
                        if (
                        $_REQUEST['user_hash'] == ""OR $_REQUEST['user_hash'] != $dle_login_hash) {
                        die (
                        "error");
                        }
                        die(
                        "<div class=\"refer-del\" alt=\"".$langms['sea_delete_info']."\">".$langms['sea_delete']."</div>");
                        }elseif (
                        $_REQUEST['option'] == "checkupd") {
                        $update = @file_get_contents("http://www.getdle.org.ru/extras/referer/version.txt");
                        if(
                        $update >$langms['version']) $info $langms['ref_upd_01'];
                        elseif(
                        $update == $langms['version']) $info $langms['ref_upd_02'];
                        elseif(
                        $update == "") {$update "--";$info $langms['ref_upd_03'];}
                        elseif(
                        $update <$langms['version']) $info $langms['ref_upd_04'];
                        die(
                        "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190);padding: 5px;margin-top: 7px;margin-right: 10px;\">Последняя версия: ".$update." (".$info.")</div>");
                        }
                         
                        1 person likes this.
                        1. eLWAux

                          eLWAux Elder - Старейшина

                          Joined:
                          15 Jun 2008
                          Messages:
                          860
                          Likes Received:
                          616
                          Reputations:
                          211
                          в основе етих двух скриптов- ф-ция strtr.
                          - сперва делает base64_decode куска кода
                          - исполняя его, читает сам себя
                          - пропускат начало файла - код, и читает текст, начиная от ?>...
                          - сперва читает N символов, применяет для них strtr, потом бейс64
                          - потом опять исполняет его, и читает оставшеюся часть кода
                          - делает с ним тоже strtr и base64_decode
                          - на выходе - чистиый код

                          з.ы:
                          PHP:
                          $db->query ("DELETE FROM ".PREFIX ."_referer WHERE id = '".$_REQUEST['id'] ."'"); 
                           
                          #12 eLWAux, 2 Oct 2009
                          Last edited: 2 Oct 2009
                          2 people like this.
                          1. Alex$09

                            Alex$09 New Member

                            Joined:
                            1 Oct 2009
                            Messages:
                            31
                            Likes Received:
                            1
                            Reputations:
                            0
                            Спасибо за код, но я незнаю он правельно переведен или нет но когда я его подменяю он не хочет работать(
                             
                            1. sevenup

                              sevenup Member

                              Joined:
                              4 Oct 2009
                              Messages:
                              100
                              Likes Received:
                              17
                              Reputations:
                              7
                              помогите расшифровать:
                              Code:
                              87f57a460c276ab1405143ad91ecb2ccd1458198d5a91537916c78a3f6555bca3195fbb1b765c28fee886a1346f579b10aca8d004100159c4c3642b289407af32b74df9a3ffab4b9df8557f653a3feb7ddb93783b0f9c9d8eb93e3e85e349a1b662b5a864686f30e083c27a86c5d1df00feb90da845ec88182ba0d937e3abc7e0a713c2d11dc129981934a28cd25b972eb3dadb1bb88bc7e8994ce18eb8ae022ba097bb39e3a0be50a5b5aafc219717e6ddbfd930fae3c4000a00770ef60fe975d48f441ff505f2ab85eed6ee246ea3a550dfaa234bbf0ca7d42154c9cd3458b6f7520f34fdb56924e70445c4945ef6629d82fbc0818e876b5836c72079aed532b9ddf63f3d8c96f871bf24daeedb210ae3d060b767fee5abb19c3d029d1d1ccefecefe177c376f9aec77bcdf890fb9e527dad866888858972877047e659132c5d4de3741e7b0043b1a192d5e48b991e0f6818f0c2fdc7ad631fc119e480e9ca3cc71df51eff4acd6777dfc151b4d0d63cc4ee0f45174b2259788d3a15796694
                              
                               
                              1. SQLHACK

                                SQLHACK Остались только слоны

                                Joined:
                                27 Sep 2006
                                Messages:
                                437
                                Likes Received:
                                372
                                Reputations:
                                407
                                дублирую тут.

                                та обфускация снялась на автомате такой штукой.
                                (исходный файл сохранен c:/referer.php
                                PHP:
                                <?php

                                $f 
                                file_get_contents("c:/referer.php"); 
                                preg_match("#\<\?php(.+)\?\>#i"$f$match);  
                                $f str_replace("eval""echo"$match[1]); 
                                ob_start(); eval($f); $f ob_get_contents(); ob_flush(); 

                                $OOO0O0O00 "c:/referer.php"
                                for(
                                $x=1;$x<=2;$x++){
                                    
                                $f str_replace("eval""echo"$f); 
                                    
                                ob_start(); eval($f); $f ob_get_contents(); ob_flush(); 
                                }

                                echo 
                                $f

                                ?>
                                 
                                _________________________
                                1. MafyO_o

                                  MafyO_o New Member

                                  Joined:
                                  12 Aug 2009
                                  Messages:
                                  9
                                  Likes Received:
                                  0
                                  Reputations:
                                  0
                                  разшифруйте пл3 етот файл ТыК
                                   
                                  #16 MafyO_o, 6 Oct 2009
                                  Last edited: 7 Oct 2009
                                  1. eLWAux

                                    eLWAux Elder - Старейшина

                                    Joined:
                                    15 Jun 2008
                                    Messages:
                                    860
                                    Likes Received:
                                    616
                                    Reputations:
                                    211
                                    пособие

                                    вижу пошло много одинаковых скриптов аля "Copyright 2009 Nikolay Konokhov"..

                                    как его расшифровать:
                                    1. открывает файл блокнотом
                                    2. ищем "return;?>", после него идет зашифрований код
                                    3. удаляем все, оставляем только зашифрований код
                                    4. пропускаем 380 символов, начиная с начала етого кода (
                                      или: ищем первую позицию: "==")
                                    5. удаляем первых 380 символов (или текст до "==")
                                    6. далее создаем php код:
                                      PHP:
                                      $s 'тут весь код что остался';
                                      echo 
                                      base64_decode(strtr($s,'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));
                                    7. запускаем скрипт и видем расшифрованный вариант
                                     
                                    1 person likes this.
                                    1. eLWAux

                                      eLWAux Elder - Старейшина

                                      Joined:
                                      15 Jun 2008
                                      Messages:
                                      860
                                      Likes Received:
                                      616
                                      Reputations:
                                      211
                                      Mafyo_O:
                                      PHP:
                                      @session_start();
                                      @error_reporting(7);
                                      @ini_set('display_errors',true);
                                      @ini_set('html_errors',false);
                                      define('DATALIFEENGINE',true);
                                      define('ROOT_DIR','../..');
                                      define('ENGINE_DIR','..');
                                      include ENGINE_DIR.'/data/config.php';
                                      @include_once ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                                      @include  (ENGINE_DIR.'/data/referer.perf.php');
                                      @include  (ENGINE_DIR.'/data/referer.conf.php');
                                      @include_once ('engine/api/api.class.php');
                                      if ($config['http_home_url'] == "") {
                                      $config['http_home_url'] = explode("engine/ajax/referer.php",$_SERVER['PHP_SELF']);
                                      $config['http_home_url'] = reset($config['http_home_url']);
                                      $config['http_home_url'] = "http://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
                                      }
                                      $lic_tr = false;
                                      $site_key = str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                                      $site_key = md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                                      if ($site_key == $confms['key']) $lic_tr = true;
                                      if(!$lic_tr) $confms['func_copyright'] = "yes";
                                      function referer_block_end ($referer) {
                                      global $langms,$dle_api,$confms;
                                      if ($confms['func_copyright'] == "yes") {
                                      $copyright .= "<div align=\"right\" style=\"font-size: 9px; padding-right: 3px;\">Copyright &copy; <a href=\"http://getdle.org.ru/\" target=\"_blank\" style=\"text-decoration: none; font-size: 9px;\">GetDLE</a></div>";
                                      }else $copyright = "";
                                      if (!$referer) $referer = $langms['no_seatrans'];
                                      $referer = $referer.$copyright;
                                      $dle_api->save_to_cache ( 'referer_block',$referer );
                                      return $referer;
                                      }
                                      if ($_REQUEST['option']) {
                                      require_once ENGINE_DIR.'/classes/mysql.php';
                                      require_once ENGINE_DIR.'/data/dbconfig.php';
                                      require_once ROOT_DIR.'/language/'.$config['langs'].'/referer.lng';
                                      $config['charset'] = ($lang['charset'] != '') ?$lang['charset'] : $config['charset'];
                                      require_once ENGINE_DIR.'/inc/include/functions.inc.php';
                                      require_once ENGINE_DIR.'/modules/sitelogin.php';
                                      }
                                      if ($_REQUEST['option'] == "activations") {
                                      $domain = strtolower($_SERVER['HTTP_HOST']);
                                      $key = trim($_REQUEST['key']);
                                      if (!@file_get_contents("http://getdle.org.ru/extras/referer/connect.txt"))
                                      {
                                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация модуля не была произведена, не удалось установить подключение к удаленному серверу. Попробуйте повторить активацию немного позднее.</div>");
                                      }
                                      if (!$key)
                                      {
                                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Форма не была заполнена, повторите ввод ключа!</div>");
                                      }else {
                                      $host='www.getdle.org.ru';
                                      $path='/extras/referer/activate.php';
                                      $query = "domain={$domain}&key={$key}";
                                      if (@file_get_contents("http://".$host.$path."?".$query) == "yes") {
                                      include_once (ENGINE_DIR.'/data/referer.conf.php');
                                      $site_key = str_replace("www.","",strtolower($_SERVER['HTTP_HOST']));
                                      $site_key = md5(md5(base64_encode(md5('['.$site_key.'][43434]'))));
                                      $confms['key'] = $site_key;
                                      $handler = fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                                      fwrite($handler,"<?PHP\r\n\$confms = array (\r\n");
                                      foreach($confms as $name =>$value)
                                      {
                                      $value=addslashes($value);
                                      fwrite($handler,"'{$name}' => \"{$value}\",\r\n");
                                      }
                                      fwrite($handler,");\r\n?>");
                                      fclose($handler);
                                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#64c245;\" class=\"navigation\">Благодарим Вас за покупку нашего модуля. Надеемся что работа с ним доставит Вам только удовольствие! Обновите страницу, чтобы приступить к работе!</div>");
                                      }else {
                                      die("<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190); padding: 5px; color:#FF6666;\" class=\"navigation\">Активация DataLife Engine не была произведена, введенные данные не соответствуют необходимым, либо данная копия была уже активирована на другом сервере.</div>");
                                      }
                                      };
                                      }elseif ($_REQUEST['option'] == "checkinfo") {
                                      include ENGINE_DIR.'/data/referer.perf.php';
                                      if (in_array($_REQUEST['site'],$engines)) $_REQUEST['site'] = $engine[$_REQUEST['site']]['0'];
                                      $url = str_replace ('www.','',$_REQUEST['site']);
                                      function getBarCY($_url) {
                                      $_uri = "http://bar-navig.yandex.ru/u?ver=2&url=".
                                      urlencode($_url)."&show=1";
                                      $fd = @fopen($_uri,"r");
                                      if ($fd) {
                                      while ($buffer = fgets($fd,4096)) $haystack.=$buffer;
                                      fclose($fd);
                                      preg_match("/<tcy rang=\"(.*)\" value=\"(.*)\"\/>/isU",
                                      $haystack,$cy);
                                      return (int) $cy[2];
                                      }else return 0;
                                      }
                                      $googlehost='toolbarqueries.google.com';
                                      $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
                                      function StrToNum($Str,$Check,$Magic) {
                                      $Int32Unit = 4294967296;
                                      $length = strlen($Str);
                                      for ($i = 0;$i <$length;$i++) {
                                      $Check *= $Magic;
                                      if ($Check >= $Int32Unit) {
                                      $Check = ($Check -$Int32Unit * (int) ($Check / $Int32Unit));
                                      $Check = ($Check <-2147483648) ?($Check +$Int32Unit) : $Check;
                                      }
                                      $Check += ord($Str{$i});
                                      }
                                      return $Check;
                                      }
                                      function HashURL($String) {
                                      $Check1 = StrToNum($String,0x1505,0x21);
                                      $Check2 = StrToNum($String,0,0x1003F);
                                      $Check1 >>= 2;
                                      $Check1 = (($Check1 >>4) &0x3FFFFC0 ) |($Check1 &0x3F);
                                      $Check1 = (($Check1 >>4) &0x3FFC00 ) |($Check1 &0x3FF);
                                      $Check1 = (($Check1 >>4) &0x3C000 ) |($Check1 &0x3FFF);
                                      $T1 = (((($Check1 &0x3C0) <<4) |($Check1 &0x3C)) <<2 ) |($Check2 &0xF0F );
                                      $T2 = (((($Check1 &0xFFFFC000) <<4) |($Check1 &0x3C00)) <<0xA) |($Check2 &0xF0F0000 );
                                      return ($T1 |$T2);
                                      }
                                      function CheckHash($Hashnum) {
                                      $CheckByte = 0;
                                      $Flag = 0;
                                      $HashStr = sprintf('%u',$Hashnum);
                                      $length = strlen($HashStr);
                                      for ($i = $length -1;$i >= 0;$i --) {
                                      $Re = $HashStr{$i};
                                      if (1 === ($Flag %2)) {
                                      $Re += $Re;
                                      $Re = (int)($Re / 10) +($Re %10);
                                      }
                                      $CheckByte += $Re;
                                      $Flag ++;
                                      }
                                      $CheckByte %= 10;
                                      if (0 !== $CheckByte) {
                                      $CheckByte = 10 -$CheckByte;
                                      if (1 === ($Flag %2) ) {
                                      if (1 === ($CheckByte %2)) {
                                      $CheckByte += 9;
                                      }
                                      $CheckByte >>= 1;
                                      }
                                      }
                                      return '7'.$CheckByte.$HashStr;
                                      }
                                      function getch($url) {return CheckHash(HashURL($url));}
                                      function getpr($url) {
                                      global $googlehost,$googleua;
                                      $ch = getch($url);
                                      $fp = @fsockopen($googlehost,80,$errno,$errstr,30);
                                      if ($fp) {
                                      $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
                                      $out .= "User-Agent: $googleua\r\n";
                                      $out .= "Host: $googlehost\r\n";
                                      $out .= "Connection: Close\r\n\r\n";
                                      fwrite($fp,$out);
                                      while (!feof($fp)) {
                                      $data = fgets($fp,128);
                                      $pos = strpos($data,"Rank_");
                                      if($pos === false){}else{
                                      $pr=substr($data,$pos +9);
                                      $pr=trim($pr);
                                      $pr=str_replace("\n",'',$pr);
                                      return $pr;
                                      }
                                      }
                                      fclose($fp);
                                      }
                                      }
                                      if(!getpr($url)) {
                                      $pr = "0";
                                      }else {
                                      $pr = getpr($url);
                                      }
                                      $tic = getBarCY("http://".$url);
                                      function dmoz($url) {
                                      $path ="http://search.dmoz.org/cgi-bin/search?search=".str_replace("www.","",$url);
                                      if(!file_exists($path)) {
                                      $data = strip_tags(@implode("",@file($path)));
                                      if(strpos($data,"No Open Directory Project results found")) {
                                      $results = '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Не описан</a>';
                                      }else {
                                      $results = '<a target="_blank" href="http://search.dmoz.org/cgi-bin/search?search='.str_replace("www.","",$url).'">Есть</a>';
                                      }
                                      }else {
                                      $results = 'нет данных';
                                      }
                                      return $results;
                                      }
                                      $zurl = preg_replace("/^(http:\/\/)/i","",$url);
                                      $zurl = preg_replace("/\/(.*)$/i","",$zurl);
                                      $parse_ya = @file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$zurl);
                                      function get_yaca($url){
                                      global $parse_ya,$zurl;
                                      preg_match('/<topic title="(.*)" url="(.*)"\/>/i',$parse_ya,$patterns);
                                      $lnk_cat = $patterns[2];
                                      $res = array();
                                      array_push($res,$patterns[1]);
                                      array_push($res,count($patterns[2]));
                                      if(!empty($res[0])){
                                      return 'Есть - <a href="'.$lnk_cat.'">'.$res[0].'</a>';
                                      }else{
                                      return "<a target=\"_blank\" href=\"http://search.yaca.yandex.ru/yca/cy/ch/{$zurl}/\">Не описан</a>";
                                      }
                                      }
                                      $dmoz = dmoz($url);
                                      $yaca = get_yaca($url);
                                      $info .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
                                        <tr> 
                                          <td><img alt=\"Это скриншот сайта {$_REQUEST['site']}.\" src=\"http://images.websnapr.com/?url={$_REQUEST['site']}&size=t&nocache=90\" style=\"height:70px;    width:90px;\"></td>
                                          <td>
                                          PageRang: <b>{$pr}</b>; Яндекс тИЦ: <b>{$tic}</b>;<br />
                                          Каталог DMOZ: {$dmoz}<br />
                                          Каталог Yandex: {$yaca}<br /><br />
                                          <a href=\"http://{$_REQUEST['site']}\" target=\"_blank\">Перейти на сайт &rarr;</a>
                                          </td>
                                        </tr>
                                      </table>";
                                      die($info);
                                      }elseif ($_REQUEST['option'] == "addipignor") {
                                      $site_tog = stristr($confms['ip_ignor'],$_REQUEST['ip']);
                                      if($site_tog) die("Ошибка! IP-адрес {$_REQUEST['ip']} уже был занесен в список игнорируемых IP-адресов.");
                                      if ($confms['ip_ignor']) {
                                      $confms['ip_ignor'] = $confms['ip_ignor'].", ".$_REQUEST['ip'];
                                      }else {
                                      $confms['ip_ignor'] = $_REQUEST['ip'];
                                      }
                                      $handler = fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                                      fwrite($handler,"<?PHP \r\n\$confms = array (\r\n");
                                      foreach(
                                      $confms as $name =>$value)
                                      {
                                      $value=trim(stripslashes ($value));
                                      $value=htmlspecialchars ($value,ENT_QUOTES);
                                      fwrite(
                                      $handler,"'{$name}' => \"{$value}\",\r\n");
                                      }
                                      fwrite($handler,");\r\n?>");
                                      fclose($handler);
                                      die(
                                      "IP-адрес {$_REQUEST['ip']} занесен в список игнорируемых IP-адресов.");
                                      }elseif (
                                      $_REQUEST['option'] == "addignor") {
                                      $site_tog stristr($confms['site_ignor'],$_REQUEST['site']);
                                      if(
                                      $site_tog) die("Ошибка! Сайт {$_REQUEST['site']} уже был занесен в список игнорируемых сайтов.");
                                      if (
                                      $confms['site_ignor']) {
                                      $confms['site_ignor'] = $confms['site_ignor'].", ".$_REQUEST['site'];
                                      }else {
                                      $confms['site_ignor'] = $_REQUEST['site'];
                                      }
                                      $handler fopen(ENGINE_DIR.'/data/referer.conf.php',"w");
                                      fwrite($handler,"<?PHP \r\n\$confms = array (\r\n");
                                      foreach(
                                      $confms as $name =>$value)
                                      {
                                      $value=trim(stripslashes ($value));
                                      $value=htmlspecialchars ($value,ENT_QUOTES);
                                      fwrite($handler,"'{$name}' => \"{$value}\",\r\n");
                                      }
                                      fwrite($handler,");\r\n?>");
                                      fclose($handler);
                                      die(
                                      "Сайт {$_REQUEST['site']} занесен в список игнорируемых сайтов.");
                                      }elseif (
                                      $_REQUEST['option'] == "confirmdelete") {
                                      $db->query ("DELETE FROM ".PREFIX ."_referer WHERE id = '".$_REQUEST['id'] ."'");
                                      if((
                                      $member_id['user_group'] != 1)) {die ("error");}
                                      if (
                                      $_REQUEST['user_hash'] == ""OR $_REQUEST['user_hash'] != $dle_login_hash) {
                                      die (
                                      "error");
                                      }
                                      die(
                                      "<div class=\"refer-del\" alt=\"".$langms['sea_delete_info']."\">".$langms['sea_delete']."</div>");
                                      }elseif (
                                      $_REQUEST['option'] == "checkupd") {
                                      $update = @file_get_contents("http://www.getdle.org.ru/extras/referer/version.txt");
                                      if(
                                      $update >$langms['version']) $info $langms['ref_upd_01'];
                                      elseif(
                                      $update == $langms['version']) $info $langms['ref_upd_02'];
                                      elseif(
                                      $update == "") {$update "--";$info $langms['ref_upd_03'];}
                                      elseif(
                                      $update <$langms['version']) $info $langms['ref_upd_04'];
                                      die(
                                      "<div style=\"background: lightyellow;border:1px dotted rgb(190,190,190);padding: 5px;margin-top: 7px;margin-right: 10px;\">Последняя версия: ".$update." (".$info.")</div>");
                                      }
                                       
                                      1. MafyO_o

                                        MafyO_o New Member

                                        Joined:
                                        12 Aug 2009
                                        Messages:
                                        9
                                        Likes Received:
                                        0
                                        Reputations:
                                        0
                                        eLWAux спс
                                         
                                        1. mailbrush

                                          mailbrush Well-Known Member

                                          Joined:
                                          24 Jun 2008
                                          Messages:
                                          1,997
                                          Likes Received:
                                          996
                                          Reputations:
                                          155
                                          Написал небольшой деобфускатор кода Николая Конокова. Он деобфусцирует код, который обфусцирован обфускатором Николая Конокова.

                                          Не буду запутывать вас - если у вас есть непонятный вам код, в котором вначале присутствует строка
                                          Code:
                                          Copyright 2009 Nikolay Konokhov
                                          то можете смело использовать мой декодер (деобфускатор), который находится по адресу:

                                          http://mailbrush.eu/tools/decoder.php

                                          Спасибо eLWAux'y за точный фак по деобфускции этого кода.