Что находится внутри файла init.php в движке ДЛЕ DLE

Компьютеры / Интернет / Скрипты
Тэги: DLE

📅2-04-2018 👁1 040

Чтобы узнать что находится за кракозябрами в файле init.php популярного движка DLE достаточно пройтись пошагово по этому файлу  и расшифровать его через base64decode.

то место которое делает замену символов функцией strtr нужно в нее подставить точно то, что декодировалось, вручную сделать это не получится, поэтому перед тем как туда вставить нужно найти то что находится между кавычками через регулярку preg_match_all('/\'[\s\S]+?\'/mu', $_X, $res);

 

и заменить функцию на $_X=strtr($_X,$res[0][0],$res[0][1]);

 

после этого файл init.php будет выглядеть так:


 
 ?><?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
 http://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004,2014 SoftNews Media Group
=====================================================
 ������ ��� ������� ���������� �������
=====================================================
 ����: init.php
-----------------------------------------------------
 ����������: �������������
=====================================================
*/
 
if( !defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}
 
define( 'DINITVERSION', "1130" );
define( 'VERSIONID', "10.3" );
 
require_once (ENGINE_DIR . '/data/config.php');
require_once (ENGINE_DIR . '/classes/mysql.php');
require_once (ENGINE_DIR . '/data/dbconfig.php');
require_once (ENGINE_DIR . '/inc/include/functions.inc.php');
 
date_default_timezone_set ( $config['date_adjust'] );
 
dle_session();
 
function send_activation( $query ) {
   
    $data = http_get_contents("http://dle-news.ru/extras/activate2009.php?".$query);
 
    if( $data !== false ) {   
        if( stristr( $data, "antw:activated" ) ) return "1";
        if( stristr( $data, "antw:denied" ) ) return "0";
    }
 
    return "-1";
}
 
function get_domen_hash() {
    $domen_md5 = explode( '.', $_SERVER['HTTP_HOST'] );
    $count_key = count( $domen_md5 ) - 1;
    unset( $domen_md5[$count_key] );
    if( end( $domen_md5 ) == "com" or end( $domen_md5 ) == "net" ) $count_key --;
    $domen_md5 = $domen_md5[$count_key - 1];
    $domen_md5 = md5( md5( $domen_md5 . "780918" ) );
    return $domen_md5;
}
 
function dle_activation($key, $domen_md5, $config, $offline = false) {
   
    include (ROOT_DIR . '/language/' . $config['langs'] . '/adminpanel.lng');
    $config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
   
    $domain = urlencode( strip_tags( $_SERVER['HTTP_HOST'] ) );
    $key = trim( strip_tags( $key ) );
    @header( "Content-type: text/html; charset=" . $config['charset'] );
 
    if ( $offline ) {
 
        if( $key == md5( $domen_md5 . DINITVERSION ) ) {
           
            $buffer = "1";
       
        } else {
           
            $buffer = "-2";
       
        }
 
    } else {
 
        if( strlen( $key ) == 32 ) {
 
            $buffer = "-3";
 
        } else {
 
            $buffer = send_activation( "domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID );
 
        }
    }
   
    switch ($buffer) {
 
        case "-3" :
            $buffer = $lang['trial_act6']." ".$lang['key_format']."<b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b>";
            break;
       
        case "-2" :
            $buffer = $lang['trial_act5'];
            break;
       
        case "-1" :
            $buffer = $lang['trial_act1'] . $lang['get_offline_key'] . " <a href=\"http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "\" target=\"_blank\">" . $lang['get_key'] . "</a> " . $lang['key_activation'];
            $buffer .= "<br /><br /><b>$lang[site_code]</b><span style=\"padding-left:7px;\"><input class=\"edit\" type=\"text\" size=\"45\" name=\"sitecode\" id=\"sitecode\"> <input class=\"edit\" type=\"button\" onclick=\"dle_activation( 'code' ); return false;\" value=\"$lang[trial_act]\"></span><div id=\"result_info\" style=\"color:red;\"></div>";
            break;
       
        case "0" :
            $buffer = $lang['trial_act2'];
            break;
       
        case "1" :
            $config['key'] = md5( $domen_md5 . DINITVERSION );
           
            $handler = fopen( ENGINE_DIR . '/data/config.php', "w" );
            fwrite( $handler, "<?PHP \n\n//System Configurations\n\n\$config = array (\n\n" );
            foreach ( $config as $name => $value ) {
                fwrite( $handler, "'{$name}' => \"{$value}\",\n\n" );
            }
            fwrite( $handler, ");\n\n?>" );
            fclose( $handler );
           
            $buffer = $lang['trial_act3'];
            break;
       
        default :
            $buffer = $lang['trial_act4'] . $lang['get_offline_key'] . " <a href=\"http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "\" >" . $lang['get_key'] . "</a> " . $lang['key_activation'];
    }
   
    echo $buffer;
    die();
}
 
$lic_tr = true;
$auto_detect_config = false;
$domen_md5 = md5( get_domen_hash() . DINITVERSION );
if( $domen_md5 == $config['key'] ) $lic_tr = false;
 
if( $config['http_home_url'] == "" ) {
   
    $config['http_home_url'] = explode( $config['admin_path'], $_SERVER['PHP_SELF'] );
    $config['http_home_url'] = reset( $config['http_home_url'] );
    $config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];
    $auto_detect_config = true;
 
}
 
