亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

用hta+javascript實現替換網站被下木馬網頁中的iframe

2020-01-25 19:40:36
字體:
來源:轉載
供稿:網友
服務器中了病毒是件超級麻煩的事情,尤其是什么熊貓燒香之類的或者變種病毒,因為它們不單單潛伏于計算機里,還會把所有的一些網頁文件加上了一些iframe,讓訪問者繼續中毒,我想這也是它得已迅速蔓延的手段吧! 
    如果要把網頁中的iframe去掉,是件吃力的苦力活。 
    所以,寫了這樣的一個小工具,希望能起到一點點的作用。  
    請把代碼復制,保存在本地,以hta為擴展名。然后雙擊執行 
復制代碼代碼如下:

<html> 
<head> 
<hta:application id=ReplaceIframApp 
    applicationname="RAP 1.0" 
    border="dialog" [thick/dialog window/none/thin] 
    borderStyle="raised" [normal/complex/raised/static/sunken] 
    caption="yes" 
    icon="res/warm.ico" 
    maximizebutton="no" 
    minimizebutton="yes" 
    showintaskbar="yes" 
    singleinstance="yes" 
    sysmenu="yes" 
    version="1.0" 
    windowstate="normal" 
/> 
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"> 
<title>Replace Iframe Application</title> 
<script type="text/javascript"> 
    window.resizeTo(800,520); 
    var Class = { 
        create:function(){ 
            return function(){ 
                this.initialize.apply(this,arguments); 
            } 
        } 
    }; 
    var $ = function(sname){return document.getElementById(sname);} 

    String.prototype.stripTags = function() { 
            return this.replace(/<//?[^>]+>/gi, ''); 
    }; 
    String.prototype.escapeHTML = function() { 
            var div = document.createElement('div'); 
            var text = document.createTextNode(this); 
            div.appendChild(text); 
            return div.innerHTML; 
    }; 
    String.prototype.unescapeHTML = function() { 
            var div = document.createElement('div'); 
            div.innerHTML = this.stripTags(); 
            return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; 
    }; 
    Array.prototype.S = String.fromCharCode(2); 
    Array.prototype.in_array = function(e){ 
        var re = new RegExp(this.S+e+this.S); 
        return re.test(this.S+this.join(this.S)+this.S); 
    }; 
    String.prototype.color = function(c){ 
        return "<span style=/"color:"+ c +"/">"+ this +"</span>"; 
    }; 
    ReplaceApp = Class.create(); 
    ReplaceApp.prototype = { 
        initialize:function(args){ 
            this.foobar = $(args[0]); 
            this.container = $(args[1]); 
            this.initSet(); 
            this.fso = new ActiveXObject("Scripting.FileSystemObject"); 
            this.showFooBar('initializing...'); 
            this.testFSO(); 
        }, 
        initSet:function(){ 
            this.folders = new Array(); 
            this.files = new Array(); 
            this.iframes = new Array(); 
            this.iframesStr = new Array(); 
            this.selects = new Array(); 
            this.iframeFiles = new Array(); 
            this.iframeNum = 0; 
            this.folderNum = 0; 
            this.fileNum = 0; 
            this.currentFolder=''; 
        }, 
        showFooBar:function(msg){ 
            this.foobar.innerHTML = msg; 
        }, 
        writeContainer:function(c){ 
            this.container.innerHTML = c; 
        }, 
        testFSO:function(){ 
            this.drives = new Enumerator(this.fso.Drives); 
            var s, n, x; 
            s = ''; 
            for(;!this.drives.atEnd();this.drives.moveNext()){ 
                x = this.drives.item(); 
                s = s + x.DriveLetter; 
                s += " - "; 
                if (x.DriveType == 3) 
                 n = x.ShareName; 
                else if (x.IsReady) 
                 n = x.VolumeName; 
                else 
                 n = "[驅動器未就緒]"; 
                s +=   n + "<br>"; 
            } 
            this.writeContainer(s); 
        }, 
        showFolderList:function(folder){ 
            if(folder=="" || !/^[a-zA-Z]/://.*/ig.test(folder) || !this.fso.FolderExists(folder)){ 
                this.showFooBar('路徑不正確'.color('red').bold()); 
                return; 
            } 
            this.initSet(); 
            this.currentFolder = folder; 
            this.recFolder(folder); 
            this.parseFiles(); 
        }, 
        recFolder:function(folder){ 
            var f, s, fc; 
            f = this.fso.getFolder(folder); 
            fc = new Enumerator(f.files); 
            for(;!fc.atEnd(); fc.moveNext()){ 
                this.files.push(fc.item()); 
                this.fileNum++; 
            } 
            fc = new Enumerator(f.SubFolders); 
            for(;!fc.atEnd();fc.moveNext()){ 
                this.folders.push(fc.item()); 
                this.folderNum++; 
                this.recFolder(fc.item()); 
            } 
        }, 
        parseFiles:function(){ 
            var f, s, a, i, c, b; 
            for(i=0;i<this.files.length;i++){ 
                f = this.fso.OpenTextFile(this.files[i],1); 
                s = f.ReadAll(); 
                a = this.balanceMatch(s); 
                b = false; 
                for(c=0;c<a.length;c++){ 
                    if(/^<iframe/ig.test(a[c])){ 
                        if(!b){ 
                            this.iframeNum++; 
                            this.iframeFiles.push(this.files[i]); 
                            b = true; 
                        } 
                        if(!this.iframes.in_array(a[c])){ 
                            this.iframes.push(a[c]); 
                            this.iframesStr.push(a[c].escapeHTML()); 
                        } 
                    } 
                } 
            } 
            this.writeTable(); 
            var result = { 
                '當前目錄:':this.currentFolder, 
                '目錄數:':this.folderNum, 
                '文件數:':this.fileNum, 
                '查找文件數:':this.iframeNum 
            }; 
            this.writeInfo(result); 
        }, 
        Replace:function(){ 
            var o, oo, i, f, s, j, stat; 
            stat = 0; 
            o = $('itable'); 
            oo = o.getElementsByTagName("INPUT") 
            this.selects = new Array(); 
            for(i=0;i<oo.length;i++){ 
                if(oo[i].checked){ 
                    this.selects.push(this.iframes[oo[i].value]); 
                } 
            } 
            for(i=0;i<this.iframeFiles.length;i++){ 
                f = this.fso.OpenTextFile(this.iframeFiles[i],1); 
                s = f.ReadAll(); 
                for(j=0;j<this.selects.length;j++){ 
                    var re = new RegExp(this.selects[j]); 
                    s = s.replace(re,''); 
                } 
                f = this.fso.OpenTextFile(this.iframeFiles[i],2); 
                f.Write(s); 
                f.Close(); 
                stat++; 
                //return; 
            } 
            var result = { 
                '被替換文件數:':stat 
            } 
            this.writeInfo(result); 
        }, 
        writeTable:function(){ 
            var s, i; 
            s = ''; 
            s += '<table id="itable" class="tbclass">'; 
            s += '<tr>'; 
            s += '    <td width="7%">操作</td>'; 
            s += '    <td width="93%">iframe 列表</td>'; 
            s += '</tr>'; 
            for(i=0;i<this.iframesStr.length;i++){ 
                s += '<tr>'; 
                s += '    <td><input type="checkbox" name="ichk" value="'+ i +'" /></td>'; 
                s += '    <td>'+ this.iframesStr[i] +'</td>'; 
                s += '</tr>'; 
            } 
            s += '</table>'; 
            this.writeContainer(s); 
        }, 
        writeInfo:function(oo){ 
            var s; 
            s = ''; 
            for(o in oo){ 
                s += o.toString().color('blue') + (eval('oo.'+o)).toString().color('red') + '  '; 
            } 
            this.showFooBar(s); 
        }, 
        balanceMatch:function(str){ 
            var node = ""; 
            var node_temp = ""; 
            var n = 0; 
            var temp = ""; 
            var textArray = []; 
            str.replace(/((?:.|/n)*?)(<iframe.*?>|<//iframe.*?>)|((?:.|/n)*?)$/g, callback); 
            return textArray; 

            function callback(a0, a1, a2, a3) 
            { 
                if(n == 0) 
                { 
                    if(a1 && a1 != "") 
                    { 
                        textArray[textArray.length] = a1; 
                    } 
                    if(a2 && a2 != "") 
                    { 
                        if(/.*?//>/.test(a2)) 
                        { 
                            textArray[textArray.length] = a2; 
                        } 
                        else 
                        { 
                            node = a2.match(/[^<]*?[/s>]/)[0]; 
                            node = node.substring(0, node.length-1); 
                            temp += a2; 
                            n = 1; 
                        } 
                    } 
                } 
                else 
                { 
                    if(a1 && a1 != "") 
                    { 
                        temp += a1; 
                    } 
                    if(a2 && a2 != "") 
                    { 
                        if(/.*?//>/.test(a2)) 
                        { 
                            temp += a2; 
                        } 
                        else if(a2.substr(1,1) == "/") 
                        { 
                            if(a2 == "</" + node + ">") 
                            { 
                                temp += a2; 
                                n--; 
                                if(n == 0) 
                                { 
                                    textArray[textArray.length] = temp; 
                                    temp = ""; 
                                } 
                            } 
                            else 
                            { 
                                temp += a2 
                            } 
                        } 
                        else 
                        { 
                            node_temp = a2.match(/[^<]*?[/s>]/)[0]; 
                            node_temp = node_temp.substring(0, node_temp.length-1); 
                            temp += a2; 
                            if(node == node_temp) 
                            { 
                                n++; 
                            } 
                        } 
                    } 
                } 

                if(a3 && a3 != "") 
                { 
                    textArray[textArray.length] = a3; 
                } 

            } 
        } 
    } 
    window.onload = function(){ 
        window.rap = new ReplaceApp(['status_bar','Container']); 
    } 
</script> 
    <style type="text/css" title="currentStyle" media="screen"> 
        .tbclass{ 
            border-top:1px solid #ccc; 
            border-left:1px solid #ccc; 
        } 
        .tbclass td{ 
            border-bottom:1px solid #aaa; 
            border-right:1px solid #ccc; 
            padding:3px; 
            font-size:12px; 
        } 
    </style> 
</head> 
<body style="border:0;" bgcolor=buttonface scroll=no> 
<table width=100% height=100% style="font-size:9pt"> 
<tr><td width=100% height=410><div id="Container" style="width:100%;height:100%;border:2 inset;background-color:white;padding:5px;overflow:auto;">loading...</div></td></tr> 
<tr><td width=100% height=20>路徑:<input type=text id=webPath style="width:293"> <input type="button" style="width:70" onclick="rap.showFolderList($('webPath').value)" value="查找" /> <input type=button style="width:70" onclick="rap.Replace()" value="替換"></td></tr> 
<tr><td width=100% height=20><div id="status_bar" style="width:100%;height:100%;border:1 inset;background-color:white;padding:2px;overflow:hidden;"></div></td></tr> 
</table> 
</body> 
</html> 

樓主真不錯,這么快就有了實現解決的辦法,贊一個, 
下了一個好象假死了。沒有細看你的代碼,看起來好復雜,我想實現起來應該不是很復雜把。 
/<iframe[^/>]*>/s*<//iframe>/gi 
fso枚舉文件夾及其文件htm,html,php,asp等進行替換 

不過要是自己的頁面確實需要iframe不就全部換完了? 
我建議對iframe地址進行匹配,對包含指定字符的地址不替換 
這個正則讓我回去想想。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最猛性xxxxx免费| 91wwwcom在线观看| 91性高湖久久久久久久久_久久99| 亚洲第一页在线| 国产精品r级在线| 精品毛片网大全| 狠狠躁夜夜躁人人爽天天天天97| 成人性生交大片免费看视频直播| 亚洲在线一区二区| 欧美日韩成人黄色| 亚洲欧美制服综合另类| 91免费欧美精品| 久久亚洲欧美日韩精品专区| 欧美精品在线免费| 精品久久久久久久久久国产| 国产欧美精品一区二区| 777777777亚洲妇女| 亚洲自拍欧美色图| 国产精品自拍网| 97免费中文视频在线观看| 亚洲国产欧美一区| 91大神在线播放精品| 91视频-88av| 日韩欧美在线播放| 日韩av电影手机在线观看| 久久天堂电影网| 中文字幕精品—区二区| 欧美又大又硬又粗bbbbb| 久久精品视频在线播放| 91成人国产在线观看| 色老头一区二区三区| 亚洲深夜福利在线| 国产一区二区香蕉| 91成人免费观看网站| 久久欧美在线电影| 福利一区视频在线观看| 久久人人爽人人爽人人片av高清| 欧美黄色片视频| 欧美日韩亚洲国产一区| 欧美成人免费网| 日韩av日韩在线观看| 日韩av综合网站| 亚洲欧洲日本专区| 精品国产欧美一区二区五十路| 日韩在线观看免费av| 亚洲欧美日韩中文在线制服| 国产精品一区二区在线| 国产裸体写真av一区二区| 亚洲成色777777在线观看影院| 亚洲欧美精品suv| 日韩av电影在线播放| 亚洲精品国产成人| 亚洲激情在线观看视频免费| 亚洲无限av看| 中文字幕亚洲欧美日韩高清| 国产手机视频精品| 欧美福利视频网站| 超碰精品一区二区三区乱码| 国产精品欧美亚洲777777| 91福利视频网| 亚洲欧美国产日韩天堂区| 蜜臀久久99精品久久久无需会员| 亚洲一区二区三区视频| 亚洲精品www久久久| 少妇久久久久久| 亚洲欧美另类在线观看| 国产欧美最新羞羞视频在线观看| 成人在线国产精品| 成人有码在线播放| 欧美精品videosex牲欧美| 国产精品专区第二| 欧美日韩在线观看视频| 国产啪精品视频| 欧美整片在线观看| 久久久久久12| 国产精品欧美一区二区| 日本一欧美一欧美一亚洲视频| 91精品国产高清自在线看超| 免费不卡在线观看av| 日韩精品中文字| 日韩欧美主播在线| www亚洲欧美| 欧美成人精品h版在线观看| 2018国产精品视频| 亚洲电影免费观看高清完整版在线观看| 日韩国产高清视频在线| 77777少妇光屁股久久一区| 亚洲国产成人av在线| 欧美激情综合色| 欧美性猛xxx| 亚洲国内高清视频| 欧美成人久久久| 一二美女精品欧洲| 亚洲毛片在线观看.| 91精品视频大全| 欧美精品一本久久男人的天堂| 91精品在线国产| 国产精品一区二区电影| 亚洲精品一区av在线播放| 欧美成人自拍视频| 美日韩精品免费观看视频| 国产亚洲成av人片在线观看桃| 色偷偷av一区二区三区乱| 精品国产乱码久久久久久天美| 中文字幕亚洲精品| 亚洲人线精品午夜| 中文字幕亚洲欧美日韩在线不卡| 亚洲最大av网| 亚洲另类激情图| 国产精品成人久久久久| 久久欧美在线电影| www.亚洲天堂| 97视频在线观看免费高清完整版在线观看| 国产日韩av在线播放| 国产精品视频久久久| 中文字幕国产精品| 国产精品免费小视频| 国产在线视频不卡| 国产一区二区三区高清在线观看| 一区二区三区天堂av| 欧美福利视频在线| 日本久久久久亚洲中字幕| 久久亚洲欧美日韩精品专区| 亚洲色图五月天| 久久综合88中文色鬼| 色诱女教师一区二区三区| 国产主播喷水一区二区| 亚洲女同性videos| 亚洲网在线观看| 国产精品盗摄久久久| 亚洲国产黄色片| 亚洲最大成人免费视频| 久久久久国色av免费观看性色| 精品少妇v888av| 欲色天天网综合久久| 国产精品丝袜视频| 日韩高清电影免费观看完整版| 久久福利视频导航| www日韩中文字幕在线看| 中文字幕一区二区三区电影| 青草青草久热精品视频在线观看| 中文字幕精品久久久久| 国产成人涩涩涩视频在线观看| 久久视频国产精品免费视频在线| 亚洲jizzjizz日本少妇| 欧美视频一二三| 久久久噜久噜久久综合| 成人国产精品日本在线| 欧美成人在线网站| 一区二区三区无码高清视频| 欧美成人午夜视频| 欧美成aaa人片在线观看蜜臀| 欧美xxxwww| 日韩一区二区三区在线播放| 国产激情视频一区| 久久久久久中文| 久久亚洲精品视频| 欧美三级欧美成人高清www| 亚洲变态欧美另类捆绑| 国产精品女人久久久久久| 精品综合久久久久久97| 中文字幕日韩综合av| 4438全国亚洲精品在线观看视频| 亚洲高清在线观看|