仓酷云

标题: ASP网页编程之网站平安之ASP程序加密/解密办法年夜揭密... [打印本页]

作者: 深爱那片海    时间: 2015-1-16 22:20
标题: 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[switches]<要加密asp文件名><加密后的文件名>
  个中[switches]项目能够选以下5个参数
  [switches]寄义举例
  /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提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。
作者: 谁可相欹    时间: 2015-1-19 08:59
不能只是将它停留在纸上谈兵的程度上。
作者: 愤怒的大鸟    时间: 2015-1-28 05:57
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
作者: 海妖    时间: 2015-2-5 18:17
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
作者: 莫相离    时间: 2015-2-13 05:48
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
作者: 仓酷云    时间: 2015-3-3 16:21
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
作者: 飘灵儿    时间: 2015-3-18 16:48
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
作者: 山那边是海    时间: 2015-3-26 12:58
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2