仓酷云

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

[学习教程] ASP编程:怎样解密加密的ASP源代码

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。加密|解密|源代码从网上兴趣冲冲地下载了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[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="
@"
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[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")))
%>
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.
柔情似水 该用户已被删除
沙发
发表于 2015-1-18 22:15:04 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-25 13:44:22 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
小妖女 该用户已被删除
地板
发表于 2015-2-2 22:18:58 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
只想知道 该用户已被删除
5#
发表于 2015-2-8 14:02:05 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
海妖 该用户已被删除
6#
发表于 2015-2-25 16:27:13 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
小魔女 该用户已被删除
7#
发表于 2015-3-8 00:36:07 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
第二个灵魂 该用户已被删除
8#
发表于 2015-3-15 18:06:08 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-22 03:09:08 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 10:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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