解密ASP源代码.

原创 2004年05月17日 17:50:00

从网上兴致冲冲地下载了ASP源代码,准备学习研究的时候.
一打开文件,天书般的代码.很让人郁闷吧 :(
在网上是找到了解密的方法,得一个文件挨一个文件地
打开,复制,粘贴,解密,再复制,再粘贴,再保存......
如果一个ASP程序有几百个文件???

解决办法来了..

decode.asp

<% @Language="JavaScript" %>
<%

/*
 *--------------- decode.asp -----------------
 * 功能:遍历某个目录下的所有文件,对加密过的.asp文件
 *      进行解密,并写入源文件中.
 * 实例:单个文件解密
 * Response.Write(DncodeFile(Server.MapPath("conn.asp")));
 * 实例:目录下所有文件解密.
 * DncodeFolderFiles(Server.MapPath("xml"))
 * author:wanghr100(灰豆宝宝.net)
 * update:2004-5-17 11:31
 *--------------- decode.asp -----------------
 */

function DncodeFile(sFilePath)
{
/*
 *--------------- DncodeFile(sFilePath) -----------------
 * DncodeFile(sFilePath)
 * 功能:打开文件sFilePath,Encode解密,重写该文件.
 * 参数:sFilePath,字符串,文件的路径.
 * 返回:sFilePath,文件的路径.
 * 实例:Response.Write(DncodeFile(Server.MapPath("conn.asp")));
 * author:wanghr100(灰豆宝宝.net)
 * update:2004-5-17 0:58
 *--------------- DncodeFile(sFilePath) -----------------
 */

    var ForReading = 1, ForWriting =2, ForAppending =8;
    var fso = Server.CreateObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(sFilePath,ForReading,true);
    sFileText = f.ReadAll();
    f.Close();
    sDncodeText = strdec(sFileText)
    var f = fso.OpenTextFile(sFilePath,ForWriting,true);
    f.Write(sDncodeText);
    f.Close();
    //return sDncodeText;
    return sFilePath;
}

function GetFilesPath(sFolderPath)
{
/*
 *--------------- GetFilesPath(sFolderPath) -----------------
 * GetFilesPath(sFolderPath)
 * 功能:遍历sFolderPath目录下的所有文件.返回数组.存储文件路径.
 * 参数:sFolderPath,字符串,目录绝对路径.
 * 实例:Response.Write(GetFilesPath(Server.MapPath("xml")))
 * update:2004-5-12 8:33
 * author:wanghr100(灰豆宝宝.net)
 *--------------- GetFilesPath(sFolderPath) -----------------
 */
    var sFilePath = new Array();
    var fso = Server.CreateObject("Scripting.FileSystemObject");
    var oFolder = fso.GetFolder(sFolderPath);
    var oSubFolders = oFolder.SubFolders;
    var oFiles = oFolder.Files;
    icount = oFiles.Count;

    var enmFiles = new Enumerator(oFiles);
    for(;!enmFiles.atEnd();enmFiles.moveNext())
    {
        sFilePath[sFilePath.length] = enmFiles.item().Path
    }

    var enmFolders = new Enumerator(oSubFolders);
    for(;!enmFolders.atEnd();enmFolders.moveNext())
    {
        /* Old 数组成了多维. */
        //sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);

        /* Add 2004-5-17 11:09 只为一维数组 */
        sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));
    }

    return sFilePath;

}

function GetFileType(sFileName)
{
/*
 *--------------- GetFileType(sFileName) -----------------
 * GetFileType(sFileName)
 * 功能:通过后缀,取得sFileName的文件类型.
 * 参数:sFileName,字符串,文件名.
 * 实例:Response.Write(GetFileType("decode.asp"))
 * update:2004-5-13 8:33
 * author:wanghr100(灰豆宝宝.net)
 *--------------- GetFileType(sFileName) -----------------
 */
    sFileName = String(sFileName);
    return sFileName.split(".")[sFileName.split(".").length-1];
}

