/**

* 文件名:delUnwantedCode.php

* 功能:删除FTP里恶意代码

* 使用说明:

* 请将文件上传到需要清除恶意代码的目录,然后通过CLI或浏览器访问即可,原有被感染的文件会自动备份

*/

$path = dirname(__FILE__);#定义需要处理的目录

$bak_path = $path.DIRECTORY_SEPARATOR.basename(__FILE__,'.php');#定义源文件备份目录,程序过滤恶意代码前,先按原有的路径备份文档到此目录

$fileType = array('php');#定义需要处理的文件类型(后缀名),小写

$search = array('@@si');#定义需要过滤的恶意代码规则

$search_count = array(

'all_file'=>array(),#所有文件

'search_file0'=>array(), #没有恶意代码文件

'search_file1'=>array() #含有恶意代码文件

);

$filelist = listDir($path,$fileType,false);#读取目录里符合条件文件列表

if(!empty($filelist)){

foreach ($filelist as $file){

$file = (isset($file['name'])?$file['name']:$file);

$search_count['all_file'][] = $file;

$fileContent = file_get_contents($file);

$compile_fileContent = preg_replace($search, '', $fileContent);

if(strlen($fileContent) != strlen($compile_fileContent) && str_replace($bak_path, '', $file)==$file){

#过滤后文件长度不一致,则表示含有恶意代码(备份文件所在目录不过滤)

$search_count['search_file1'][] = $file;

############备份原有文件 开始###############

$bakFile = str_replace($path, $bak_path, $file);

@make_dir(dirname($bakFile));

@file_put_contents($bakFile, $fileContent);

############备份原有文件 结束###############

#重新写入过滤后的内容到原有的PHP文件

@file_put_contents($file, $compile_fileContent);

}else{

$search_count['search_file0'][] = $file;

}

}

}

#print_r($search_count);die;

echo sprintf('从%s里共搜索到%s个符合条件的文件,其中%s个存在恶意代码,已处理结束',$path,count($search_count['all_file']), count($search_count['search_file1']));die;

########################

## 辅助函数

########################

/**

* 检查目标文件夹是否存在,如果不存在则自动创建该目录

*

* @access public

* @param string folder 目录路径。不能使用相对于网站根目录的URL

*

* @return bool

*/

function make_dir($folder){

$reval = false;

if (!file_exists($folder)){

#如果目录不存在则尝试创建该目录

@umask(0);

#将目录路径拆分成数组

preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);

#如果第一个字符为/则当作物理路径处理

$base = ($atmp[0][0] == '/') ? '/' : '';

#遍历包含路径信息的数组

foreach ($atmp[1] AS $val){

if ('' != $val){

$base .= $val;

if ('..' == $val || '.' == $val){

#如果目录为.或者..则直接补/继续下一个循环

$base .= '/';

continue;

}

}else{

continue;

}

$base .= '/';

if (!file_exists($base)){

#尝试创建目录,如果创建失败则继续循环

if (@mkdir(rtrim($base, '/'), 0777)){

@chmod($base, 0777);

$reval = true;

}

}

}

}else{

#路径已经存在。返回该路径是不是一个目录

$reval = is_dir($folder);

}

clearstatcache();

return $reval;

}

########获取目录下所有文件,包括子目录 开始################

function listDir($path,$fileType=array(),$fileInfo=true){

$path = str_replace(array('/','\\'), DIRECTORY_SEPARATOR, $path);

if(!file_exists($path)||!is_dir($path)){

return '';

}

if(substr($path, -1,1)==DIRECTORY_SEPARATOR){

$path = substr($path, 0,-1);

}

$dirList=array();

$dir=opendir($path);

while($file=readdir($dir)){

#若有定义$fileType,并且文件类型不在$fileType范围内或文件是一个目录,则跳过

if($file!=='.'&&$file!=='..'){

$file = $path.DIRECTORY_SEPARATOR.$file;

if(is_dir($file)){

if(empty($fileType)){

$dirList[] = ($fileInfo==true?array('name'=>$file,'isDir'=>intval(is_dir($file))):$file);

}

$dirList = array_merge($dirList,listDir($file,$fileType));

}elseif(!empty($fileType) && (in_array(pathinfo($file, PATHINFO_EXTENSION), $fileType))){

$dirList[] = ($fileInfo==true?array('name'=>$file,'isDir'=>intval(is_dir($file)),'md5_file'=>md5_file($file),'filesize'=>filesize($file),'filemtime'=>filemtime($file)):$file);

}

};

};

closedir($dir);

return $dirList;

}

########获取目录下所有文件,包括子目录 结束################

php去掉 x5E,清除wordpress里PHP文件恶意代码相关推荐

  1. wordpress代码插件_5个最佳WordPress插件来检测恶意代码

    WordPress是人们使用的最受欢迎的内容管理系统(CMS)之一,用于简单的Blog或其他目的,例如建立电子商务商店 . 也有插件和主题可供选择. 其中一些是免费的,而另一些则不是. 通常,这些主题 ...

  2. 在Domin里新建文件夹代码

    Domain:域名,地址名; folderURL:Domain+文件夹名 如下就会在Domain一个文件夹 public bool CreateFolder(string folderURL)     ...

  3. 打开wordpress里的index.php文件

    这里默认已经装好了phpstudy这个集成开发环境了,然后打开大概就是下面的这个界面. 为何上面说的是"大概"呢?对的,或许你们的和我现在这个界面有一点不一样的地方,就是php的版 ...

  4. Swift5 获取文件大小,清除缓存,删除沙盒里的文件,读取本地文件

    获取文件夹大小 /// 遍历文件夹获取目录下的所有的文件 遍历计算大小class func folderSizeAtPath(folderPath:String) -> CGFloat {if ...

  5. 你知道C盘里那些文件可以删除,哪些不能删吗?

    1.磁盘清理里面的INTERNET临时文件总是特别大,刚浏览几个网页就达到几十兆了,即使我每天清理,C盘空间仍然在减少.现在仅剩下20多M了.  2.已经查毒查***间谍了,仍然一无所获,.不知道C盘 ...

  6. php 去除 html 属性,用PHP 去掉所有html标签里的部分属性

    用PHP 去掉所有html标签里的部分属性 http://zhidao.baidu.com/question/418471924.html 用PHP 去掉所有html标签里的部分属性 tppabs s ...

  7. U盘里的文件怎么会不见了

    为什么U盘里的文件会无缘无故的被隐藏了? 简单的回答就是:你的U盘中毒了.别急,下面教你怎么做才能打开U盘里的文件. 先点击"开始"菜单再点"运行",在运行里输 ...

  8. 打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)

    打包部署后无法读取jar包里的文件 Java中读取jar包中的文件 linux中无法读取jar包中的内容(windows可以的!),如何解决 一.背景 项目中免不了需要读取文件,如果文件用绝对路径读取 ...

  9. 能把计算机c盘我的文档,电脑c盘哪些文件可以删除,手把手教你c盘里哪些文件可以删除...

    如果不是系统重要文件,无关紧要的话那么这些文件就可以清除,但计算机操作系统的文件是不能随意乱删除的,一旦乱删除了,计算机就会罢工了,这就让不少的用户感到困惑了,那么c盘里哪些文件可以删除?下面,小编就 ...

最新文章

  1. perl访问sybase等数据库
  2. 苹果8a1660是什么版本_iOS 13频繁“翻车”,果粉们面对苹果将情何以堪
  3. Jinja2 模板用法
  4. 信号处理常用算法介绍
  5. 科研实习 | 北京大学智能学院贺笛老师招收NLP/GNN方向科研实习生
  6. k8s1.5.4挂载volume之nfs
  7. 九、Pandas高级处理
  8. Java 将文件的内容复制到另一个文件
  9. Large Memory Footprints on AIX
  10. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)
  11. inkscape使用_如何用Inkscape制作万圣节灯笼
  12. 使用LazZiya.ExpressLocalization开发多区域性ASP.NET Core 3、2、1项目
  13. java复习web篇——servlet
  14. 配置Windows Server 2008群集
  15. EDA鸿蒙是不是,如果华为不强研鸿蒙,和阿里合作,新系统或早用到手机上了? - 区块网...
  16. 计算机工程专业毕业,新加坡国立大学计算机工程专业毕业生亲临介绍
  17. Python:实现蓝牙通信
  18. 去马赛克的频域方法(可抗混叠)
  19. 第三方支付网银支付流程
  20. 如何升级MacOS到指定版本

热门文章

  1. JS replace()方法替换变量(可以对变量进行全文替换)
  2. php中函数封装怎么弄,php封装函数步骤
  3. hutol json null值没了_一篇长文带你在python里玩转Json数据
  4. hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
  5. Qt实现Linux下模拟点击界面,如何利用QT实现模拟鼠标点击?
  6. linux脚本中空格怎么显示,linux vim 显示空格
  7. java 鼠标拖动画矩形_java怎么实现鼠标在桌面拖动过程中 画 矩形的 功能?
  8. 正则翻译工具_PythonBasics 中文系列教程 · 翻译完成
  9. 极光推送 简书android,(Android)react-native集成极光推送
  10. oracle 批量给字段加注释,Oracle给表和字段添加注释