Обход ограничений DLE v15.0
Инструкция на реальном примере в картинках: как обнулить движок DLE своими руками, или как сделать DLE Nulled, активация лицензии DLE движка.
Для примера взят, на сегодняшний день, свежий движок DLE v15.0.
DataLife Engine v.15.0 - это многопользовательский новостной движок, обладающий большими функциональными возможностями. Движок предназначен, в первую очередь, для создания новостных блогов и сайтов с большим информационным контекстом. Однако он имеет большое количество настроек, которые позволяют использовать его практически для любых целей. Движок может быть интегрирован практически в любой существующий дизайн и не имеет никаких ограничений по созданию шаблонов для него. Еще одной ключевой особенностью DataLife Engine - является низкая нагрузка на системные ресурсы. Даже при очень большой аудитории сайта нагрузка на сервер будет минимальной и вы не будете испытывать каких-либо проблем с отображением информации. Движок оптимизирован под поисковые системы, что приведет на ваш сайт дополнительных клиентов. Использование продвинутой технологии AJAX позволит вам сэкономить вам ваш трафик и трафик посетителей, а также снижает нагрузку на сервер.
Установка скрипта на сервер проходит в автоматическом режиме и не должна вызывать особых проблем, но вам необходимо выполнить некоторые действия по настройке прав доступа на папки.
1. Для начала скопируйте все файлы из папки upload в данном архиве на ваш сервер.
2. Установите для папки templates и всем вложенным в нее папкам права на запись / CHMOD 777
3. Установите для всех файлов в папке templates, включая вложенные, права на запись / CHMOD 666
4. Установите права для записи / CHMOD 777 для папок backup, uploads, а также для всех папок, находящихся внутри них.
5. Установите права для записи / CHMOD 777 для папок /engine/data/, /engine/cache/, /engine/cache/system/.
6. Наберите в URL вашего браузера адрес вашего сайте, например http://адрес вашего сайта/ и следуйте его инструкциям.
Внимание: чистая установка скрипта приводит к удалению данных ранее установленного скрипта DLE.
Автоматический инсталлятор проверит все необходимые файлы и настроит подключение к базе данных. После завершения установки вы сможете посмотреть работу скрипта на демонстрационной странице http://адрес вашего сайта/ .Для доступа к админпанели необходимо запустить http://адрес вашего сайта/admin.php
1. Для начала скопируйте все файлы из папки upload в данном архиве на ваш сервер.
2. Установите для папки templates и всем вложенным в нее папкам права на запись / CHMOD 777
3. Установите для всех файлов в папке templates, включая вложенные, права на запись / CHMOD 666
4. Установите права для записи / CHMOD 777 для папок backup, uploads, а также для всех папок, находящихся внутри них.
5. Установите права для записи / CHMOD 777 для папок /engine/data/, /engine/cache/, /engine/cache/system/.
6. Наберите в URL вашего браузера адрес вашего сайте, например http://адрес вашего сайта/ и следуйте его инструкциям.
Внимание: чистая установка скрипта приводит к удалению данных ранее установленного скрипта DLE.
Автоматический инсталлятор проверит все необходимые файлы и настроит подключение к базе данных. После завершения установки вы сможете посмотреть работу скрипта на демонстрационной странице http://адрес вашего сайта/ .Для доступа к админпанели необходимо запустить http://адрес вашего сайта/admin.php
По окончанию установки видим:
Это демо версия, которая содержит следующие ограничения:
- Закрытый исходный код (невозможность редактировать исходный программный код по своему усмотрению)
- Ограничение на количество новостей равно 100
- Ограничение на количество комментариев равно 200
- Отсутствие обновлений с предыдущих версий скрипта
Активация скрипта DLE
Для активации необходимо отредактировать несколько файлов, самым удобным способом будет это сделать с помощью файлового менеджера. В своём примере я использовал FAR.
1. находим файл и открываем его редактором, если его содержимое зашифровано, как это было у меня, его необходимо расшифровать с помощью онлайн сервисов Online PHP Decoder или по инструкции на странице расшифровка PHP файлов.
Я использовал unphp.net, содержимое файла копируем и вставляем на сайт в поле для расшифровки
получаем расшифрованный результат, который выделяем и копируем
скопированные данные вставляем с заменой в файл init.php
2. Находим и удаляем строки:
Я использовал unphp.net, содержимое файла копируем и вставляем на сайт в поле для расшифровки
получаем расшифрованный результат, который выделяем и копируем
скопированные данные вставляем с заменой в файл init.php
2. Находим и удаляем строки:
define('DINITVERSION', '2115');
define('VERSIONID', '15.0');
define('BUILDID', '200');
define('DEMOVERSION', '1');$lic_tr = true;
$auto_detect_config = false;
$domen_md5 = md5(get_domen_hash() . DINITVERSION);
if ($domen_md5 == $config['key']) $lic_tr = false;if (isset($_REQUEST['activation']) AND $_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);
elseif ($_REQUEST['site_code']) dle_activation($_REQUEST['site_code'], get_domen_hash(), $config, true);
else echo $lang['trial_act6'] . " " . $lang['key_format'] . " <b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b>";
exit();
}
if ($is_loged_in AND $member_id['user_group'] == 1 AND $lic_tr) {
$activation_field = <<<HTML
<script>
<!--
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('?' + 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-warning alert-styled-left alert-arrow-left alert-component alert alert-info alert-styled-left alert-arrow-left alert-component text-size-small text-size-small\">{$lang['stat_system']}</div>";
} else $fail = "";
$activation_field.= "<div id=\"dle-activation\" class=\"alert alert-info alert-styled-left alert-arrow-left alert-component text-left text-size-small\">{$lang['trial_info']}<br /><br /><input type=\"text\" name=\"sitekey\" id=\"sitekey\" placeholder=\"{$lang['trial_key']}\" class=\"classic width-400 mr-10\"><button onclick=\"dle_activation( 'key' ); return false;\" class=\"btn bg-teal btn-raised btn-sm\">{$lang['trial_act']}</button><div id=\"result_info\"><br />{$lang['key_format']} <b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b></div></div>
{$fail}";
} else $activation_field = "";if ($lic_tr AND $is_loged_in AND $mod != "editnews" AND $mod != "main" AND $mod != "upgrade" AND $mod != "") {
$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("error", "error", $lang['trial_limit'] . '<br /><br />' . $activation_field);
if ($count_comments > 200) msg("error", "error", $lang['trial_limit'] . '<br /><br />' . $activation_field);
}1. находим файл, открываем его редактором и удаляем лишние строки, но это не обязательно
2. Находим и удаляем строки:
2. Находим и удаляем строки:
function send_activation( $query ) {
$data = http_get_contents("https://dle-news.ru/extras/activate2009.php?".$query);
if( $data !== false ) {
if( stripos( $data, "antw:activated" ) !== false ) return "1";
elseif( stripos( $data, "antw:denied;expires" ) !== false ) return "-4";
elseif( stripos( $data, "antw:denied" ) !== false ) 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) {
global $lang;
$domain = urlencode( strip_tags( $_SERVER['HTTP_HOST'] ) );
$key = trim( strip_tags( $key ) );
@header( "Content-type: text/html; charset=utf-8" );
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 "-4" :
$buffer = $lang['trial_act7'];
break;
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=\"https://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "\" class=\"status-error\" target=\"_blank\">" . $lang['get_key'] . "</a> " . $lang['key_activation'];
$buffer .= "<br /><br /><b>$lang[site_code]</b><span class=\"sitecodefield\"><input class=\"classic width-400 mr-10 ml-10\" type=\"text\" name=\"sitecode\" id=\"sitecode\"> <button onclick=\"dle_activation( 'code' ); return false;\" class=\"btn bg-teal btn-raised btn-sm\">{$lang['trial_act']}</button></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 );
if (function_exists('opcache_reset')) {
opcache_reset();
}
$buffer = $lang['trial_act3'];
break;
default :
$buffer = $lang['trial_act4'] . $lang['get_offline_key'] . " <a href=\"https://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();
}1. находим файл и открываем его редактором, у меня он оказался зашифрованным, расшифровывать не надо, но для примера я это сделал, что бы показать его содержимое
2. вставляем ниже приведённый код с заменой
2. вставляем ниже приведённый код с заменой
<?php
if (!defined('DATALIFEENGINE')) {
header("HTTP/1.1 403 Forbidden");
header('Location: ../../');
die("Hacking attempt!");
}
if (($member_id['user_group'] != 1)) {
die("error");
}
if ($_REQUEST['user_hash'] == "" OR $_REQUEST['user_hash'] != $dle_login_hash) {
echo $lang['sess_error'];
die();
}
echo <<<HTML
<div class="ui-state-error ui-corner-all" style="padding:10px;"><b>Внимание!</b>
<br>Во избежании проблем, в целях безопасности, проверка обновлений отключена!
</div>
HTML;
?>1. находим файл и открываем его редактором, если он зашифрован, тогда расшифровываем, по принципу как первый файл
2. находим строку
2. находим строку
<meta name="generator" content="DataLife Engine (http://dle-news.ru)">и удаляем её или меняем на<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">В итоге, отредактировав всего 4-е файла, мы получаем полную версию скрипта, но с отсутствием дальнейших обновлений и технической поддержки.






Комментариев 0