$selected_language = $config['langs'];
 
if (isset( $_POST['selected_language'] )) {
 
    $_POST['selected_language'] = totranslit( $_POST['selected_language'], false, false );
 
    if ($_POST['selected_language'] != "" AND @is_dir ( ROOT_DIR . '/language/' . $_POST['selected_language'] )) {
        $selected_language = $_POST['selected_language'];
        set_cookie ( "selected_language", $selected_language, 365 );
 
    }
 
} elseif (isset( $_COOKIE['selected_language'] )) {
 
    $_COOKIE['selected_language'] = totranslit( $_COOKIE['selected_language'], false, false );
 
    if ($_COOKIE['selected_language'] != "" AND @is_dir ( ROOT_DIR . '/language/' . $_COOKIE['selected_language'] )) {
        $selected_language = $_COOKIE['selected_language'];
    }
 
}
if ( file_exists( ROOT_DIR . '/language/' . $selected_language . '/adminpanel.lng' ) ) {
    require_once (ROOT_DIR . '/language/' . $selected_language . '/adminpanel.lng');
} else die("Language file not found");
 
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
 
check_xss();
 
$is_loged_in = FALSE;
$member_id = array ();
$result = "";
$username = "";
$cmd5_password = "";
$allow_login = false;
$check_log = false;
 
$js_array = array ();
 
$PHP_SELF = $_SERVER['PHP_SELF'];
$_IP = get_ip();
$_TIME = time ();
$skin_header = "";
$skin_footer = "";
 
if( isset( $_POST['action'] ) ) $action = $_POST['action'];
else $action = $_GET['action'];
 
if( isset( $_POST['mod'] ) ) $mod = $_POST['mod'];
else $mod = $_GET['mod'];
 
$mod = totranslit ( $mod, true, false );
$action = totranslit ( $action, false, false );
 
//################# ����������� ����� �������������
$user_group = get_vars( "usergroup" );
 
if( ! $user_group ) {
    $user_group = array ();
   
    $db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
   
    while ( $row = $db->get_row() ) {
       
        $user_group[$row['id']] = array ();
       
        foreach ( $row as $key => $value ) {
            $user_group[$row['id']][$key] = stripslashes($value);
        }
   
    }
    set_vars( "usergroup", $user_group );
    $db->free();
}
//#################
 
 
//################# ����������� ���������
$cat_info = get_vars( "category" );
 
if( ! is_array( $cat_info ) ) {
    $cat_info = array ();
   
    $db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
    while ( $row = $db->get_row() ) {
       
        $cat_info[$row['id']] = array ();
       
        foreach ( $row as $key => $value ) {
            $cat_info[$row['id']][$key] = stripslashes( $value );
        }
   
    }
    set_vars( "category", $cat_info );
    $db->free();
}
 
if( count( $cat_info ) ) {
    foreach ( $cat_info as $key ) {
        $cat[$key['id']] = $key['name'];
        $cat_parentid[$key['id']] = $key['parentid'];
    }
}
 
if( $_REQUEST['action'] == "logout" ) {
   
    set_cookie( "dle_user_id", "", 0 );
    set_cookie( "dle_name", "", 0 );
    set_cookie( "dle_password", "", 0 );
    set_cookie( "dle_skin", "", 0 );
    set_cookie( "dle_newpm", "", 0 );
    set_cookie( "dle_hash", "", 0 );
    set_cookie( "dle_compl", "", 0 );
    set_cookie( session_name(), "", 0 );
   
    @session_unset();
    @session_destroy();
   
    if( $config['extra_login'] ) auth();
 
    header( "Location: {$PHP_SELF}" );
   
    msg( "info", $lang['index_msge'], $lang['index_exit'] );
}
   
$allow_login = true;
if ($config['login_log']) $allow_login = check_allow_login ($_IP, $config['login_log']);
 
if (!$allow_login) msg( "info", $lang['index_msge'], $lang['login_err_2'] );
 
if( $allow_login ) {
   
    if( $config['extra_login'] ) {
       
        if( ! isset( $_SERVER['PHP_AUTH_USER'] ) || ! isset( $_SERVER['PHP_AUTH_PW'] ) ) auth();
        $username = $_SERVER['PHP_AUTH_USER'];
        $cmd5_password = md5( $_SERVER['PHP_AUTH_PW'] );
        $post = true;
        $check_log = true;
   
    } elseif( intval( $_SESSION['dle_user_id'] ) > 0 AND $_SESSION['dle_password'] ) {
       
        $username = $_SESSION['dle_user_id'];
        $cmd5_password = $_SESSION['dle_password'];
        $post = false;
        if (!$_SESSION['check_log']) $check_log = true;
   
    } elseif( intval( $_COOKIE['dle_user_id'] ) > 0 AND $_COOKIE['dle_password']) {
       
        $username = $_COOKIE['dle_user_id'];
        $cmd5_password = $_COOKIE['dle_password'];
        $post = false;
        $check_log = true;
    }
   
    if( $_REQUEST['subaction'] == 'dologin' ) {
       
        $username = $_POST['username'];
        $cmd5_password = md5( $_POST['password'] );
        $post = true;
        $check_log = true;
   
    }
 
}
 
if( check_login( $username, $cmd5_password, $post, $check_log ) ) {
    $is_loged_in = true;
    $dle_login_hash = md5( SECURE_AUTH_KEY . $_SERVER['HTTP_HOST'] . $member_id['user_id'] . sha1($cmd5_password) . $config['key'] . date( "Ymd" ) );
   
    if( ! $_SESSION['dle_user_id'] and $_COOKIE['dle_user_id'] ) {
        session_regenerate_id();
        $_SESSION['dle_user_id'] = $_COOKIE['dle_user_id'];
        $_SESSION['dle_password'] = $_COOKIE['dle_password'];
    }
 
} else {
 
    $dle_login_hash = "";
   
    if( $_REQUEST['subaction'] == 'dologin' ) {
       
        $result = "<font color=red>" . $lang['index_errpass'] . "</font>";
   
    } else
        $result = "";
   
    if( $config['extra_login'] ) auth();
   
    $is_loged_in = false;
}
 
if( $is_loged_in and !$_SESSION['dle_xtra'] and $config['extra_login'] ) {
    $_SESSION['dle_xtra'] = true;
    $_REQUEST['subaction'] = 'dologin';
}
 
###########################
if( $is_loged_in and $_REQUEST['subaction'] == 'dologin' ) {
   
    $_SESSION['dle_user_id'] = $member_id['user_id'];
    $_SESSION['dle_password'] = $cmd5_password;
 
    if ( intval($_POST['login_not_save']) ) {
 
        set_cookie( "dle_user_id", "", 0 );
        set_cookie( "dle_password", "", 0 );
 
    } else {           
 
        set_cookie( "dle_user_id", $member_id['user_id'], 365 );
        set_cookie( "dle_password", $cmd5_password, 365 );
 
    }
   
   
    $time_now = time();
 
    if ($config['login_log']) $db->query( "DELETE FROM " . PREFIX . "_login_log WHERE ip = '{$_IP}'" );
   
    if( $config['log_hash'] ) {
 
        if(function_exists('openssl_random_pseudo_bytes')) {
               
            $stronghash = md5(openssl_random_pseudo_bytes(15));
       
        } else $stronghash = md5(uniqid( mt_rand(), TRUE ));
       
        $salt = sha1( str_shuffle("abcdefghjkmnpqrstuvwxyz0123456789") . $stronghash );
        $hash = '';
       
        for($i = 0; $i < 9; $i ++) {
            $hash .= $salt{mt_rand( 0, 39 )};
        }
       
        $hash = md5( $hash );
       
        set_cookie( "dle_hash", $hash, 365 );
       
        $_COOKIE['dle_hash'] = $hash;
        $member_id['hash'] = $hash;
       
        $db->query( "UPDATE " . USERPREFIX . "_users set hash='" . $hash . "', lastdate='{$time_now}', logged_ip='" . $_IP . "' WHERE user_id='{$member_id['user_id']}'" );
   
    } else
        $db->query( "UPDATE " . USERPREFIX . "_users set lastdate='{$time_now}', logged_ip='" . $_IP . "' WHERE user_id='{$member_id['user_id']}'" );
 
}
 
