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

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:
    PHP:

    Batch (.bat-файлы Windows):
     
    #1 Sharky, 29 Sep 2009
    Last edited by a moderator: 28 Sep 2016
    2 people like this.
  2. LolFEm

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

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
  3. 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;
    ?>
    Rt9ecriecriecr1gIJljP3RgIhxdH2OMR19bYGgcYl9bRZXFRZpWRt9eCziect8XcA4FRZpQRt9eCzVXcriecADGC09ecrVXcrieUAYect8Xct9ecrVMRt8Xcriect8XcAXGC08Xct8XcrVXUEXjlJgiIjYCTh9XOglcH2qLsPgsYOkeaolyEokOHOg2yJRtstsJY2vUTG1qCJ5YIlv3uodTBfVxcfc0kCH3KrGnLz0jLAviyGktYOsoEtgUE0xkCG9yOlRClSlul1dsuJSFH2YgsJvMTumnah1Wa3ixIjk0vPs3Bog6crtZczy1kfI4KEQwRZGmUCqJH2xwI2OMRt8Xcriect8XcAG7sPsdaADGC08Xct8Xct8XUCQ=AFY2Hl9qa2Y1ahlbTuyDeEVjl2lFCu9WsPgyHPgqsu50RzQURosdP21wsolQsl9Jvu5fpr0DR3iZa2kgI3cjKXmmaJkQvuYgP29WH2ODUAIWL3sdP3idBu1gajYbIoRwH2lzIZ5XToVjUCQURoi1IjkgP3Y5IhODeEiiIjRdBEVMAFvTRz0+R1lCYAIQAFvERz0+R1RlOFIQAFvSRz0+R0llOFIQAFvrRz0+R1lCYAIQAFvtRz0+R1lCYAIQAFvlRz0+R1liEAIQAFvsRz0+R1lTOZIQAFvARz0+R0RsOFIUUCQURokgahlfvhlGP3i1Ijkgpr0DI3lFI3YZUAYXHPkzP2YdvhSaR0xkEl9yylgSYl9yllRCYEvvLrVQcEG7AJswIJldH2DDUAYXvPRzsl90BPigphSzpAY0BPigpr0+Rhk1IjRgaJk5UEi7AJgJpADGI2lQsuk0suYbIolZI2ODeC0DRoY5IhOmpoQURokxaAVDeEVjpSkSCtlrlAifvPRZsu5fBl9fa2YgLAigBhkMHu5jsl9ZHPYgptsEC00DRZ4GvhSFahlbIoRgsJg4pA4jH3lZIJlWH2ggIZVjKXMGI3SQpA49pAIDl0dSOGODH3lZIJlWH3gbH29GsC0jLFYGHF0+vh9zIuXMRhk1IjRgaJk5LAIjUCQURhYFLC5xvulZBEDGI3SQUCQUTuHDUAYGHF0+aJl4vS9ZsukwIJyMUEGDBXMGH19ZHPYgpr0DI3YZvh91IoigIFDGshpqeJHMR2l4H2ddaJvgP3RdvhOjUEG7Aj1gaokgpoQUsukMaZVjZKbF6K3M8WOQpK3WpecDXWrxpK3g8FrF4Kw+8wQDRZ4GH3lZIJlWH3GWRZrFpeoM8bLg7KOD5Kw/pK/X7WLg5KPq6e8D7+wD8WPJ5BGD4Frx6eoZ5BzgpSvgHG1waJl5pK3DpKnW+KPn/KnMpeLM7+VDl00jLFY0BPigKXmZsPY1IJ47Aj0Ubym9AFYXHPkzP2YdvhSaR0xkEl9yylgkYO5OP0SkC1lKlAvvpr0DIJ91aJyMRoidI3kbshS0HlQjCt1RP1iiuO1SCgYbyO1elO5OR10DUFVGH19ZHPYgLrpmKXMGIhSzI19GHPYduZvcCOgbOGlClOxOP1lECAvvpr0DRosdIJgdHJxgI1QjI2g0sl91IJXjPE4jIhS5aulWvocwv2lFau9WsPgbIJlzIh9WI2OWIhdXRzQURoidI3kbshS0HlQjCt1RP1kly0kSO1kbCOlOEt9tR10DeEVxKXMGIhSzI19GHPYduZvcCOgbO1lry0lCO19lOGXjPEV9pAY2HPRmHuRQsPkaR3kmvhlbvPRQR10WR29ZshlZP2smaJSQLjiMIAI7AFYXHPkzP2YdvhSaR0xkEl9hyOgcP01SltdeYAvvpr0DcCQURoidI3kbshS0HlQjCt1RP0siEOxbllRcR10DeEVGvJSZTuSFahlzuZvzTPYgP3lZaAvvLFvwIJYgIg9JTu5daA5XToVjKXMGvAV9ph5gvZiuyl9Osu1XahS0sEDjLFIWRokgvoYmaJvzuZv0su1XahS0sPkbshgZR10mKXMGvA0+I2l0P2smahOMR21dTu4jLAvXHPgqsu50LJd0auXjUCQURoidBu1gajYbaJSqsEV9pAY2HPRmHuRQsPkaR3idBu1gajYbaJSqsEvvKXMGs290a19XHPgqsu50P21gI3kds2ODeEizvoRbIJlXahSfsEDjB3idBu1gajYbI3gzvhlqbEIQRoidBu1gajYbaJSqsExoC1YeP1iiuO1SCgYbClkoUCQURhvwvh9bIhS5aulWvS9qsPkzHuvgpr0DI3YZP3RgIhxdH2OMR3qFvPY0a25baJSqsP0jLtkeCgYRCglSP0RllSYeCFXGs290a19XHPgqsu50P21gI3kds2OmKXMGvA0+I2l0P3sdIFDjY09OC19yylgkYO5OP01CYZIQRhvwvh9bIhS5aulWvS9qsPkzHuvgUCQURoyqejkgvS92HPpMR3idBu1gajYbvPRQRZXjToY0Ioc6LZ9qsPRfThSWvA53suRqa25gBE5ZvE9QauGwIhS5aulWvA5dI3VjUCQURoyqejkgvS92HPpMR3k1HJ1mvS9qsPYMa2yjLAvXa3k0RZG7AJswIJldH2DDUAYXHPkzP2YdvhtDHPcDRoidIJSqsPYgIg9WHu1gpr0+RoidIJSqsPYgIg92Hux1sEGDBXMGvA0+I2l0P3sdIFDjIhSZHu1gvhlZP25dauOjLAYXHPRdaul0sPRbaJSqsEG7AFY0LC5zsPYbvJSZUAvXHPRdaul0sPRbvJSQvuOjLAYXHPRdaul0sPRbvJSQvuOmKXMGvA0+IhSZI2OMR3idIJSqsPYgIjcjLoYZvuOmKXm9AFY0LC5zIhSZI2OMR3k1HJ1mvS9XHPgqsu50RZxJHuxzsEG7AFY0LC5XIhSZI2OMR21dTu4jUCQUsPdmvrQU
     
    1 person likes this.
  4. 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.
  5. morpeh007

    morpeh007 New Member

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

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    часто просто помогает подстановка "echo" вместо "eval", и анализ кода
     
  7. 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+NUEXKZOpwt0shUn7tJOUcUE9wtOwCbYPA3OZGZOpgTShDBCIherINT09wtILOMxicZElHJLpwuShkyklwtS9wtOUcTShkyklwe0IholVftLPkyklwt8IHTEpwtSPkyklwtAxHtL7tm0hkrYPcBYqWml0cUEqNUELAMA7tJOodoymwtSqKXp9tJOeDoajD0k5foAIkT0IHTE7tMlMwtIXwtr9NUELW2ilC2stGbOlhUn7tJOeDoajD0k5foAINUExHtEskrYPcBYqWml0cTShDBCIherINT09wtILOMxicZElHJLIhUn7tMlMwtIxwe09NUEPkrYPcBYqWml0cUElHJLpwuShkrYPcBYqWml0cUEqNUE5KXp9tJOeDoajD0k5foAINj49wer7tm0hgWpZcbO1FM4IkzFmRJOeDoajD0k5foAVkriiF2iTfuw7tm0hcmaVC3Opd24Ic2a0C2IPkuaZdtLIG3klfuaZdJneDoajD0iiF2IPUoyzDyaUTtILfbkShUL7gWpMfB5jfolvdJnmcbOXFJILfbkShUn7tMfSd2kidtELc29vc2xlDo9zftXLc29vc2xlfBr7tJOjDtE9woflfoYPhtO1FMXpKXPLcmEINUnEcmYvC2svFoaVhtOmd29mdoaPd3Y0ReIXRtOlFmkVdZXLcbkZF3OZReHXhTShDBCIhtOMFtLIGXPLd3a0we0IwLfyatEvF2aiFMYPN2YSDBaVfe1VCbcjdolldmWsCba0dZcjDe0LC2IMcMaifuaZcbH9AMyVDZcxNBlVcM86kuaZdtnwayOWRzrVHaxZbo4JKXPLd3a0wt49wtkaF2aZRAymcB50KJELc29vc2xlfByFFlxVwjShko91ftEVNUEJUo9zfePIkofvd2fScBivF3OFFlxVwjShko91ftEVNUEJW29VdMajfolvdjPIW2xvF2aFFlxVbukFdJw7tMc3FMl0cUILcmESko91ftL7tmfPDBxlwtIicMavcJILcmEphUn7tJOLCbOiwe0IcMflfuHPkocXRerZKtL7tJOXd3HINUnzfukXd3HPkoOiforSwlkidMsgwJL7tMlMhtOXd3HINT09wociduYlhbs9cBxzcbShkunZNbY1CmY0FJILcoy0CUXLFo9zwtS5hTShkunZNbOZDB0PkunZhTShkunZNbY0Fl9ZcbnSCBYlhtkFdJwSkZFSkunZhTShFMa0fbkVwtOXFjShgWp9tMcjdo9zcUILcmEpKXp9tm0hDBCPwBflfunZhtO1FMXphUn7tJOXFJE9wtwXwjShgBaSF2AIGXPLFuwINUnmcbOXFJILfbkShTShgWPLfoljwe0Ic2a0WMyZW1LPwMi0fuE6RZ8JRJO1FMXpKXpMfB5jfolvdJnLdB96htO1FMXpwuShkunifoIINUkPfuOXKJ8vF2aiFMYPRMOsd3PVd3kmR2YmDU1JDB4vF2aiFMYPN3YlCbkjDe0JRmY0Fl9ZcbnSCBYlhtk3f3FVwJXJwJXLfbkShTShDBCPwBcpdoagcbipF3OzhtOXCbOPhULIGXPLcoy0CUE9wuY0FMlXb3Oic3HPWolsFoxvcoAPwJwSWocpdoAPkunifoIphUL7tMlMhuY0FmnvFZILcoy0CUXJTM8IT3nldJnrDbklC3OvFmLIAukvDMajftnZcbY1duOzwocvfB5LwJLpwuShkuklF3aSfuHINUEmNorIfoyZc2a0NUkgCMxidMSJwoiZcBC9wMi0fuE6RZ9zcByZC2IVco1vGJ5vFMFvC2fpRBkpdJ9zcByZC2I/F2aiFMYPNUFVF3OZb3klFoxiC2APwmf3fZ4JRtwJRtO1FMXpRJFJNS3lwK7v6NuI7TXvCT4mKXp9cBxzcUn7tJOZcbY1duOzwe0IkzxiwuOiFMflfe0Jb2kSCB5qwJnPFMaMNUkPfuOXKJ8vF2aiFMYPRMOsd3PVd3kmR2YmDU1JDB4vF2aiFMYPN3YlCbkjDe0mRmY0Fl9ZcbnSCBYlhtk3f3FVwJXJwJXLfbkShU4mwj7y8gR8Nt9iNJF7tm0hgBaSF2AIGXPLFMazfBx0FZE9wtgs5gwI5Kes7gv1kzShgWpZcbO1FM4IkuklF3aSfuH7tm0hkup1FMXINUnXFMamb3klFoxiC2APwJ9Ghoi0fuE6bt9FRZLvDUwSwJwSkuaZdtL7tJO6fbkSwe0IFuklc19ZcbnSCBYlhtwvbt8PRJPpkt9pwJXJwJXLGmaZdtL7tJOXCbkzca95CUE9wrnMDBxlb2flfy9jd250cB50FZImDuO0FePvR2kiFJ1VCbcpcZ55CB5LcbIVFmAvfT92cbw9HJczDo93NTHZkmaZde1PfuOXKJ8vkZ4LGmaZdtL7tMc1dMY0DB9Vwoflfy95CBYihtO1FMXpGXpmdo9JCBXIkuniFmYlb3liRtO6fbkSKXpXFMamb21ifoYPhtFvNuOvFoljwuOpfoxlNUwPRJPpwJn1FMX9wJIVhJLJbt8+R2LmRtOXCbkzca95CUXLFoy0foaZdmHpKXPLdo5qb2YiftE9wtOXCbO0cbkVF1SZbTShkuklFZE9woyZFMy5htL7tMyZFMy5b3n1F2IPkuklFZXLFoy0foaZdmYdHa0pKXpiFmkiGa9XfbYPhtOZcbHSC291dmWPkunifuOlFM5zBzkfhUL7tMlMhtyldbn0GUILFMazBznfhUl7tmklfuaZdJEmxguZ/tEswexiwoiZcBC9wJFVkoxVD19jCbWVkZw+kZ4LFMazBznfRJF8R2r+kzShgBaSF2a7tmklfuaZdJEJNorIfoyZc2a0NaXJb2kSCB5qbtwIDuklcj1FwMi0fuE6RZ9zcByZC2IVGByjCU55CB5LcbIVFmAvGBYiR2Y5R2YPR3SLGmaZdu0vbtw+zGAI7V/P8GesNt9iNJw7tm0hgWPLco1vGJE9woOsd3PPkuaZdtL7tJO5CBYiwe0Ic2a0b3liC2rPkuaZdtL7tJOpdMcvwt49wtw8foyJdoAIf2lLfoI9btwxHeElbtwICM9ZcoaZNaXJHyXJwoYldoxzFoyjDB5mNaXJHyXJwoYldoxXCBOLDB5mNaXJHyXJNI0hwtE8fuw+wE0hwtEIwex0ce48DB1mwoySfe1Fws3Z7Jex6veP7gjV8Jex4KmZ4tn7ky9UOayaOaYABZfzDbOlk119RlXJwuYZCz1FwMi0fuE6RZ9pdBymcbHVf2aJF25iFuwVC29sRz91FMX9GZOgALaOaAaTaySmF2l0cUffgUczDbplNbWMdM9jCBYPcT05HyXJwuY0GBxlNaXJDoapc2i0KjFXFuI7tbfpcuOPKjLXFuI7btw+Nt90ce4YtJEIwtE8foW+eWPkAoymcakidMF6wexJNmSLFuk9Nt9JNjSI3+3L5GqxwNRw1jPINow+GZO0DBY9Nt9JNjS8CmwIRz4YtImh4NRI6+7jwrOYT1P6wuSLco1vGm08CmwIRz4YtImh4NRI6+7jwylidMOlGePIGZO5CBYigTxJFJEvNjxJFJEvNI0htTxiwoiZcBC9btkPfuOXKJ8vGZOgALaOaAaTaySmF2l0cUffgaXJwuOiFMflfe1Fwl9JdoyVD1XJNS/l8Kbp8VII7GEI8Gep8JEMFMyZFjS8R2r+eWPIwtEINt90ce4YtJEINt90Fj4YtjXvfoyJdoA+wjShcollhtOpdMcvhTShgBaSF2apcJEPky9UOayaOaYABZfvFuOpd24mbUE9NUEJCBOLDbnpc25vFJwpwuShkuYpfoagfo9mwe0IF3OZDbY0FJILC29VcM1zBZfpFy9pc25vFJffRtOgALaOaAaTaySmDbEmbUL7tMlMhtOzDbOlb3OvcZLIcollhtRK+Kji6VEiwrlWRGeL8KbxwuSLb1kyAaayA1Odk2lXk119wNNM5Uei++SI5+es5gul7UeJwNuv6NuV6JeP4+3V8KjX8+bS+/AIUaEs4KTX5guV4J4JhTShDBCIhtOjd25MdbYdk2lXb2lmdM9Zk10pwuShkoYvdMcsF1SmDbngDBfVd3wmbUE9wtOjd25MdbYdk2lXb2lmdM9Zk10VwJXIwJ4Lb1kyAaayA1Odk2lXk107tm1lduYlwuShkoYvdMcsF1SmDbngDBfVd3wmbUE9wtOgALaOaAaTaySmDbEmbTShgWPLDoyVcoxlFJE9wocvFoaVhraKO0lKOa9rUawVkZ9LCbOiR3klcMaZcbwVC29VcJ5XDuEmRtk3wJL7tMc3FMl0cUILDoyVcoxlFJXJNe9WUyEIbukFdlXLC29VcM1zwe0ICbkZCbLIhyxZbo4JhTShcM9ZcByjDtILC29VcM1zwoyzwtOVCB1lwe0+kucidualhWp7tJO2CBx1cT10FMlshuY0FMlXF2xiF2ilFZEPkucidualhUL7tJO2CBx1cT1Pfo1SF3nlC2lidoYPCbkzwtILfMySfBASOA5Ab1yaT1OyAZL7tMc3FMl0cUILDoyVcoxlFJXJk3SLdMyscb0mwe0+wyXJGZO2CBx1cb1FwJxFFlxVwJL7tm0hcmfZDbOlhtOPCB5LdoaZRtwpK1xZbo4/NJwpKXpMC2xvF2APkoiidMOScbwpKXpLDBAPwLlWRGeL8KbxwuSLb1kyAaayA1Odk2lXk119wKgI7Gbx5G0I4Jex7+jx7VPI6KNs7veP8NNl7Nv1wrlWRGeL8Kbx7VwVwJL7tm1lduYlDBCIhtOgALaOaAaTaySmd3n0DB9Vk10INT0IwMyLcolmdM9ZwJLIGXPLF2l0ca90d2FINUnzfukpF3OZhtOjd25MdbYdk3YpfoagDBfVd3wmbUXLb1kyAaayA1Odk3YpfoAmbUL7tMlMhtOzDbOlb3OvcZLIcollhtRK+Kji6VEiwYuI6gwIGZOgALaOaAaTaySmF2l0cUffgUez5VAI4gvqwKgI7Gbx5G0I4Jex7+jx7VPI6KNs7veP8NNl7Nv1wNuI6gRV4J4JhTShDBCIhtOjd25MdbYdk3YpfoagDBfVd3wmbULIGXPLC29VcM1zBZfzDbOlb2lmdM9Zk10INUELC29VcM1zBZfzDbOlb2lmdM9Zk10VwJXIwJ4Lb1kyAaayA1Odk3YpfoAmbTShgBaSF2AIGXPLC29VcM1zBZfzDbOlb2lmdM9Zk10INUELb1kyAaayA1Odk3YpfoAmbTShgWPLDoyVcoxlFJE9wocvFoaVhraKO0lKOa9rUawVkZ9LCbOiR3klcMaZcbwVC29VcJ5XDuEmRtk3wJL7tMc3FMl0cUILDoyVcoxlFJXJNe9WUyEIbukFdlXLC29VcM1zwe0ICbkZCbLIhyxZbo4JhTShcM9ZcByjDtILC29VcM1zwoyzwtOVCB1lwe0+kucidualhWp7tJO2CBx1cT10FMlshuY0FMlXF2xiF2ilFZEPkucidualhUL7tJO2CBx1cT1Pfo1SF3nlC2lidoYPCbkzwtILfMySfBASOA5Ab1yaT1OyAZL7tMc3FMl0cUILDoyVcoxlFJXJk3SLdMyscb0mwe0+wyXJGZO2CBx1cb1FwJxFFlxVwJL7tm0hcmfZDbOlhtOPCB5LdoaZRtwpK1xZbo4/NJwpKXpMC2xvF2APkoiidMOScbwpKXpLDBAPwsuI6gwIGZOgALaOaAaTaySmF2l0cUffgUem4K3l8GbswKwI8G/P8G7QwKjj7G7X6Nez5Gz79Uex4KmZ7VwVwJL7tm1lduYlDBCIhtOgALaOaAaTaySmd3n0DB9Vk10INT0IwMYvdMcpFM1LcBxlfoAJhUn7tJOLCJ0+FbalFmLIhtkrOAxyarAIOlkNTUEJRlnUOAckBtEVwl9ZcBclFMaZwyfwOakywolLwe0IkZwVky9UOayaOaYABZfpctffwt4JkZwpKXppcJIPko1ldBklFl9pcySmfbYlFl9mFM91Ftffwtr9werphUn7collwtIJcbkZd3wJhTs9tMlMwtILb1kyAaayA1Odk3azcbkgDoyzDtffwe09wtwJT1wIky9UOayaOaYABZf1F2aZb2iiF2ImbUEiNUELcoxlb2xvc2lVb2iiF2IpwuShcollwtIJcbkZd3wJhTShgWpLDBAPwjxLDbCIC2xiF3H9btkZcBclFJ1LcBxFwJniduW9btwJRJOSCB5mdbYdk3YlCa9LcBxlfoagDB5MdZffRJkFwj4JRJOSCB5mdbYdk3YlCa9LcBxlfoAmbU4JNt9LDbC+wJL7tm1lduYlDBCIhtOgALaOaAaTaySmd3n0DB9Vk10INT0IwMYPcBYqfbnLwJLIGXPLfbnLCbOlwe0IWocpdoagc2a0b2YvdmOldmOzhtkPfuOXKJ8vf3f3RMflfoOScU5vFMFVFmAvcbi0FMyzR3klcMaZcbwvfMaZF2lvdJ50GuWJhTShDBCPkuaXcoy0cUE+koxidMfsF1SmfMaZF2lvdJffhUELDB5MdZE9wtOSCB5mdbYdk3klcl91FoOgHermbTShcBxzcBlMhtO1FoOifoAINT0IkoxidMfsF1SmfMaZF2lvdJffhUELDB5MdZE9wtOSCB5mdbYdk3klcl91FoOgHewmbTShcBxzcBlMhtO1FoOifoAINT0IwJwpwuSLfbnLCbOlwe0IwJ0swjSLDB5MdZE9wtOSCB5mdbYdk3klcl91FoOgHeHmbTs9tMaSF2apcJILfbnLCbOlweXLdoyVc21zBZf2cbkzDB9Vk10pwtOpdMcvwe0IkoxidMfsF1SmFMaMb3aXcy8XYtffKXpLDBAPwjxLDbCIF3O5doA9btkJCBYqc3kvfB5LKJnSDBfPfulldoxvfzsJd3kLcbw6Hbn4woOvfuOlctnZc2wPHTLXRer5HtXxKTEpK3nicoOpdMF6weaXGessCbkmDB4sfo9XKJE3FuI7dByZc2lVRbkpc2i0KJExHun4K1XJNS/V8Gvl5K3//ZeJ5gex6N86wtwVkuaXcoy0cU4JwtIJRJOpdMcvRJwpNt9LDbC+wJL7tm0h
     
    #7 Alex$09, 1 Oct 2009
    Last edited: 1 Oct 2009
  8. Zedi

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

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

    morpeh007 New Member

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

    Вроде бы находится за пределами php. то есть за return;?>
     
  10. 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.
  11. 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.
  12. 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.
  13. Alex$09

    Alex$09 New Member

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

    sevenup Member

    Joined:
    4 Oct 2009
    Messages:
    100
    Likes Received:
    17
    Reputations:
    7
    помогите расшифровать:
    Code:
    87f57a460c276ab1405143ad91ecb2ccd1458198d5a91537916c78a3f6555bca3195fbb1b765c28fee886a1346f579b10aca8d004100159c4c3642b289407af32b74df9a3ffab4b9df8557f653a3feb7ddb93783b0f9c9d8eb93e3e85e349a1b662b5a864686f30e083c27a86c5d1df00feb90da845ec88182ba0d937e3abc7e0a713c2d11dc129981934a28cd25b972eb3dadb1bb88bc7e8994ce18eb8ae022ba097bb39e3a0be50a5b5aafc219717e6ddbfd930fae3c4000a00770ef60fe975d48f441ff505f2ab85eed6ee246ea3a550dfaa234bbf0ca7d42154c9cd3458b6f7520f34fdb56924e70445c4945ef6629d82fbc0818e876b5836c72079aed532b9ddf63f3d8c96f871bf24daeedb210ae3d060b767fee5abb19c3d029d1d1ccefecefe177c376f9aec77bcdf890fb9e527dad866888858972877047e659132c5d4de3741e7b0043b1a192d5e48b991e0f6818f0c2fdc7ad631fc119e480e9ca3cc71df51eff4acd6777dfc151b4d0d63cc4ee0f45174b2259788d3a15796694
    
     
  15. 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

    ?>
     
    _________________________
  16. 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
  17. 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.
  18. 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>");
    }
     
  19. MafyO_o

    MafyO_o New Member

    Joined:
    12 Aug 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    eLWAux спс
     
  20. 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 за точный фак по деобфускции этого кода.