首页 > 编程 > VBScript > 正文

ntiIframe.vbs用于批量清除被添加到文件中的恶意代码

2020-06-26 18:05:04
字体:
来源:转载
供稿:网友
AntiIframe.vbs 

#该脚本是批量挂马程序的逆向,用于批量清除被添加到文件中的恶意代码。记事本打开文件可以修改Pattern参数指定要处理的文件名,文件名之间用|隔开(也支持vbs正则表达式)。由于要修改文件,请谨慎的使用(最好先备份文件) 
#用法: CScript AntiIframe.vbs [处理的路径] [包含清除内容的文件] 
#例子: CScript AntiIframe.vbs d:/Web d:/lake2.txt
复制代码代码如下:

'----------------------- 
'Anti-Iframe in vbs 
'Author: lake2 (http://lake2.0x54.org) 
'Date:   2007-2-27 
'Version: 1.1  
'----------------------- 

'-------- Config Start -------------- 
'配置要处理的文件名,可使用vbs正则表达式;也可以使用“(index.asp|index.htm|index.html)”枚举格式 
Pattern = "^.+/.(htm|html|asp|aspx|php)$" 
'-------- Config  End  -------------- 


Call ShowInfo() 
If WScript.Arguments.Count = 2 Then 
    If Right(WScript.Arguments.Item(0),1) = "/" Then 
        if len(WScript.Arguments.Item(0))>3 then  
            thePath = Mid(WScript.Arguments.Item(0),1,Len(WScript.Arguments.Item(0))-1) 
        else 
            thePath = WScript.Arguments.Item(0) 
        end if 
    Else 
        thePath = WScript.Arguments.Item(0) 
    End If 
    Call CheckArg(thePath) 
    WScript.Echo "开始清理,请稍候……" 
    Call ShowAllFile(thePath) 
    WScript.Echo vbcrlf & "清理完成!" & vbcrlf 
Else 
    Call ShowHelp() 
End If 

Sub ShowInfo() 
    HelpStr = HelpStr & "==============================" & vbcrlf 
    HelpStr = HelpStr & "=====  欢迎使用雷客图 ASP 站长安全助手vbs版  =====" & vbcrlf 
    HelpStr = HelpStr & "=====       之  Anti-批量挂马                =====" & vbcrlf 
    HelpStr = HelpStr & "=====           Author: lake2                =====" & vbcrlf 
    HelpStr = HelpStr & "=====       Email:lake2@mail.csdn.net        =====" & vbcrlf 
    HelpStr = HelpStr & "=====   欢迎访问 www.0x54.org 得到更多信息   =====" & vbcrlf 
    HelpStr = HelpStr & "==============================" & vbcrlf 
    HelpStr = HelpStr & vbcrlf 
    WScript.Echo HelpStr 
End Sub 

Sub ShowHelp() 
    HelpStr = HelpStr & "#用法: CScript AntiIframe.vbs [处理的路径] [包含清除内容的文件]" & vbcrlf 
    HelpStr = HelpStr & "#例子: CScript AntiIframe.vbs d:/Web d:/lake2.txt" & vbcrlf 
    HelpStr = HelpStr & vbcrlf 
    WScript.Echo HelpStr 
End Sub 

Sub CheckArg(arg) 
    tmpPath = arg 
    Set objFSO = WScript.CreateObject ("Scripting.FileSystemObject") 
    If Not objFSO.FileExists(WScript.Arguments.Item(1)) Then 
        WScript.Echo "Error:未找到配置文件“" & WScript.Arguments.Item(1) & "”!" 
        WScript.Quit 
    ElseIf Not objFSO.FolderExists(tmpPath) Then 
        WScript.Echo "Error:错误的路径“" & tmpPath & "”!" 
        WScript.Quit     
    End If 
    Set objFSO = Nothing 
End Sub 

'遍历处理path及其子目录所有文件 
Sub ShowAllFile(Path) 
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    Set g = FSO.GetFile(WScript.Arguments.Item(1)) 
    If g.Size > 0 Then 
        Set ts2 = g.OpenAsTextStream(1, -2) 
        filecon = ts2.ReadAll 
        ts2.Close 
        Set ts2 = Nothing 
    Else 
        WScript.Echo "Error:配置文件" & WScript.Arguments.Item(1) & "大小为0!" 
        WScript.Quit 
    End If 
    Set g = Nothing 
    Set f = FSO.GetFolder(Path) 
    Set fc2 = f.files 
    On Error Resume Next 
    For Each myfile in fc2 
        If Err Then WScript.Echo "权限不足,不能检查目录"&thePath:exit sub 
        Set regEx = New RegExp 
        regEx.IgnoreCase = True 
        regEx.Global = True 
        regEx.Pattern = Pattern 
        If regEx.Test(myfile.name) Then 
            CheckFile path&"/"&myfile.name, filecon 
        End If 
        Set regEx = Nothing         
    Next 
    Set fc = f.SubFolders 
    For Each f1 in fc 
        ShowAllFile path&"/"&f1.name 
        Next 
    Set FSO = Nothing 
End Sub 

Sub CheckFile(filepath, filecon2) 
    xSet = GetCharSet(filepath) 
    Set tStream = CreateObject("ADODB.Stream") 
    tStream.type = 1 
    tStream.mode = 3 
    tStream.open 
    tStream.Position=0 
    tStream.LoadFromFile FilePath 
    If err Then Exit Sub end if 
    tStream.type = 2 
    tStream.charset = xSet 
    Do Until tStream.EOS 
        filecon = filecon & LCase(tStream.ReadText(102400)) 
    Loop 
    tStream.close() 
    Set tStream = Nothing 
        If InStr(filecon, filecon2) > 0 Then 
            filecon = Replace(filecon, filecon2, "") 
            Set tStream = CreateObject("ADODB.Stream") 
            tStream.type = 2 
            tStream.mode = 3 
            tStream.charset = xSet 
            tStream.open 
            tStream.Position=0 
            tStream.WriteText filecon 
            tStream.SaveToFile filepath, 2 
            tStream.close() 
            Set tStream = Nothing 
            WScript.Echo "已经修复文件: "&filepath&" ..." 
        End If 
End Sub 

Function GetCharSet(xPath) 
    Set tStream = CreateObject("ADODB.Stream") 
    tStream.type = 1 
    tStream.mode = 3 
    tStream.open 
    tStream.Position = 0 
    tStream.LoadFromFile xPath 
    byte1 = ascB(tStream.Read(1)) 
    byte2 = ascB(tStream.Read(1)) 
    byte3 = ascB(tStream.Read(1)) 
    tStream.close() 
    Set tStream = Nothing 
    If byte1=239 and byte2=187 and byte3=191 Then 
        GetCharSet = "UTF-8" 
    Else 
        GetCharSet = "GB2312" 
    End If 
End Function
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表