支持正则表达式的文本文件批量替换工具
作者:一想千开 日期:2009-01-24
以前见过很多文本文件批量替换工具,也用过很多文本文件批量替换工具,但功能都不令人满意。最严重的问题就是不支持正则表达式。
站长们肯定也有很多人用过,一般在网站被挂木马时用来替换掉挂马的代码。
如果所有的文件里挂马的代码都一样,以前那些替换工具完全可以胜任。
但是后来我发现很多网站被挂马时每个文件里挂的代码不一样,比如,文件一里挂的代码是
程序代码但是文件2里木马挂的代码却是
程序代码文件3里……
总之每个文件里挂的代码都有一点不一样的地方,这样就导致那些替换工具无能为力:他们只能替换普通的字符串。
当时很想有一个支持正则表达式的批量替换工具,支持正则的话上面这样挂的木马很轻松就能处理掉。但是找了很久都没有找到,要么能批量,但不支持正则;要么支持正则,但不能批量。
这几天正好在研究C#字符串和正则表达式的问题,于是研究了几天,做出了这个东西。感谢Friedl、感谢Nagel,感谢他们让我了解C#和正则表达式。


正则表达式的功能是非常强大的。就像很多读过Friedl的书的人说的一样,很多自以为很了解正则表达式的人其实只了解了一点正则表达式的皮毛,但是这点皮毛就能让你体验到正则表达式的强大。
下面给两个站长们可能用的着的例子:
正则表达式应用实例:
1.删除文件中所有引用www.muma.com网站的JS的脚本或框架代码
勾选正则表达式,查找字符串:
程序代码替换为空
此正则可以删除掉任何形式的框架或JS引用了muma.com文件的代码。
2.删除如上文所提的JS挂马代码<script alt="541515" src=http://www.muma.com/muma.js></script><script alt="541525" src=http://www.muma.com/muma.js></script>
查找字符串
程序代码替换为空
运行环境:
引用内容
下载地址:
站长们肯定也有很多人用过,一般在网站被挂木马时用来替换掉挂马的代码。
如果所有的文件里挂马的代码都一样,以前那些替换工具完全可以胜任。
但是后来我发现很多网站被挂马时每个文件里挂的代码不一样,比如,文件一里挂的代码是
程序代码<script alt="541515" src=http://www.muma.com/muma.js></script>
程序代码<script alt="541525" src=http://www.muma.com/muma.js></script>
总之每个文件里挂的代码都有一点不一样的地方,这样就导致那些替换工具无能为力:他们只能替换普通的字符串。
当时很想有一个支持正则表达式的批量替换工具,支持正则的话上面这样挂的木马很轻松就能处理掉。但是找了很久都没有找到,要么能批量,但不支持正则;要么支持正则,但不能批量。
这几天正好在研究C#字符串和正则表达式的问题,于是研究了几天,做出了这个东西。感谢Friedl、感谢Nagel,感谢他们让我了解C#和正则表达式。


正则表达式的功能是非常强大的。就像很多读过Friedl的书的人说的一样,很多自以为很了解正则表达式的人其实只了解了一点正则表达式的皮毛,但是这点皮毛就能让你体验到正则表达式的强大。
下面给两个站长们可能用的着的例子:
正则表达式应用实例:
1.删除文件中所有引用www.muma.com网站的JS的脚本或框架代码
勾选正则表达式,查找字符串:
程序代码<(script|iframe) +[^>]*www.muma.com[^>]*>[^<]*</\1>
此正则可以删除掉任何形式的框架或JS引用了muma.com文件的代码。
2.删除如上文所提的JS挂马代码<script alt="541515" src=http://www.muma.com/muma.js></script><script alt="541525" src=http://www.muma.com/muma.js></script>
查找字符串
程序代码<script alt=\"[\d]*\" src=http://www.muma.com/muma.js></script>
运行环境:
引用内容本软件只能运行于 Microsoft .NET Framework 2.0 或者更高版本环境
下载地址:
评论: 3 | 引用: 0 | 查看次数: -
回复
]这个工具的“.”号是否不能匹配换行符?
一想千开 于 2010-01-31 01:29 AM 回复
是的,只作用于一行。这个需求倒真是没考虑到,非常感谢提醒^_^。下个版本可以计划加上这个选项。不过估计这选项容易让一般用户迷惑或者更容易出错。
这个软件的备份功能好像是把文件夹里面所有的打开的文件都备份了,能只备份替换过的吗?如果被替换的字符串和替换的字符串一样能正确的替换吗?
一想千开 于 回复
不是的,是只有被改变内容的文件才会被备份。给你看一部分源码:
if (oldcontent != newcontent)
{
if (newexecute.UseBak)
{
myDoTxtFile.CopyBak();
}
//…………此处省略N行……
}
当旧内容和执行替换后的内容不同,且选中了备份框,文件才会被备份。
如果被替换的字符串和替换的字符串一样能正确的替换吗?
不能被替换,因为替换后的内容和替换前的内容一样,程序会认为没有内容被替换,放弃写入文件直接跳到下一个文件。
if (oldcontent != newcontent)
{
if (newexecute.UseBak)
{
myDoTxtFile.CopyBak();
}
//…………此处省略N行……
}
当旧内容和执行替换后的内容不同,且选中了备份框,文件才会被备份。
如果被替换的字符串和替换的字符串一样能正确的替换吗?
不能被替换,因为替换后的内容和替换前的内容一样,程序会认为没有内容被替换,放弃写入文件直接跳到下一个文件。
不错的,是否能加个log功能呢?就是替换了哪些文件,或者是哪些文件替换了几个匹配字符串?
一想千开 于 回复
感谢您的建议,会在下一版本中考虑加入此功能
发表评论
上一篇
下一篇


文章来自:
Tags: