php去掉 x5E,清除wordpress里PHP文件恶意代码
/**
* 文件名: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文件恶意代码相关推荐
- wordpress代码插件_5个最佳WordPress插件来检测恶意代码
WordPress是人们使用的最受欢迎的内容管理系统(CMS)之一,用于简单的Blog或其他目的,例如建立电子商务商店 . 也有插件和主题可供选择. 其中一些是免费的,而另一些则不是. 通常,这些主题 ...
- 在Domin里新建文件夹代码
Domain:域名,地址名; folderURL:Domain+文件夹名 如下就会在Domain一个文件夹 public bool CreateFolder(string folderURL) ...
- 打开wordpress里的index.php文件
这里默认已经装好了phpstudy这个集成开发环境了,然后打开大概就是下面的这个界面. 为何上面说的是"大概"呢?对的,或许你们的和我现在这个界面有一点不一样的地方,就是php的版 ...
- Swift5 获取文件大小,清除缓存,删除沙盒里的文件,读取本地文件
获取文件夹大小 /// 遍历文件夹获取目录下的所有的文件 遍历计算大小class func folderSizeAtPath(folderPath:String) -> CGFloat {if ...
- 你知道C盘里那些文件可以删除,哪些不能删吗?
1.磁盘清理里面的INTERNET临时文件总是特别大,刚浏览几个网页就达到几十兆了,即使我每天清理,C盘空间仍然在减少.现在仅剩下20多M了. 2.已经查毒查***间谍了,仍然一无所获,.不知道C盘 ...
- php 去除 html 属性,用PHP 去掉所有html标签里的部分属性
用PHP 去掉所有html标签里的部分属性 http://zhidao.baidu.com/question/418471924.html 用PHP 去掉所有html标签里的部分属性 tppabs s ...
- U盘里的文件怎么会不见了
为什么U盘里的文件会无缘无故的被隐藏了? 简单的回答就是:你的U盘中毒了.别急,下面教你怎么做才能打开U盘里的文件. 先点击"开始"菜单再点"运行",在运行里输 ...
- 打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)
打包部署后无法读取jar包里的文件 Java中读取jar包中的文件 linux中无法读取jar包中的内容(windows可以的!),如何解决 一.背景 项目中免不了需要读取文件,如果文件用绝对路径读取 ...
- 能把计算机c盘我的文档,电脑c盘哪些文件可以删除,手把手教你c盘里哪些文件可以删除...
如果不是系统重要文件,无关紧要的话那么这些文件就可以清除,但计算机操作系统的文件是不能随意乱删除的,一旦乱删除了,计算机就会罢工了,这就让不少的用户感到困惑了,那么c盘里哪些文件可以删除?下面,小编就 ...
最新文章
- perl访问sybase等数据库
- 苹果8a1660是什么版本_iOS 13频繁“翻车”,果粉们面对苹果将情何以堪
- Jinja2 模板用法
- 信号处理常用算法介绍
- 科研实习 | 北京大学智能学院贺笛老师招收NLP/GNN方向科研实习生
- k8s1.5.4挂载volume之nfs
- 九、Pandas高级处理
- Java 将文件的内容复制到另一个文件
- Large Memory Footprints on AIX
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)
- inkscape使用_如何用Inkscape制作万圣节灯笼
- 使用LazZiya.ExpressLocalization开发多区域性ASP.NET Core 3、2、1项目
- java复习web篇——servlet
- 配置Windows Server 2008群集
- EDA鸿蒙是不是,如果华为不强研鸿蒙,和阿里合作,新系统或早用到手机上了? - 区块网...
- 计算机工程专业毕业,新加坡国立大学计算机工程专业毕业生亲临介绍
- Python:实现蓝牙通信
- 去马赛克的频域方法(可抗混叠)
- 第三方支付网银支付流程
- 如何升级MacOS到指定版本
热门文章
- JS replace()方法替换变量(可以对变量进行全文替换)
- php中函数封装怎么弄,php封装函数步骤
- hutol json null值没了_一篇长文带你在python里玩转Json数据
- hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
- Qt实现Linux下模拟点击界面,如何利用QT实现模拟鼠标点击?
- linux脚本中空格怎么显示,linux vim 显示空格
- java 鼠标拖动画矩形_java怎么实现鼠标在桌面拖动过程中 画 矩形的 功能?
- 正则翻译工具_PythonBasics 中文系列教程 · 翻译完成
- 极光推送 简书android,(Android)react-native集成极光推送
- oracle 批量给字段加注释,Oracle给表和字段添加注释