ASP网页编程之解密ASP源代码
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.从网上兴趣冲冲地下载了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-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=enmFiles.item().Path
}
varenmFolders=newEnumerator(oSubFolders);
for(;!enmFolders.atEnd();enmFolders.moveNext())
{
/*Old数构成了多维.*/
//sFilePath=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(".");
}
/*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=newArray()
for(vari=31;i<=126;i++)for(varj=0;j<3;j++)transformed]=(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=62
digits=63
functionunescape(char)
{
varescapes="#&!*$"
varescaped="
@"
if(char.charCodeAt(0)>126)returnchar
if(escapes.indexOf(char)!=-1)returnescaped.substr(escapes.indexOf(char),1)
return"?"
}
functiondecodeBase64(string)
{
varval=0
val+=(digits<<2)
val+=(digits>>4)
val+=(digits&0xf)<<12
val+=((digits>>2)<<8)
val+=((digits&0x3)<<22)
val+=(digits<<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])
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<arrFiles.length;i++)
{
if(GetFileType(arrFiles)=="asp")
{
Response.Write(DncodeFile(arrFiles))
Response.Write("OK.<br>")
}
}
}
//获得xml目次下的一切文件.解密.
DncodeFolderFiles(Server.MapPath("xml"))
//获得t.asp.解密.
Response.Write(DncodeFile(Server.MapPath("t.asp")))
%>
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 不能只是将它停留在纸上谈兵的程度上。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
页:
[1]