解密ASP源代码 -电脑资料

作者: 字体:[增加 减小] 类型:转载

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

解决办法来了..

代码如下:

<%@Language="JavaScript"%>

<%

/*

*---------------decode.asp-----------------

*功能:遍历某个目录下的所有文件,对加密过的.asp文件

*进行解密,并写入源文件中.

*实例:单个文件解密

*Response.Write(DncodeFile(Server.MapPath("conn.asp")));

*实例:目录下所有文件解密.

*DncodeFolderFiles(Server.MapPath("xml"))

*author:wanghr100(灰豆宝宝.net)

*update:2004-5-1711:31

*---------------decode.asp-----------------

*/

functionDncodeFile(sFilePath)

{

/*

*---------------DncodeFile(sFilePath)-----------------

*DncodeFile(sFilePath)

*功能:打开文件sFilePath,Encode解密,重写该文件.

*参数:sFilePath,字符串,文件的路径.

*返回:sFilePath,文件的路径.

*实例:Response.Write(DncodeFile(Server.MapPath("conn.asp")));

*author:wanghr100(灰豆宝宝.net)

*update:2004-5-170:58

*---------------DncodeFile(sFilePath)-----------------

*/

varForReading=1,ForWriting=2,ForAppending=8;

varfso=Server.CreateObject("Scripting.FileSystemObject");

varf=fso.OpenTextFile(sFilePath,ForReading,true);

sFileText=f.ReadAll();

f.Close();

sDncodeText=strdec(sFileText)

varf=fso.OpenTextFile(sFilePath,ForWriting,true);

f.Write(sDncodeText);

f.Close();

//returnsDncodeText;

returnsFilePath;

}

functionGetFilesPath(sFolderPath)

{

/*

*---------------GetFilesPath(sFolderPath)-----------------

*GetFilesPath(sFolderPath)

*功能:遍历sFolderPath目录下的所有文件.返回数组.存储文件路径.

*参数:sFolderPath,字符串,目录绝对路径.

*实例:Response.Write(GetFilesPath(Server.MapPath("xml")))

*update:2004-5-128:33

*author:wanghr100(灰豆宝宝.net)

*---------------GetFilesPath(sFolderPath)-----------------

*/

varsFilePath=newArray();

varfso=Server.CreateObject("Scripting.FileSystemObject");

varoFolder=fso.GetFolder(sFolderPath);

varoSubFolders=oFolder.SubFolders;

varoFiles=oFolder.Files;

icount=oFiles.Count;

varenmFiles=newEnumerator(oFiles);

for(;!enmFiles.atEnd();enmFiles.moveNext())

{

sFilePath[sFilePath.length]=enmFiles.item().Path

}

varenmFolders=newEnumerator(oSubFolders);

for(;!enmFolders.atEnd();enmFolders.moveNext())

{

/*Old数组成了多维.*/

//sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);

/*Add2004-5-1711:09只为一维数组*/

sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));

}

returnsFilePath;

}

functionGetFileType(sFileName)

{

/*

*---------------GetFileType(sFileName)-----------------

*GetFileType(sFileName)

*功能:通过后缀,取得sFileName的文件类型.

*参数:sFileName,字符串,文件名.

*实例:Response.Write(GetFileType("decode.asp"))

*update:2004-5-138:33

*author:wanghr100(灰豆宝宝.net)

*---------------GetFileType(sFileName)-----------------

*/

sFileName=String(sFileName);

returnsFileName.split(".")[sFileName.split(".").length-1];

}

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

functionscrencode(s,l)

{enc=newActiveXObject("Scripting.Encoder");

returnenc.EncodeScriptFile("."+l,s,0,l+"cript")

;

}

varSTATE_COPY_INPUT=100

varSTATE_READLEN=101

varSTATE_DECODE=102

varSTATE_UNESCAPE=103

varpick_encoding=newArray(

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

)

varrawData=newArray(

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

)

vartransformed=newArray()

for(vari=0;i<3;i++)transformed[i]=newArray()

for(vari=31;i<=126;i++)for(varj=0;j<3;j++)transformed[j][rawData[(i-31)*3+j]]=(i==31)?9:i

vardigits=newArray()

for(vari=0;i<26;i++)

{

digits["A".charCodeAt(0)+i]=i

digits["a".charCodeAt(0)+i]=i+26

}

