ASP网页编程之网站平安之ASP程序加密/解密办法年夜揭密...
使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。平安|程序|加密|解密 现在,用ASP手艺构建的网站到处可见。因为ASP剧本是在服务器上注释实行的(没法编译),因而你辛劳开辟出来的ASP代码,很简单被人拷往恣意修正,怎样回护ASP源代码呢?这是每一个ASP站长城市碰到的困难,网上求解这类成绩的帖子十分多,上面我们就来谈谈ASP程序的加密办法。1、怎样加密ASP程序?
今朝对ASP程序的加密办法次要有三种:剧本编码器(SRCENC.EXE)加密、组件加密、自编程序加密,上面我们就来睁开先容这三种加密办法。
1、利用微软的MSScriptEncode举行加密
微软供应了剧本编码器MSScriptEncode(下载地点http://www.itgene.cn/itgene/download/download.aspID=232),能够对ASP程序举行加密。这是一个复杂的命令行工具,其实行文件是SRCENC.EXE,必要在DOS下运转。它只加密页面中嵌进的剧本代码,把网页中之间的ASP代码转换成不成读的乱码,其他部分则坚持原样稳定。加密后的程序,必需利用InternetExplorer5.0以上版本才干一般扫瞄。
用SRCENC加密以后,文件中被加密过的部分将酿成只读范例,假设你修正了加密部分(哪怕只修改一个字),就会招致全部文件不克不及利用。关于VBScript,加密后在源文件的第一行会显现:<SCRIPTLANGUAGE="VBScript.Encode">;而JScript(或JavaScript)则会显现:<SCRIPTLANGUAGE="JScript.Encode">
(1)加密办法
单击“入手下手”/程序/附件/命令提醒符,在MS-DOS命令行中输出以下命令,便可对某个asp文件加密:
SRCENC<要加密asp文件名><加密后的文件名>
个中项目能够选以下5个参数
寄义举例
/s可选。命令中带了该参数,加密过程当中屏幕上就不会有输入。screnc/slacl.sctulacl.sct
对以后目次中的剧本小程序lacl.sct加密,加密过程当中屏幕不显现任何信息
/f可选。指定输入文件是不是掩盖同名输出文件。疏忽,将不实行掩盖。screnc/flacl.asp
对文件lacl.asp加密,并用编码后的同名文件掩盖原文件
/xl可选。是不是在.asp文件的顶部增加@Language指令。疏忽,将增加。
/ldefLanguage可选。指定ScriptEncoder加密当选择的缺省剧本言语。文件中不包括这类剧本言语特征的剧本将被ScriptEncoder疏忽。
关于HTML文件,JScript为内置缺省剧本言语;关于ASP文件,VBScript为缺省剧本言语;关于扩大名为.vbs或.js的文件,ScriptEncoder也有自顺应才能。screnc/lvbscriptlacl.htmulacl.htm
对文件lacl.htm加密,并天生输入文件ulacl.htm,确保没有指定言语属性的剧本块利用VBScript
/edefExtension可选。指定待加密文件的文件扩大名。缺省形态下,ScriptEncoder能辨认asa,asp,cdx,htm,html,js,sct和vbs文件。screnc/easp11*.*f:labxw-jm
对11目次中的一切.ASP文件举行加密,并把编码后的输入文件放在f:labxw-jm目次中
(2)操纵举例
比方要加密以后目次中的lacl.asp文件,天生加密文件ulacl.asp,则在DOS下输出命令:
screnclacl.aspulacl.asp
对以后目次中的一切.ASP文件举行加密,并把编码后的输入文件放在f:labxw中,则利用命令:
screnc*.aspf:labxw
2、利用组件加密asp
以上被screnc加密过的程序,是能够解密的(解密办法下文有先容),假如你想完全回护本人的asp代码,能够经由过程开辟activexdll组件的办法举行回护。
Dll文件是被编译过的呆板代码,假如没有源项目文件,是不成能被反编译的,以是组件加密这类办法最平安,也不成能被破解。上面我们来举例申明操纵历程,比方你要回护以下asp代码:
<P> setrs=server.createobject("adodb.recordset")
sql="select*fromgqwherexs=1orderbydateasc"
rs.opensql,conn,1,1
ifrs.eofandrs.bofthen
response.write"<AHREF=new0.asp?lbid=gqx><%=gqx%></A>"
else
Response.Write""
endif
setrs=nothing
conn.close
setconn=nothing
能够把它们改写成VB组件,然后在ASP文件中挪用组件便可。操纵步骤以下:
(1)新建一个vb6的activexdll项目
在属性窗口中,定名你的库模块和项目文件(比方项目名lacl,模块名disp),今后在asp文件中,挪用的工具名将为lacl_disp
选择vb6中的项目菜单中的references,选中microsoftactivexdataobjects2.0library
(2)编写VB组件
接上去把<欲回护的asp代码>改写成VB组件,代码以下:
<P> publicfunctionhtml_combo(disp_tableasstring)asstring
dimoutstringasstring
dimconnasadodb.connection
dimrstasadodb.recordset
dimsqlstringasstring
setconn=createobject("adodb.connection")
setrst=createobject("adodb.recordset")
sqlstring="select*from"&disp_table&"wherexs=1orderbydateasc"
以上是在VB中翻开数据库操纵,数据库中的表名、字段名,你能够依据本人的必要修正
conn.open"dsn=sumnet"
rst.opensqlstring,conn,3,3
ifrst.eofandrst.bofthen
outstring="还没有这类单元信息"
else
rst.movefirst
outstring="<AHREF=new0.asp?lbid="&request("lbid")&"></A>"
endif
html_combo=outstring
rst.close
conn.close
endfunction
写好以上VB代码后,保留项目并入手下手编译。
(3)天生安装文件
翻开visualstudio6中附带的packagedeploymentwizard程序,选择方才创建的activex项目文件lacl;选择package,选择要打包的剧本或利用默许剧本,选择尺度安装,为天生的安装文件选择一个寄存目次,选择singlecab.其他均默许;然后单击下一步,安装文件就主动天生了!
(4)在IIS服务器上安装组件
在IIS服务器上运转这个安装文件,把组件安装到服务器上。
(5)在网页中挪用组件
今后在ASP文件中,经由过程挪用该组件完成本来的功效。在网页中挪用你制造的组件,办法以下:
<Pclass=MsoPlainText><%@language="vbscript"%>
<%
setdiaoyong=server.createobject("lacl_disp.disp")
%>
<html>
<body>
<%=diaoyong.html_combo("gq")%>
<br>
</body>
</html>
你看,如今Asp文件中的内容只是组件的挪用(与之前完整分歧),他人即便失掉该文件,也没法编纂修正源代码,由于代码都被封装在VB组件中了,关于组件中的代码,外人是没法看到、也不克不及反编译的!
3、本人编写加密程序
组件加密办法固然不成破解,可是请求你熟习VB编程,必要把ASP代码改写成VB组件,事情量很年夜,以是倡议人人本人编程来回护asp代码,其基础思绪是:写一个加密函数base64Encode息争密函数base64Decode,先用加密函数处置<要回护的asp代码>,失掉对应的密文hu;然后再用execute(base64Decode(hu))交换<欲回护的asp代码>。
比方我们要回护下面那段asp代码,能够如许操纵:
(1)用WORD处置<要回护的ASP代码>
将<要回护的ASP代码>拷到WORD中;在WORD中,把代码里的段落标志(回车换行)全体交换成“水”这个汉字,办法是:点击“编纂”/交换,光标移到“查找内容”栏,点“初级”/特别字符,选择“段落标志”;光标移到“交换为”栏,输出“水”,最初点“全体交换”。同法,把代码中的单引号也全体交换成“加”这个汉字。
(2)编写、运转加密程序
在FrontPage中编写加密程序,该程序中有初始化函数initCodecs、加密函数base64Encode(代码以下),把WORD处置后的代码,copy粘贴在inp=""这句中,最初以test1.asp名存盘;在IE中输出http://127.0.0.1/test1.asp当地运转该文件;屏幕上会显现一年夜段乱码(比方c2V0IHJzPXNlcnZlci5jcmVhd...),这就是《要回护的asp代码》对应的密文!
<P> OPTIONEXPLICIT
constBASE_64_MAP_INIT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dimnewline
dimBase64EncMap(63)
dimBase64DecMap(127)
diminp,hu,encode
callinitCodecs初始化
inp="<WORD处置后的asp代码>"将要回护的asp代码用WORD处置,然后填在此处
hu=base64Encode(inp)挪用函数base64Encode举行加密,失掉密文hu
Response.Write(hu)显现密文
PUBLICSUBinitCodecs()初始化函数initCodecs
newline="<P>"&chr(13)&chr(10)
dimmax,idx
max=len(BASE_64_MAP_INIT)
foridx=0tomax-1
Base64EncMap(idx)=mid(BASE_64_MAP_INIT,idx+1,1)
next
foridx=0tomax-1
Base64DecMap(ASC(Base64EncMap(idx)))=idx
next
ENDSUB
PUBLICFUNCTIONbase64Encode(plain)加密函数base64Encode
iflen(plain)=0then
base64Encode=""
exitfunction
endif
dimret,ndx,by3,first,second,third
by3=(len(plain)3)*3
ndx=1
dowhilendx<=by3
first=asc(mid(plain,ndx+0,1))
second=asc(mid(plain,ndx+1,1))
third=asc(mid(plain,ndx+2,1))
ret=ret&Base64EncMap((first4)AND63)
ret=ret&Base64EncMap(((first*16)AND48)+((second16)AND15))
ret=ret&Base64EncMap(((second*4)AND60)+((third64)AND3))
ret=ret&Base64EncMap(thirdAND63)
ndx=ndx+3
loop
ifby3<len(plain)then
first=asc(mid(plain,ndx+0,1))
ret=ret&Base64EncMap((first4)AND63)
if(len(plain)MOD3)=2then
second=asc(mid(plain,ndx+1,1))
ret=ret&Base64EncMap(((first*16)AND48)+((second16)AND15))
ret=ret&Base64EncMap(((second*4)AND60))
else
ret=ret&Base64EncMap((first*16)AND48)
ret=ret&"="
endif
ret=ret&"="
endif
base64Encode=ret
ENDFUNCTION
(3)从头改写要回护的asp文件
改写本来的asp文件,在文件中增添UnEncode和base64Decode函数,全体代码以下:
<P> DimHu,Hu2
拷贝“欲回护asp代码”的密文将之寄存到Hu变量中
Hu=”c2V0IHJzPXNlcnZlci5jcmVhdGVvYmplY3Qo12Fkb2RiLnJlY29yZHNldOMpICAgICDuc3FsPeNzZWxlY3QgKiBmcm9tIGdxICB3aGVyZSB4cz0xIG9yZGVyIGJ5IGRhdGUgYXNj1yAgICAgsnJzLm9wZW4gc3FsLGNvbm4sMSwxICAgICDuaWYgcnMuZW9mIGFuZCBycy5ib2YgdGhlbiDucmVzcG9uc2Uud3JpdGUTvSD7INAg5iAgILUgvyAFILITsmVsc2UgsiAgICAgUmVzcG9uc2UuV3JpdGUg1zxBIEhSRUY9bmV3MC5hc3A/bGJpZD0TJnJlcXVlc3Qo12xiaWQTKSAmIOM+PC9BPuPuZW5kIGlmICAgIL5zZXQgcnM9bm90aGluZyAgICAgICAgsmNvbm4uY2xvc2UgICAgICDuc2V0IGNvbm49bm90aGluZyAgIL4”
Hu2=base64Decode(hu)复原要回护的ASP代码
execute(UnEncode(Hu2))复原单引号、回车换行,并实行原代码
’解密函数base64Decode
FUNCTIONbase64Decode(scrambled)
iflen(scrambled)=0then
base64Decode=""
exitfunction
endif
dimrealLen
realLen=len(scrambled)
dowhilemid(scrambled,realLen,1)="="
realLen=realLen-1
loop
dimret,ndx,by4,first,second,third,fourth
ret=""
by4=(realLen4)*4
ndx=1
dowhilendx<=by4
first=Base64DecMap(asc(mid(scrambled,ndx+0,1)))
second=Base64DecMap(asc(mid(scrambled,ndx+1,1)))
third=Base64DecMap(asc(mid(scrambled,ndx+2,1)))
fourth=Base64DecMap(asc(mid(scrambled,ndx+3,1)))
ret=ret&chr(((first*4)AND255)+((second16)AND3))
ret=ret&chr(((second*16)AND255)+((third4)AND15))
ret=ret&chr(((third*64)AND255)+(fourthAND63))
ndx=ndx+4
loop
ifndx<realLenthen
first=Base64DecMap(asc(mid(scrambled,ndx+0,1)))
second=Base64DecMap(asc(mid(scrambled,ndx+1,1)))
ret=ret&chr(((first*4)AND255)+((second16)AND3))
ifrealLenMOD4=3then
third=Base64DecMap(asc(mid(scrambled,ndx+2,1)))
ret=ret&chr(((second*16)AND255)+((third4)AND15))
endif
endif
base64Decode=ret
ENDFUNCTION
复原单引号、回车换行函数UnEncode
functionUnEncode(cc)
fori=1tolen(cc)
ifmid(cc,i,1)"水"then
ifmid(cc,i,1)="加"then
temp=""""&temp
else
temp=Mid(cc,i,1)+temp
endif
else
temp=newline&temp
endif
next
UnEncode=temp
endfunction
将以上代码以test2.asp名存盘。
(4)用SRCENC加密test2.asp
用SRCENC加密test2.asp,然后把它公布到服务器上,如许他人即便失掉该文件、破解了SRCENC加密,也没法看到原代码,由于原代码在test2.asp中是密文(Hu=”c2V0IHJzPXNlcnZlc...),以是ASP代码就被回护起来了!
2、加密过的asp程序怎样解密?
怎样对加密过的asp程序解密呢?起首我们要告知人人,用组件法加密的asp程序是没法解密的,而screnc加密过的程序则能够解密,办法是:利用解密软件(ZWDECODE.EXE)。
ZWDECODE.EXE(下载地点http://www.mydown.com/softdown/45/45183.html)能够对MSScriptEncode加密的ASP文件举行解密,复原出源代码。
(1)解密办法
单击“入手下手”/程序/附件/命令提醒符,在MS-DOS命令行中输出以下命令,便可恢回复代码:
ZWDECODE<已加密asp文件名>
个中<已加密asp文件名>必须输出,该文件名可带目次路径;也必须输出,这是要天生的输入文件名,也能够领路径信息。
(2)举例
比方F:22lacl.asp曾被screnc加密处置过,如今要恢复个中的源代码,你能够在MS-DOS中输出以下命令:
ZWDECODEF:22lacl.aspd:ulacl.asp
实行终了,在D盘上就会天生一个ulacl.asp文件,翻开该文件,你就可以看到源代码了!
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 不能只是将它停留在纸上谈兵的程度上。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
页:
[1]