/* Start 解密实现:李辉煌 Start*/
function screncode(s,l)
{enc=new ActiveXObject("Scripting.Encoder");
return enc.EncodeScriptFile("."+l,s,0,l+"cript");
}


    var STATE_COPY_INPUT        = 100
    var STATE_READLEN       = 101
    var STATE_DECODE        = 102
    var STATE_UNESCAPE      = 103

    var pick_encoding = new Array(
        1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
        1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
        1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
        1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
    )

    var rawData = new Array(
        0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
        0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
        0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
        0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
        0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
        0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
        0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
        0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
        0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
        0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
        0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
        0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
        0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
        0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
        0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
        0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
        0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
        0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
        0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
        0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
        0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
        0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
        0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
        0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
    )

    var transformed = new Array()
    for (var i=0; i<3; i++) transformed[i] = new Array()
    for (var i=31; i<=126; i++) for (var j=0; j<3; j++) transformed[j][rawData[(i-31) * 3 + j]] = (i==31) ? 9 : i
   
    var digits = new Array()
    for (var i=0; i<26; i++)
    {
        digits["A".charCodeAt(0)+i] = i
        digits["a".charCodeAt(0)+i] = i+26
    }
    for (var i=0; i<10; i++)    digits["0".charCodeAt(0)+i] = i+52
    digits[0x2b] = 62
    digits[0x2f] = 63

    function unescape(char)
    {
        var escapes = "#&!*$"
        var escaped = "/r/n<>@"

        if (char.charCodeAt(0) > 126)   return char
        if (escapes.indexOf(char) != -1)    return escaped.substr(escapes.indexOf(char), 1)
        return "?"
    }
   
    function decodeBase64(string)
    {
        var val = 0
        val +=  (digits[string.substr(0,1).charCodeAt(0)] << 2)
        val +=  (digits[string.substr(1,1).charCodeAt(0)] >> 4)
        val +=  (digits[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
        val += ((digits[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
        val += ((digits[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
        val +=  (digits[string.substr(3,1).charCodeAt(0)] << 16)
        return val
    }

    function strdec(encodingString)
    {
       
        var marker = "#@~^"
        var stringIndex = 0
        var scriptIndex = -1
        var unEncodingIndex = 0
        var char = null
        var encodingLength = unEncodinglength = 0
        var state = STATE_COPY_INPUT
        var unEncodingString = ""
        var re, arr
       
        while(state)
        {
            switch (state)
            {
                case (STATE_COPY_INPUT) :
                    scriptIndex = encodingString.indexOf(marker, stringIndex)
                    if (scriptIndex != -1)
                    {
                        unEncodingString += encodingString.substring(stringIndex, scriptIndex)
                        scriptIndex += marker.length
                        state = STATE_READLEN
                    }
                    else
                    {
                        stringIndex = stringIndex==0 ? 0 : stringIndex
                        unEncodingString += encodingString.substr(stringIndex, encodingString.length)
                        state = 0
                    }
                    break
               
                case (STATE_READLEN)    :
                    encodingLength = encodingString.substr(scriptIndex, 6)
                    unEncodinglength = decodeBase64(encodingLength)
                    scriptIndex += (6 + "==".length)
                    state = STATE_DECODE
                    break
                   
                case (STATE_DECODE) :
                    if (!unEncodinglength)
                    {
                        stringIndex = scriptIndex + "DQgAAA==^#~@".length
                        unEncodingIndex = 0
                        state = STATE_COPY_INPUT
                        break
                    }
                    char = encodingString.substr(scriptIndex, 1)
                    if (char == "@")    state = STATE_UNESCAPE
                    else
                    {
                        if (char.charCodeAt(0) < 0xFF)
                        {
                            unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
                            unEncodingIndex++
                        }
                        else
                        {
                            unEncodingString += char
                        }                      
                        scriptIndex++
                        unEncodinglength--
                        break
                    }
                   
                case STATE_UNESCAPE:
                    unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
                    scriptIndex++;  unEncodinglength -=2
                    unEncodingIndex++
                    state = STATE_DECODE
                    break
            }
        }
       
        re  = new RegExp("(JScript|VBscript).encode", "gmi")
        while(arr = re.exec(unEncodingString))  unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
        return unEncodingString
    }

/* End 解密实现:李辉煌 End*/


function DncodeFolderFiles(sFolderPath)
{
/*
 *--------------- DncodeFolderFiles(sFolderPath) -----------------
 * DncodeFolderFiles(sFolderPath)
 * 功能:遍历sFolderPath目录下的所有文件,对加密过的.asp文件
 *      进行解密,并写入源文件中.
 * 实例:DncodeFolderFiles(Server.MapPath("xml"));
 * author:wanghr100(灰豆宝宝.net)
 * update:2004-5-17 8:07
 *--------------- DncodeFolderFiles(sFolderPath) -----------------
 */
    var arrFiles = GetFilesPath(sFolderPath)
    for(var i=0;i<arrFiles.length;i++)
    {
        if(GetFileType(arrFiles[i])=="asp")
        {
            Response.Write(DncodeFile(arrFiles[i]))
            Response.Write("OK.<br>")
        }
    }
}

//取得xml目录下的所有文件.解密.
DncodeFolderFiles(Server.MapPath("xml"))
//取得t.asp.解密.
Response.Write(DncodeFile(Server.MapPath("t.asp")))
%>

 

asp解密chrw、chr编码文件- 58OA 网维系统解密

asp解密chrw、chr编码文件- 58OA 网维系统解密 解密 网维公司专用OA办公系统 58OA 解除域名绑定限制...
  • qq_35921430
  • qq_35921430
  • 2016年09月10日 10:38
  • 1482

学校的远程教育网络课程的整站ASP源代码

又有好长时间没有写点什么了,不知道自己什么时候能够忙结束,今天抽点时间写点东西,顺便放一个算是RC版本的网络课程的整站解决方案,说方案其实有点夸张其实只是一个整站的源代码而已,目前正在测试中,另外有些...
  • yctccg
  • yctccg
  • 2016年08月16日 10:39
  • 835

实验三:学生工作管理系统asp和asp.cs代码

粗糙的学生工作管理系统
  • u014646950
  • u014646950
  • 2015年06月15日 12:58
  • 1406

发布中小企业产品展示的ASP网站整站源代码

好长时间没有发点什么可供大家分享和下载的东西了,说实话,CG个人最近比较忙,学校组织我们去常熟的某个学校培训Java课程,之前又出去旅游了一段时间,最近一个星期又因为我的母校单方面的原因,搞得在这里培...
  • yctccg
  • yctccg
  • 2016年08月16日 10:39
  • 794

超简单的ASP解密方法

---------------------------------------------------------未解密代码--------------------------------------...
  • oceanark
  • oceanark
  • 2016年07月13日 23:06
  • 142

ASP上传图片代码例子

index.asp
  • tomora
  • tomora
  • 2013年09月15日 10:25
  • 2966

php源码之路第七章第三节 (PHP代码的加密解密)

PHP语言作为脚本语言的一种,由于不需要进行编译,所以通常PHP程序的分发都是直接发布源代码。对于一些开源软件来说,这并没有什么问题,因为它本来就希望有更多的人阅读代码,希望有更多的人参与进来,而对于...
  • buquan4041
  • buquan4041
  • 2016年12月07日 18:23
  • 538

文件上传之asp代码,工作原理,以及post包数据格式

代码来源于网络
  • heikefangxian23
  • heikefangxian23
  • 2014年10月30日 10:59
  • 2321

asp购物车源码

无标题文档 a{text-decoration:none;} td,div{font-size:12px}
  • quweiie
  • quweiie
  • 2014年05月18日 13:27
  • 3482

【asp】【留言板练习】【归纳总结】asp+sqlserver2008留言板

首先,总结下学习路线;
  • iMDingDing
  • iMDingDing
  • 2015年07月21日 09:39
  • 946
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解密ASP源代码.
举报原因:
原因补充:

(最多只允许输入30个字)