for(vari=0;i<10;i++)digits["0".charCodeAt(0)+i]=i+52

digits[0x2b]=62

digits[0x2f]=63

functionunescape(char)

{

varescapes="#&!*$"

varescaped="\r\n<>@"

if(char.charCodeAt(0)>126)returnchar

if(escapes.indexOf(char)!=-1)returnescaped.substr(escapes.indexOf(char),1)

return"?"

}

functiondecodeBase64(string)

{

varval=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)

returnval

}

functionstrdec(encodingString)

{

varmarker="#@~^"

varstringIndex=0

varscriptIndex=-1

varunEncodingIndex=0

varchar=null

varencodingLength=unEncodinglength=0

varstate=STATE_COPY_INPUT

varunEncodingString=""

varre,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

}

caseSTATE_UNESCAPE:

unEncodingString+=unescape(encodingString.substr(++scriptIndex,1))

scriptIndex++;unEncodinglength-=2

unEncodingIndex++

state=STATE_DECODE

break

}

}

re=newRegExp("(JScript.|VBscript).encode","gmi")

while(arr=re.exec(unEncodingString))unEncodingString=RegExp.leftContext+RegExp.$1+RegExp.rightContext

returnunEncodingString

}

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

functionDncodeFolderFiles(sFolderPath)

{

/*

*---------------DncodeFolderFiles(sFolderPath)-----------------

*DncodeFolderFiles(sFolderPath)

*功能:遍历sFolderPath目录下的所有文件,对加密过的.asp文件

*进行解密,并写入源文件中.

*实例:DncodeFolderFiles(Server.MapPath("xml"));

*author:wanghr100(灰豆宝宝.net)

*update:2004-5-178:07

*---------------DncodeFolderFiles(sFolderPath)-----------------

*/

vararrFiles=GetFilesPath(sFolderPath)

for(vari=0;i

{

if(GetFileType(arrFiles[i])=="asp")

{

Response.Write(DncodeFile(arrFiles[i]))

Response.Write("OK.
")

}

}

}

//取得xml目录下的所有文件.解密.

DncodeFolderFiles(Server.MapPath("list"))

//取得t.asp.解密.

//Response.Write(DncodeFile(Server.MapPath("t.asp")))

%>

相关文章

大海捞针歇后语下一句

大海捞针歇后语下一句:劳而无功/没处寻/难上难/一场空/枉费心/无处找大海捞针【解释】:在大海里捞一根针。比喻极难找到。【出自】:元·柯丹丘《荆钗记·误讣》:“儿,此生休想同衾枕,要相逢除非东海捞针。...
资料大全2013-03-06
大海捞针歇后语下一句

关于诺基亚symbian证书10种错误提示及解决办法

今天为大家带来的是,诺基亚symbian证书的常见错误和解决办法,这属于初级入门教程了,老鸟门绕过!工具/原料诺基亚symbian手机步骤/方法1一:更新错误。问题说明:一般出现这提示是因为安装软件时...
资料大全2011-03-03
关于诺基亚symbian证书10种错误提示及解决办法

家乡的变化

家乡的变化1我的家乡是一座美丽的小城,如今漫步许昌的大街小巷,出入特色鸽子异的广场游园,目睹鳞次栉比的高楼大厦以及宽阔的马路,花园别墅式的公厕等等,都会让人们不约而同的发出感叹:许昌城市建设发展的真快...
资料大全2015-08-06
家乡的变化

关于年会征集节目的通知

一年一度的年会就要来了,下面YJBYS小编为大家精心搜集了2篇2017年关于年会征集节目的通知,欢迎大家参考借鉴,希望可以帮助到大家!2017年关于年会征集节目的通知范文一各同事各部门...
资料大全2018-09-02
关于年会征集节目的通知

电话的基本礼仪

电话被现代人公认为便利的通讯工具,在日常工作中,使用电话的语言很关键,它直接影响着一个公司的声誉;在日常生活中,人们通过电话也能粗略判断对方的人品、性格,关于电话的基本礼仪。因而,掌握正确的、礼貌待人...
资料大全2019-07-09
电话的基本礼仪

开业的邀请函

尊敬的先生/女士: 您好! 首先我们感谢您在过去的时光里对我们的关注和支持,感谢您对我们所有工作的理解和肯定!在此,董...
资料大全2012-03-05
开业的邀请函