仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 569|回复: 9
打印 上一主题 下一主题

[学习教程] ASP网页编程之解密ASP源代码

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在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[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=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="
@"
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<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语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;
小女巫 该用户已被删除
沙发
发表于 2015-1-17 12:01:03 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
再现理想 该用户已被删除
板凳
发表于 2015-1-20 18:16:23 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
变相怪杰 该用户已被删除
地板
发表于 2015-1-29 13:59:13 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 01:45:37 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
再见西城 该用户已被删除
6#
发表于 2015-2-14 21:05:26 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
admin 该用户已被删除
7#
发表于 2015-3-4 10:30:57 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
乐观 该用户已被删除
8#
发表于 2015-3-11 18:23:41 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
爱飞 该用户已被删除
9#
发表于 2015-3-19 07:04:33 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
简单生活 该用户已被删除
10#
发表于 2015-3-27 12:09:50 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表