午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    用hta+javascript實現(xiàn)替換網(wǎng)站被下木馬網(wǎng)頁中的iframe
    來源:易賢網(wǎng) 閱讀:950 次 日期:2014-08-12 17:53:01
    溫馨提示:易賢網(wǎng)小編為您整理了“用hta+javascript實現(xiàn)替換網(wǎng)站被下木馬網(wǎng)頁中的iframe”,方便廣大網(wǎng)友查閱!

    服務器中了病毒是件超級麻煩的事情,尤其是什么熊貓燒香之類的或者變種病毒,因為它們不單單潛伏于計算機里,還會把所有的一些網(wǎng)頁文件加上了一些iframe,讓訪問者繼續(xù)中毒,我想這也是它得已迅速蔓延的手段吧! 

        如果要把網(wǎng)頁中的iframe去掉,是件吃力的苦力活。 

        所以,寫了這樣的一個小工具,希望能起到一點點的作用。  

        請把代碼復制,保存在本地,以hta為擴展名。然后雙擊執(zhí)行

    <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 = "[驅(qū)動器未就緒]";

                    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,

                    '目錄數(shù):':this.folderNum,

                    '文件數(shù):':this.fileNum,

                    '查找文件數(shù):':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 = {

                    '被替換文件數(shù):':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>

    樓主真不錯,這么快就有了實現(xiàn)解決的辦法,贊一個,

    下了一個好象假死了。沒有細看你的代碼,看起來好復雜,我想實現(xiàn)起來應該不是很復雜把。

    /<iframe[^\>]*>\s*<\/iframe>/gi

    fso枚舉文件夾及其文件htm,html,php,asp等進行替換

    不過要是自己的頁面確實需要iframe不就全部換完了?

    我建議對iframe地址進行匹配,對包含指定字符的地址不替換

    這個正則讓我回去想想。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)