<!--?php header('content-type:text/html;charset=gbk'); set_time_limit(0);//防止超時(shí) /** * * php目錄掃描監(jiān)控增強(qiáng)版 * * @version 1.0 * 下面幾個(gè)變量使用前需要手動(dòng)設(shè)置 * **/ /*===================== 程序配置 =====================*/ $pass="test";//設(shè)置密碼 $jkdir="."; //設(shè)置監(jiān)控掃描的目錄,當(dāng)前目錄為'.',上一級(jí)目錄為'..',也可以設(shè)置絕對(duì)路徑,后面不要加斜杠,默認(rèn)為當(dāng)前目錄 $logfilename="./m.log";//設(shè)置存儲(chǔ)log的路徑,可以放置在任意位置 $exclude=array('data','images');//排除目錄 $danger='eval|cmd|passthru|gzuncompress';//設(shè)置要查找的危險(xiǎn)的函數(shù) 以確定是否木馬文件 $suffix='php|inc';//設(shè)置要掃描文件的后綴 /*===================== 配置結(jié)束 =====================*/ $filename=$_GET['filename']; $check=$_GET['check']; $jumpoff=false; $url = $_SERVER['PHP_SELF']; $thisfile = end(explode('/',$url)); $jump="{$thisfile}|".implode('|',$exclude); $jkdir_num=$file_num=$danger_num=0; define('M_PATH',$jkdir); define('M_LOG',$logfilename); if ($check=='check') { $safearr = explode("|",$jump); $start_time=microtime(true); safe_check($jkdir); $end_time=microtime(true); $total=$end_time-$start_time; $file_num=$file_num-$jkdir_num; $message= " 文件數(shù):".$file_num; $message.= " 文件夾數(shù):".$jkdir_num; $message.= " 可疑文件數(shù):".$danger_num; $message.= " 執(zhí)行時(shí)間:".$total; echo $message; }else{ if ($_GET['m']=="del") Delete();//處理文件刪除 //讀取文件內(nèi)容 if(isset($_GET['readfile'])){ //輸出查看密碼,密碼校驗(yàn)正確以后輸出文件內(nèi)容 if(empty($_POST['passchack'])){ echo"<form id=\"form1\" name=\"form1\" method=\"post\"-->" . " <label>pass" . " <input type="\"text\"" name="\"passchack\"">" . " </label>" . " <input type="\"submit\"" name="\"Submit\"" value="\"提交\"">" . "" .""; exit; }elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass){ $code=file_get_contents($_GET['readfile']); echo"<textarea name="\"code\"" cols="\"150\"" rows="\"30\"" id="\"code\"" style="'width:100%;height:450px;background:#cccccc;'">{$code}</textarea>"; exit; }else{ exit; } }else{ record_md5(M_PATH); if(file_exists(M_LOG)){ $log = unserialize(file_get_contents(M_LOG)); }else{ $log = array(); } if($_GET['savethis']==1){ //保存當(dāng)前文件md5到日志文件 @unlink(M_LOG); file_put_contents(M_LOG,serialize($file_list)); echo "<a href="'scandir.php'">保存成功!點(diǎn)擊返回</a>"; exit; } if(empty($log)){ echo "當(dāng)前還沒有創(chuàng)建日志文件!點(diǎn)擊[保存當(dāng)前]創(chuàng)建日志文件!"; }else{ if($file_list==$log){ echo "本文件夾沒有做過任何改動(dòng)!"; }else{ if(count($file_list) > 0 ){ foreach($file_list as $file => $md5){ if(!isset($log[$file])){ echo "新增文件:<a href="{$file}" target="'_blank'">".$file."</a>"." 創(chuàng)建時(shí)間:".date("Y-m-d H:i:s",filectime($file))." 修改時(shí)間:".date("Y-m-d H:i:s",filemtime($file))." <a href="?readfile={$file}" target="'_blank'">源碼</a><a href="'?m=del&filename={$file}'" target="'_blank'">刪除</a><br>"; }else{ if($log[$file] != $md5){ echo "修改文件:<a href="{$file}" target="'_blank'">".$file."</a>"." 創(chuàng)建時(shí)間:".date("Y-m-d H:i:s",filectime($file))." 修改時(shí)間:".date("Y-m-d H:i:s",filemtime($file))." <a href="?readfile={$file}" target="'_blank'">源碼</a><br>"; unset($log[$file]); }else{ unset($log[$file]); } } } } if(count($log)>0){ foreach($log as $file => $md5){ echo "刪除文件:<a href="{$file}" target="'_blank'">".$file."</a><br>"; } } } } } } //計(jì)算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, $exclude)){ $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()) { $filename=$jkdir.'/'.$file; if (!$jumpoff) { if(Jump($filename))continue; } if(@is_dir($filename) && $file != '.' && $file!= '..'&& $file!='./..') { $jkdir_num++; Safe_Check($filename); } if (preg_match_all ("/\.($suffix)/i",$filename,$out)) { $str=^^ `; $fp = @fopen($filename,'r')or die('沒有權(quán)限'); while(!feof($fp)) { $str .= fgets($fp,1024); } fclose($fp); if( preg_match_all ("/($danger)[ \r\n\t]{0,}([\[\(])/i",$str,$out)) { echo "<font color="'green'" style="'font-size:14px'">可疑文件:{$filename}</font>"." 創(chuàng)建時(shí)間:".date("Y-m-d H:i:s",filectime($filename))." 修改時(shí)間:".date("Y-m-d H:i:s",filemtime($filename))." <a href="'?readfile={$filename}'" target="'_blank'"><u>查看代碼</u></a> <a href="'?m=del&filename=$filename'" target="'_blank'">刪除</a><br>"; $danger_num++; } } $file_num++; } } function Edit()//查看可疑文件 { global $filename; $filename = str_replace("..","",$filename); $file = $filename; $content = ""; if(is_file($file)) { $fp = fopen($file,"r")or die('沒有權(quán)限'); $content = fread($fp,filesize($file)); fclose($fp); $content = htmlspecialchars($content); } echo "<textarea name="'str'" style="'width:100%;height:450px;background:#cccccc;'">$content</textarea>\r\n"; exit(); } function Delete()//刪除文件 { global $filename,$pass; if(empty($_POST['passchack'])){ echo"<form id="\"form1\"" name="\"form1\"" method="\"post\"">" . " <label>pass" . " <input type="\"text\"" name="\"passchack\"">" . " </label>" . " <input type="\"submit\"" name="\"Submit\"" value="\"提交\"">" . "</form>" .""; exit; }elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass){ (is_file($filename))?($mes=unlink($filename)?'刪除成功':'刪除失敗 查看權(quán)限'):^^ `; echo $mes; exit(); }else{ echo '密碼錯(cuò)誤!'; exit; } } function Jump($file)//跳過文件 { global $jump,$safearr; if($jump != ^^ `) { foreach($safearr as $v) { if($v==^^ `) continue; if( eregi($v,$file) ) return true ; } } return false; } ?> <a href="scandir.php">[查看文件改動(dòng)]</a>|<a href="scandir.php?savethis=1">[保存當(dāng)前文件指紋]</a>|<a href="scandir.php?check=check">[掃描可疑文件]</a>
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas
Panduan Membina Rumput Wonder | Uma Musume Pretty Derby
1 bulan yang lalu
By Jack chen
<??>: 99 Malam di Hutan - Semua Lencana Dan Cara Membuka Kunci Mereka
4 minggu yang lalu
By DDD
Jadual Banner Pretty Derby Uma Musume (Julai 2025)
1 bulan yang lalu
By Jack chen
Panduan Suhu Rimworld Odyssey untuk Kapal dan Gravtech
3 minggu yang lalu
By Jack chen
Keselamatan Windows kosong atau tidak menunjukkan pilihan
1 bulan yang lalu
By 下次還敢

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)