<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>∷ Scanwebshell </title>
<STYLE>
body{ SCROLLBAR-FACE-COLOR: #719BC5; FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; SCROLLBAR-SHADOW-COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #ffffff; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #ffffff; FONT-FAMILY: "宋体"; SCROLLBAR-DARKSHADOW-COLOR: #ffffff
font-family: 宋体; font-size: 9pt}

INPUT {BORDER: 1px none silver; }
</STYLE>
</head>
<body>


<?php
if(@set_time_limit(0)) ini_set("max_execution_time",0);
$time=explode(" ",microtime());
$starttime=$time[0]+$time[1];
echo "本文件路径:".str_replace('//','/',dirname(__FILE__))."<br>";
$scan_ex="php"; //扫描文件后缀
$count_all=0; //总共扫描文件个数

//die();
//扫描的函数,判断192开头
$check_system_fun = array("192.168","10.0."

);
//返回的可疑文件
$dan_file_array=array();
global $scan_ex,$count_all,$scan_path,$check_file_fun,$dan_file_array;

//判断文件后缀
function get_ex($file_name)
{
$retval="";
$pt=strrpos($file_name, ".");
if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt);
// echo $retval."<br>";
return ($retval);
}


//检查文件
function check($file_name)
{
global $dan_file_array;
global $check_system_fun;

$content_num=0;
$funs_info='';
$include_info='';
$contents_info='';
$time_info='';
$result = false;
$file_contents = file ($file_name);
$time_info.="文件创建时间:".date("F d Y H:i:s.", filectime($file_name))."<br>";
$time_info.="文件修改时间:".date("F d Y H:i:s.", filemtime($file_name))."<br>";
foreach ($file_contents as $file_content)
{
$mask=1;
$content_num=$content_num+1;
foreach ($check_system_fun as $func_name)
{
if(eregi($func_name,$file_content))
{
$funs_info=$funs_info."在第".$content_num."行存在关键字".$func_name."可能文件在试图执行系统命令<br>";
if($mask==1)
{
$contents_info.=htmlspecialchars(substr($file_content,0,100))."<br>";
$mask=0;
}
}
}
}



if(stristr($include_info,'试图执行')==false)
{
if($include_info!='')
{
echo "<tr>";
echo "<td width=/"20%/" border=10 valign=/"top/">$file_name</td>";
echo "<td width=/"30%/" border=10 valign=/"top/">$include_info</td>";
echo "<td width=/"20%/" border=10 valign=/"top/">$contents_info</td>";
echo "<td width=/"20%/" border=10 valign=/"top/">$time_info</td>";
echo "</tr>";
}

if($funs_info!='')
{
echo "<tr>";
echo "<td width=/"20%/" border=10 valign=/"top/">$file_name</td>";
echo "<td width=/"30%/" border=10 valign=/"top/">$funs_info</td>";
echo "<td width=/"20%/" border=10 valign=/"top/">$contents_info</td>";
echo "<td width=/"20%/" border=10 valign=/"top/">$time_info</td>";
echo "</tr>";

}
}
}

//遍历目录
function list_dir($dirname)
{
//变量
global $scan_ex,$count_all;
//Win系统
// if($dirname[strlen($dirname)-1]!='//')
// $dirname.='//';
//*inx系统
if($dirname[strlen($dirname)-1]!='/') $dirname.='/';
static $result_array=array(); //静态数组,保存函数返回值。
$handle=opendir($dirname);
while ($file = readdir($handle)) {
if($file=='.'||$file=='..' || $file=='attachments') continue;
if(is_dir($dirname.$file)) list_dir($dirname.$file.'/'); //如果是目录,递归调用。
if(strpos($file,'.php')) {
$result_array[]=$dirname.$file;
$count_all=$count_all+1;
}
}
closedir($handle);
return $result_array;
}
//列出文件
if($_POST[action]!=scan)
{
echo "<form action=$_SERVER[PHP_SELF] method=post>";
echo "扫描路径:<input type=text name=scan_path style=/"border: 1px solid #084B8E/" ><br>";
echo "文件后缀:<input type=text name=scan_ex style=/"border: 1px solid #084B8E/"><br>";
echo "<input type=hidden name=action value=scan><br>";
echo "<input type=submit value='开始检测'><br>";
}
else {
global $scan_path;
if(empty($_POST['scan_path'])) {
$scan_path=str_replace('//','/',dirname(__FILE__));
} else{
$scan_path=$_POST['scan_path'];
}
$array=list_dir($scan_path);
echo "共检测$count_all files!个文件<br>";
?>
<table width="100%" border="1" cellpadding="0" cellspacing="0" style="padding:5px;line-height:170%;clear:both;font-size:12px">
<tr>

<td width="80" valign="top">文件绝对路径</td>
<td width="80" height=30 valign="top">特征码与描述</td>
<td width="80" height=30 valign="top">文件内容明细</td>
<td width="80" height=30 valign="top">文件时间明细</td>
</tr>
<?
foreach($array as $value)
{
check($value);
}
echo "</table>";
$time=explode(" ",microtime());
$endtime=$time[0]+$time[1];
$time=$endtime-$starttime;
echo "本次检测花费时间".$time."秒";
}

?>

更多相关文章

  1. 使用php将文件上传到AWS S3
  2. php文件显示代码在Chrome
  3. 配置文件定义常量 config.inc.php
  4. 来自多个文件的相同元素DomDocument loadHTMLFile PHP
  5. 无法使用dropzone上传多个文件
  6. 关注:PHP文件目录和文件本身的操作
  7. php exec文件从终端运行,而不是从浏览器运行
  8. log4php将不同级别的日志打印到不同的日志文件中
  9. PHP - 在外部服务器上读取文件?

随机推荐

  1. 圆圈里面是个叉号
  2. mainfest文件中android属性
  3. 111
  4. Android版本下载以及切换
  5. android创建自定义控件
  6. API 23 widget.ProgressBar——属性分析
  7. EditText自定义边框
  8. Android底部菜单栏的实现
  9. Android中获取手机支持的硬件解码器类型
  10. android:Kotlin Java Kotlin android Kot