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

首頁 > 編程 > HTA > 正文

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

2020-01-31 15:43:04
字體:
來源:轉載
供稿:網友
服務器中了病毒是件超級麻煩的事情,尤其是什么熊貓燒香之類的或者變種病毒,因為它們不單單潛伏于計算機里,還會把所有的一些網頁文件加上了一些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
亚洲a级在线播放观看| 亚洲无av在线中文字幕| 亚洲国产精品成人va在线观看| 欧美壮男野外gaytube| 精品自拍视频在线观看| 亚洲偷熟乱区亚洲香蕉av| 久久久精品免费| 欧美猛少妇色xxxxx| 91免费看视频.| 国产精品第一区| 黑人巨大精品欧美一区二区一视频| 国产日韩精品电影| 欧美体内谢she精2性欧美| 国产精品色婷婷视频| 亚洲欧美资源在线| 中文欧美在线视频| 欧美午夜美女看片| 中文字幕欧美日韩va免费视频| 国产精品久久77777| 91国自产精品中文字幕亚洲| 成人免费福利在线| 这里精品视频免费| 精品久久久精品| 欧美极品少妇xxxxⅹ喷水| 欧美日韩免费在线| 97在线视频免费播放| 久久国产加勒比精品无码| 久久精品中文字幕| 另类色图亚洲色图| 国产亚洲精品久久久久动| 日韩欧美在线视频日韩欧美在线视频| 成人妇女淫片aaaa视频| 亚洲欧美在线第一页| 精品国产欧美成人夜夜嗨| 欧美日韩一区二区精品| 欧美国产日产韩国视频| 九九热这里只有精品免费看| 九九热99久久久国产盗摄| 欧美午夜宅男影院在线观看| 亚洲国产精品热久久| 日本免费一区二区三区视频观看| 国产午夜精品视频| 日本成熟性欧美| 亚洲r级在线观看| 国内成人精品一区| 国产美女久久精品| 国产精品久久久久不卡| 欧美日本高清视频| 久久精品电影网站| 欧美精品videofree1080p| 国产色视频一区| 亚洲色图17p| 成人福利视频在线观看| 日韩欧美在线一区| 91精品久久久久久久久久入口| 国产精品久久久久久久av电影| 亚洲专区中文字幕| 国产成人综合av| 国自在线精品视频| 久久成人这里只有精品| 成人午夜两性视频| 国产中文字幕日韩| 久久久久久国产精品三级玉女聊斋| 中文国产成人精品| 日本91av在线播放| 亚洲美女动态图120秒| 97国产精品人人爽人人做| 中国人与牲禽动交精品| 精品视频在线播放免| 日韩在线一区二区三区免费视频| 欧美成人午夜剧场免费观看| 亚洲国产精品国自产拍av秋霞| 动漫精品一区二区| 美女久久久久久久久久久| 亚洲一区二区三区毛片| 国产精品网站视频| 欧美激情综合色综合啪啪五月| 日韩av在线看| 亚洲欧美一区二区精品久久久| 亚洲女同精品视频| 欧美精品videos另类日本| 亚洲免费中文字幕| 亚洲精品久久久久久下一站| 国产成人精品av| 国产成人精品一区| 91久久精品美女| 欧美精品在线免费| 亚洲欧美国产一本综合首页| 久久黄色av网站| 夜夜狂射影院欧美极品| 亚洲欧美制服中文字幕| 欧美激情视频播放| 成人福利视频在线观看| 欧美日韩另类在线| 97不卡在线视频| 久久视频在线视频| 国产精品久久在线观看| 国产精品对白刺激| 欧美在线一区二区三区四| 久久久久国产精品www| 日韩不卡在线观看| 欧美日韩国产va另类| 亚洲色图15p| 欧美激情女人20p| 久久久精品国产| 色噜噜狠狠色综合网图区| 日韩电影在线观看永久视频免费网站| 97超碰蝌蚪网人人做人人爽| 91美女高潮出水| 亚洲欧洲在线播放| 精品日韩美女的视频高清| 国产成人综合亚洲| 久久综合亚洲社区| 91成品人片a无限观看| 高清欧美性猛交xxxx| 亚洲天堂网站在线观看视频| 亚洲欧美激情另类校园| 97在线看免费观看视频在线观看| 精品国产91久久久久久老师| 狠狠做深爱婷婷久久综合一区| 一区二区亚洲欧洲国产日韩| 精品久久久久久久久久久久| 欧美成人免费网| 在线播放国产精品| 欧美性生交xxxxx久久久| 中文字幕一区电影| 欧美精品制服第一页| 欧美最猛性xxxxx亚洲精品| 久久伊人精品一区二区三区| 久久伊人色综合| 韩国日本不卡在线| 欧美成人精品在线视频| 国产精品日韩在线观看| 97av在线视频免费播放| 国产精品电影在线观看| 97久久精品人搡人人玩| 国产精品久久久久久久7电影| 美女黄色丝袜一区| 久久亚洲精品视频| 亚洲高清免费观看高清完整版| 国产精品国内视频| 国产精品午夜一区二区欲梦| 欧美日韩一区二区三区在线免费观看| 日韩中文视频免费在线观看| 国产精品三级美女白浆呻吟| 亚洲风情亚aⅴ在线发布| 91久久精品日日躁夜夜躁国产| 午夜精品久久久久久久久久久久久| 欧美电影《睫毛膏》| 欧美超级乱淫片喷水| 国产日韩精品一区二区| 国产精品老女人精品视频| 日韩av在线最新| 国产精品成人观看视频国产奇米| 国产精品三级美女白浆呻吟| 色综合天天狠天天透天天伊人| 亚洲女同精品视频| 国产在线视频2019最新视频| 色悠悠国产精品| 97视频网站入口| 国产精品夫妻激情| 亚洲女人天堂av| 97免费在线视频| 精品亚洲一区二区三区在线播放|