================

<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=='p_w_uploads') 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."秒";
}

?>