|
|
|
|
|
для: Yakor
(10.11.2006 в 10:53)
| | Зашифрованный файл JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1 создаётся по методике, описанной в теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=27231 | |
|
|
|
|
|
|
|
для: Shiva
(03.11.2006 в 03:54)
| | >Здесь переменная $_D становится псевдонимом функции base64_decode().
>Затем она получает в качестве аргумента строку
>
>'JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1...
>
|
можно про это по-подробнее.... где здесь?, как она становится? откуда берется аргумент? | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 11:29)
| | Что вам требуется вывести? Я выложил зашифрованный код. | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 11:29)
| | >Мож у меня че с Самим PHP
Наверняка:) | |
|
|
|
|
|
|
|
для: Shiva
(03.11.2006 в 03:54)
| | Привет!!
Ну и как правильно вывести этот код который в eval, где переменная R. Я пытался eval заменить на echo, всеравно выводится какя-то абракотабра но ника ни код, а как ты описал, я все делал также..
Мож у меня че с Самим PHP | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 00:23)
| | Здесь переменная $_D становится псевдонимом функции base64_decode().
Затем она получает в качестве аргумента строку
'JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1...
|
В результате получаем php-код, который и передается на исполнение функции eval().
Этот код следующий:
$_X=base64_decode($_X);
$_X=strtr($_X,'SgPO9YZWFKmqyfxcjLJRzuM5vNts1b.{B4nC]i/2Dl0EheA[d8=Qp>VXo H}6GIw7ka3TrU<','=R9odmplAEPyk8gv[53xrMezqZHi7YhW<DsG{>CcX}1N/afj6]JtuS.BUnwVKLQO20ITF4b');
$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);
eval($_R);
$_R=0;
$_X=0;
|
Как видите, здесь переменная $_X декодируется той же функцией.
Результат уже напоминает php-код, однако ряд символов в нем заменен на другие. На наше счастье, нам не нужно разбираться в этой замене, так как разработчики защиты любезно оставили нам не только алгоритм преобразования, но и его результат: он оказывается в переменной $_X после вызова функции strtr();
Это уже полноценный php-код. Регулярное выражение просто ищет в этом коде элемент вида __FILE__ и заменяет его значением переменной $_F - эта переменная инициализирована в основном кода константой __FILE__ (путь к исполняемому файлу).
Полученный в результате в переменную $_R php-код вновь отдается на исполнение функции eval(); Этот код, из-за которого вся и история, выглядит следующим образом:
<?
/*
=====================================================
DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
http://www.pc-soft.ru/
-----------------------------------------------------
Copyright (c) 2004,2006 SoftNews Media Group
=====================================================
Данный код защищен авторскими правами
=====================================================
Файл: init.php
-----------------------------------------------------
Назначение: Инициализация
=====================================================
*/
function convert_unicode($t, $to = 'windows-1251')
{
$t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $t );
$t = urldecode ($t);
$t = html_entity_decode($t, ENT_NOQUOTES, $to);
return $t;
}
function send_activation ($query,$others=''){
$host='www.dle-news.ru';
$path='/extras/activate5.php';
$post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\n${others}User-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n$query";
$h=@fsockopen($host,80, $errno, $errstr, 30);
if (!$h) {
$r = @file_get_contents("http://".$host.$path."?".$query);
}
else
{
fwrite($h,$post);
for($a=0,$r='';!$a;){
$b=fread($h,8192);
$r.=$b;
$a=(($b=='')?1:0);
}
fclose($h);
}
if (stristr( $r, "antw:activated" )) return "1";
if (stristr( $r, "antw:denied" )) return "0";
return "-1";
}
function dle_activation($name, $key, $site_key){
include ('../data/config.php');
include ('../../language/'.$config['langs'].'/adminpanel.lng');
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
$name = urlencode(strip_tags ($name));
$key = strip_tags ($key);
$buffer = send_activation ("name={$name}&key={$key}&site_key={$site_key}");
switch ($buffer) {
case "-1" :
$buffer = $lang['trial_act1'];
break;
case "0" :
$buffer = $lang['trial_act2'];
break;
case "1" :
$config['key'] = $site_key;
$handler = fopen('../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'];
}
@header("HTTP/1.0 200 OK");
@header("HTTP/1.1 200 OK");
@header("Cache-Control: no-cache, must-revalidate, max-age=0");
@header("Expires: 0");
@header("Pragma: no-cache");
@header("Content-type: text/css; charset=".$config['charset']);
echo $buffer;
die ();
}
$site_key = explode('.', $_SERVER['HTTP_HOST']);
$count_key = count($site_key) - 1;
unset ($site_key[$count_key]);
if (end($site_key) == "com" OR end($site_key) == "net") $count_key --;
$site_key = $site_key[$count_key-1];
$site_key = md5(md5($site_key."780918"));
$trial_version = false;
$trial = true;
if ($site_key == $config['key']) {
$trial = false;
}
if ($_REQUEST['activation'] == "yes") dle_activation (convert_unicode($_REQUEST['name']), convert_unicode($_REQUEST['dle_key']), $site_key);
define('DATALIFEENGINE', true);
extract($_REQUEST, EXTR_SKIP);
require_once(ENGINE_DIR.'/inc/mysql.php');
require_once(ENGINE_DIR.'/data/dbconfig.php');
require_once(ROOT_DIR.'/language/'.$config['langs'].'/adminpanel.lng');
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
require_once(ENGINE_DIR.'/inc/functions.inc.php');
require_once(ENGINE_DIR.'/skins/default.skin.php');
if (isset ($_REQUEST['action'])) $action = $_REQUEST['action']; else $action = "";
if (isset ($_REQUEST['mod'])) $mod = $_REQUEST['mod']; else $mod = "";
if (isset ($_COOKIE['lastusername'])) $lastusername = $_COOKIE['lastusername']; else $lastusername = "";
if (($mod != "editnews" AND $mod != "main" AND $mod != "") AND $trial) {
$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 > 500) msg("info","error", $lang['trial_limit']);
if ($count_comments > 1000) msg("info","error", $lang['trial_limit']);
}
//################# Определение групп пользователей
$user_group = get_vars ("usergroup");
if (!$user_group) {
$user_group = array ();
$result = $db->query("SELECT * FROM " . PREFIX . "_usergroups ORDER BY id ASC");
while($row = $db->get_row($result)){
$user_group[$row['id']] = array ();
foreach ($row as $key => $value)
{
$user_group[$row['id']][$key] = $value;
}
}
set_vars ("usergroup", $user_group);
mysql_free_result($result);
}
//#################
?>
|
| |
|
|
|
|
|
|
|
для: New
(03.11.2006 в 00:35)
| | Эт понятно што там энкодер я пробовал ехом выводить ипринтом выводится одна абракотабра.. а толжен быть нормальный пхп ткод. | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 00:23)
| | Это не шифровка, а base64_encode. | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 00:23)
| | И еще очень хотелось бы, что бы вы так не вывешивали скрипты... страницу читать просто нереально, модераторы всё равно скорее всего или закроют или удалят... | |
|
|
|
|
|
|
|
для: ASA
(03.11.2006 в 00:23)
| | Я не уверен, но вроде бы этот код не должен работать... А в одинарных кавычках скорее всего какие нить зашифрованные пароли или что-то типа того... | |
|
|
|
|