php;">
php
header('content-type:text/html;charset=gbk'
);
set_time_limit(0
);//防止超时
/
**
*
*
php目录扫描监控增强版
*
* @version 1.0
*
下面几个变量使用前需要手动设置
*
**/
/*===================== 程序配置 =====================*/
$pass="test";//设置密码
$jkdir="."; //设置监控扫描的目录,当前目录为'.',上一级目录为'..',也可以设置绝对路径,后面不要加斜杠,
默认为当前目录
$logfil
ename="./
m.log";//设置存储log的路径,可以放置在任意位置
$exclude=array('data','images'
);//排除目录
$danger='eval|cmd|passthru|gzuncompress';//设置要查找的危险的函数 以确定是否木马文件
$suffix='
php|inc';//设置要扫描文件的后缀
/*===================== 配置结束 =====================*/
$fil
ename=$_GET['fil
ename'];
$
check=$_GET['
check'];
$jumpoff=
false;
$url = $_SERVER['
php_SELF'];
$thisfile = end(explode('/',$url)
);
$jump="
{$thisfil
E}|".implode('|',$exclud
E);
$jkdir_num=$file_num=$danger_num
=0;
define('M_PATH',$jkdir
);
define('M_LOG',$logfile
Name);
if ($
check=='
check')
{
$safearr = explode("|",$jum
p);
$start_time=microtime
(true);
safe_
check($jkdir
);
$end_time=microtime
(true);
$@R_978_1
0586@l=$end_time-$start_time;
$file_num=$file_num-$jkdir_num;
$
message= " 文件数:".$file_num;
$
message.= " 文件夹数:".$jkdir_num;
$
message.= " 可疑文件数:".$danger_num;
$
message.= " 执行时间:".$@R_978_1
0586@l;
echo $
message;
}else
{
if ($_GET['m']=="del")
delete();//处理文件删除
//读取文件内容
if(isset($_GET['readfile']))
{
//输出查看密码,密码校验正确以后输出文件内容
if(empty($_POST['passchack']))
{
echo"
"
."";
exit;
}elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass)
{
$code=file_get_contents($_GET['readfile']
);
echo"
";
exit;
}else
{
exit;
}
}else
{
record_md5(M_PATH
);
if(file_exists(M_LOG))
{
$log = un
serialize(file_get_contents(M_LOG)
);
}else
{
$log = array(
);
}
if($_GET['savethis']==1)
{
//保存当前文件md5到日志文件
@unlink(M_LOG
);
file_put_contents(M_LOG,
serialize($file_list)
);
echo "
保存成功!点击返回";
exit;
}
if(empty($log))
{
echo "当前还没有创建日志文件!点击[保存当前]创建日志文件!";
}else
{
if($file_list==$log)
{
echo "本文件夹没有做过任何改动!";
}else
{
if(count($file_list) > 0 )
{
foreach($file_list as $file => $md5)
{
if(!isset($log[$file]))
{
echo "新增文件:
".$file.""." 创建时间:".date("Y-m-d H:i:s",file
ctime($fil
E))." 修改时间:".date("Y-m-d H:i:s",filemtime($fil
E))."
源码删除";
}else
{
if($log[$file]
!= $md5)
{
echo "修改文件:
".$file.""." 创建时间:".date("Y-m-d H:i:s",filemtime($fil
E))."
源码";
unset($log[$file]
);
}else
{
unset($log[$file]
);
}
}
}
}
if(count($log)>0)
{
foreach($log as $file => $md5)
{
echo "删除文件:
".$file."";
}
}
}
}
}
}
//计算md5
function record_md5($jkdir)
{
global $file_list,$exclude;
if(is_dir($jkdir))
{
$file=scandir($jkdir
);
foreach($file as $f)
{
if($f
!='.' && $f
!='..' && !in_array($f,$exclud
E))
{
$path = $jkdir.'/'.$f;
if(is_dir($path))
{
record_md5($path
);
}else
{
$file_list[$path]=md5_file($path
);
}
}
}
}
}
function Safe_
check($jkdir)//遍历文件
{
global $danger,$suffix,$jkdir_num,$file_num,$danger_num;
) or die('文件夹不存在') ;
while ($file=$hand->read())
{
$fil
ename=$jkdir.'/'.$file;
if (!$jumpoff)
{
if(Jump($file
Name))con
Tinue;
}
if(@is_dir($file
Name) && $file
!= '.' && $file
!= '..'&& $file
!='./..')
{ $jkdir_num++;
Safe_
check($file
Name);
}
if (preg_match_all ("/\.($suffi
X)/i",$fil
ename,$out))
{
$str='';
$fp = @fopen($fil
ename,'r')or die('没有权限'
);
while(!feof($f
p))
{
$str .= fgets($fp,10
24);
}
fclose($f
p);
if( preg_match_all ("/($danger)[ \r\n\t]
{0,}([\[\(])/i",$str,$out))
{
echo "
可疑文件:{$filename}"." 创建时间:".date("Y-m-d H:i:s",file
ctime($file
Name))." 修改时间:".date("Y-m-d H:i:s",filemtime($file
Name))."
查看代码 删除";
$danger_num++;
}
}
$file_num++;
}
}
function Edit()//查看可疑文件
{
global $fil
ename;
$fil
ename = str_
replace("..","",$file
Name);
$file = $fil
ename;
$content = "";
if(is_file($fil
E))
{
$fp = fopen($file,"r")or die('没有权限'
);
$content = fread($fp,filesize($fil
E));
fclose($f
p);
$content = htmlspecialchars($content
);
}
echo "
\r\n";
exit(
);
}
function
delete()//删除文件
{ global $fil
ename,$pass;
if(empty($_POST['passchack']))
{
echo"
"
."";
exit;
}elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass)
{
(is_file($file
Name))?($mes=unlink($file
Name)?'删除成功':'删除失败 查看权限'):'';
echo $mes;
exit(
);
}else
{
echo '密码错误!';
exit;
}
}
function Jump($fil
E)//跳过文件
{
global $jump,$safearr;
if($jump
!= '')
{
foreach($safearr as $v)
{
if($v=='') con
Tinue;
if( eregi($v,$fil
E) ) return true ;
}
}
return
false;
}
?>
||php?
check=
check">[扫描可疑文件]
@H_
197_26@
以上代码就是php web木马扫描器代码分享,本文附有注释,有不明白的欢迎给我留言,相信实现方法也不止以上一种,欢迎大家多多分享不同的实现方法。
大佬总结
以上是大佬教程为你收集整理的PHP Web木马扫描器代码分享全部内容,希望文章能够帮你解决PHP Web木马扫描器代码分享所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。