php写了一个清除网页木马的小程序。
作者: Syber 日期: 2007-12-13 14:02
最近有好几个站被挂马,删除比较麻烦。因为挂马的人经常变换样式。
但是还是有规律可寻,就想到用正则办法匹配。效果还是不错的。
主要原理是历遍目录(包括子目录),正则表达。
但是还是有规律可寻,就想到用正则办法匹配。效果还是不错的。
主要原理是历遍目录(包括子目录),正则表达。
下载: replace.php
- <?
- /***************************************************************************
- * replace.php
- * -------------------------
- * begin : 2007年12月13日
- * copyright : (C) 2002-2007 The ReQi.com
- * email : maxflg@yahoo.com
- * qq : 1881191
- * msn : ibar@163.com
- * last modify on : 2007-12-13 16:10
- *
- * $Id: replace.php,v 1.0.0.0 2007-12-13 16:15 Syber Exp $
- *
- ***************************************************************************/
- /***************************************************************************
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- ***************************************************************************/
- /***************************************************************************
- *
- * Thanks my love,my all,my darling.
- *
- ***************************************************************************/
- //设置工作目录。一般服务器空间都作了权限设置,所以工作目录在本域下。
- $fdir = dirname(__FILE__);
- //历遍目录在网站找了一个function,顺手拿来用。当然,人家的版权也要保留嘛!
- //初始化文件列表
- $file_a = array();
- function rFile($p)
- {
- //在window xp 下测试通过
- //http://www.zc36.com
- //czc136@hotmail.com
- global $file_a;
- //打开文件
- $handle = opendir($p);
- $dir_a = array();
- //读取目录
- while ($file = readdir($handle))
- {
- // '.' & '..'目录剔除
- if ($file != "." && $file != "..")
- {
- $tmp = $p . "\\" . $file;
- if (is_dir($tmp))
- {
- //如果是目录,附加到目录列表等待
- $dir_a[count($dir_a)] = $tmp;
- }
- elseif (is_file($tmp))
- {
- //文件则附加到文件列表
- $file_a[count($file_a)] = $tmp;
- }
- }
- }
- closedir($handle);
- foreach($dir_a as $v)
- {
- //递归处理其他目录。
- rFile($v);
- }
- }
- //正则表达式。匹配框架,中间内容包含src=** 并且有特定字符。
- $search = array ("'<iframe[^>]*?src=(\'|\")?(http://)?aa\.[^>]*?\>.*?</iframe>'si");
- $replace = array ("");
- rFile($fdir . "/bbs/");//调用,要遍历的目录
- foreach($file_a as $v)
- {
- $fp = fopen($v, "r+");
- $str = fread($fp, filesize($v));//dirname(__FILE__)."/visure.txt"));//
- fclose($fp);
- //把所有木马框架取消。并删除前后空行。删除空行的作用就是因为很多php程序,会有header输出头。在输出之前,不允许浏览器有任何输出。否则会报错。
- $text = preg_replace ($search, $replace, trim($str));
- $fp = fopen($v, "w+");
- fwrite($fp, $text);
- fclose($fp);
- //显示处理过程。
- echo ++$i . "File(s) replace complete!<BR>";
- }
- //测试代码
- /*
- $fp = fopen(dirname(__FILE__) . '/visure.txt', "r+");
- $str = fread($fp, filesize(dirname(__FILE__) . "/visure.txt"));//$v));
- fclose($fp);
- $text = trim(preg_replace ($search, $replace, $str));
- echo $text;//++$i . "File(s) replace complete!<BR>";//
- */
- ?>
加入网摘
标题: php写了一个清除网页木马的小程序
链接: http://www.sifish.com.cn/index.php?load=read&id=17
摘要: 最近有好几个站被挂马,删除比较麻烦。因为挂马的人经常变换样式。 但是还是有规律可寻,就想到用正则办法匹配。效果还是不错的。 主要原理是历遍目录(包括子目录),正则表达。
链接: http://www.sifish.com.cn/index.php?load=read&id=17
摘要: 最近有好几个站被挂马,删除比较麻烦。因为挂马的人经常变换样式。 但是还是有规律可寻,就想到用正则办法匹配。效果还是不错的。 主要原理是历遍目录(包括子目录),正则表达。
订阅
上一篇
返回
下一篇
标签:
