php简单的查找当前目录下的非法文件

<?php
	/**
	*只遍历当前目录下的文档
	*@return bool
	*/
	$new = microtime();
	 function read_all_file($path)
	{
		if(empty($path))
		{
			return false;
		}
		$path = rtrim($path,‘/‘);
		static $file_arr = array();
		if(! is_readable($path))
		{

			echo $path.‘无权限读取文件或文件夹不存在‘;
			return false;
		}
		//$oldtime = strtotime(‘2014-12-12‘);
		$new_path = ‘‘;$x = ‘‘;$ext = ‘‘;$content = ‘‘;
	    if($handler = opendir($path))
		{
			while (($sub = readdir($handler)) !== FALSE)
			{
				if ($sub != "." && $sub != ".." && $sub != "Thumb.db" && $sub != "Thumbs.db")
				{ 	$new_path = $path."/".$sub;
					if(is_file($path."/".$sub))
					{
						$x = explode(‘.‘, $new_path);
						$ext = strtolower(end($x));

						if($ext == ‘php‘ || $ext == ‘asp‘)
						{
							$content = file_get_contents($new_path);
							$time    = filemtime($new_path);
							//记录非法文件位置
							if(preg_match(‘/eval|cmd|system|exec|fopen|file_put_contents/i‘,$content)){
							file_put_contents(‘gua.txt‘,$new_path.PHP_EOL, FILE_APPEND);
							}
							/*if($time>$oldtime){
							file_put_contents(‘gua-date.txt‘,$new_path.PHP_EOL, FILE_APPEND);
							}*/
							unset($content);
						}
						else
						{
							continue;
						}

					}
					/*else //如果是文件夹输出文件名称继续
					{
						//read_all_file($path."/".$sub);
					}*/

				}
             }
        }
        closedir($handler);
    }
read_all_file(dirname(__FILE__).‘/phpcms‘);
echo microtime() - $new;
?>
时间: 2024-10-11 20:31:22

php简单的查找当前目录下的非法文件的相关文章

shell学习之查找当前目录下文件以及文件夹大小-&#39;du&#39;命令和&#39;df&#39;命令

经过前几天的磁盘写满的事件之后,发现自己对du这个命令完全不知道,所以下决心要学习一番. 我就当一盘搬运工吧,外网找到一个教程 'du'就是查找文件夹的大小 du Typing the above at the prompt gives you a list of directories that exist in the current directory along with their sizes. The last line of the output gives you the tot

查找目录下的所有文件中是否含有某个字符串 linux

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式    (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成.   (2)基本元字符集及其含义       ^ :只匹配行首.   如^a 匹配以a开头的行abc,

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数

linux查找目录下的所有文件中是否含有某个字符串 &lt;zhuan&gt;

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成. (2)基本元字符集及其含义 ^ :只匹配行首. 如^a 匹配以a开头的行abc,a2e,a12,aaa,.

查找目录下的所有文件中是否含有某个字符串

find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa

递归打印当前目录下的所有文件的文件名和文件大小

递归打印当前目录下的所有文件的文件名和文件大小,在ubuntu14.04下编译通过: /************************************************************************* > File Name: dirwalk.c > Author: > Mail: > Created Time: Tue 31 Mar 2015 11:56:38 AM CST ************************************

mac 查找当前目录下所有同一类型文件,并执行命令行

以TexturePacker举例 MAC下用TexturePacker命令行打包当前目录下所有的 *.tps文件 1.配置好tps文件需要配置好路径.参数等.(也可不配置,用命令行实现.具体参考:https://www.codeandweb.com/texturepacker/documentation) 2.新建一个*.sh文件,内容填写 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && p

Linux 查找当前目录下所有包含指定内容的文件

1.查找当前目录[./]中含用内容为zhang的所有文件 [[email protected] data]$ grep -rl zhang ./ ./a.txt ./b.txt 2.查找当前目录中含用内容为zhang的文件并将修改为"liu" [[email protected] data]$ sed -i "s/zhang/xxxx/g" `grep -rl zhang ./` 总结:sed -i "s/查找字符/替换字符/g" `grep 查

Linux查找当前目录5天的文件并打包

find . -name "*.sh" -mtime -5 |xargs tar zcvf /tmp/log.tar.gz 解释: *.sh是查找以.sh结尾的文件,也可以是其他如:*.txt,*.log...... 如果你查找最近一周的可以将-5改为-7 这里用到了Linux的管道