if( $is_loged_in and $config['log_hash'] and (($_COOKIE['dle_hash'] != $member_id['hash']) or ($member_id['hash'] == "")) ) {
   
    $is_loged_in = FALSE;
}
 
 
if( $is_loged_in and $config['ip_control'] == '1' and ! check_netz( $member_id['logged_ip'], $_IP ) and $_REQUEST['subaction'] != 'dologin' ) $is_loged_in = FALSE;
 
if( ! $is_loged_in ) {
   
    $member_id = array();
    set_cookie( "dle_user_id", "", 0 );
    set_cookie( "dle_name", "", 0 );
    set_cookie( "dle_password", "", 0 );
    set_cookie( "dle_hash", "", 0 );
    set_cookie( "dle_compl", "", 0 );
    $_SESSION['dle_user_id'] = 0;
    $_SESSION['dle_password'] = "";
    $_SESSION['check_log'] = 0;
   
    if( $config['extra_login'] ) auth();
}
 
if ( $is_loged_in ) define( 'LOGGED_IN', $is_loged_in );
 
if( $_REQUEST['activation'] == "yes" AND $lic_tr) {
 
    if( $member_id['user_group'] != 1 ) die();
 
    if ( $_REQUEST['dle_key'] )    dle_activation( $_REQUEST['dle_key'], get_domen_hash(), $config );
    else dle_activation( $_REQUEST['site_code'], get_domen_hash(), $config, true );
    exit();
}
 
if( $member_id['user_group'] == 1 AND $lic_tr) {
 
    $activation_field = <<<HTML
<script language="javascript" type="text/javascript">
<!--
function dle_activation ( code ){
 
    document.getElementById( 'result_info' ).innerHTML = '{$lang['nl_sinfo']}';
 
    if (code == 'key') {
 
        var dle_key = document.getElementById('sitekey').value ;
        var varsString = "dle_key=" + dle_key;
 
    } else {
 
        var site_code = document.getElementById('sitecode').value;
        var varsString = "site_code=" + site_code;
    }
    $.post('{$PHP_SELF}?' + varsString, { activation: "yes" }, function(data){
   
        $('#dle-activation').html(data);
   
    });
 
    return false;
}
//-->
</script>
HTML;
 
    if(!is_writable(ENGINE_DIR . '/data/config.php')) {
   
        $lang['stat_system'] = str_replace ("{file}", "engine/data/config.php", $lang['stat_system']);
   
        $fail = "<div class=\"alert alert-error text-left\">{$lang['stat_system']}</div>";
   
    } else $fail = "";
 
 
    $activation_field .= "<div id=\"dle-activation\" class=\"alert alert-info text-left\">{$lang['trial_info']}<br /><br /><b>{$lang['trial_key']}</b><span style=\"padding-left:7px;\"><input type=\"text\" size=\"45\" name=\"sitekey\" id=\"sitekey\" style=\"max-width:99%\"> <button onclick=\"dle_activation( 'key' ); return false;\" class=\"btn btn-sm btn-green\">{$lang['trial_act']}</button></span><div id=\"result_info\"><br />{$lang['key_format']} <b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b></div></div>
    {$fail}";
 
} else $activation_field = "";
 
if( ($mod != "editnews" AND $mod != "main" AND $mod != "") AND $lic_tr ) {
   
    $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post" );
    $stats_news = $row['count'];
   
    $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_comments" );
    $count_comments = $row['count'];
   
    if( $stats_news > 100 ) msg( "info", "error", $lang['trial_limit'].'<br /><br />'.$activation_field );
    if( $count_comments > 200 ) msg( "info", "error", $lang['trial_limit'].'<br /><br />'.$activation_field );
 
}
 
?>
 

 

Сделано на примере движка версии 10.3

 

Код запакован с помощью универсального скрытия пхп кода от глаз новичком UnPHP - файл обфусцирован ByteRun Protector for PHP, а расскодировать можно с помощью The Online PHP Decoder https://www.unphp.net

 

 



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы