网站安全之ASP程序加密解密方法全面解析

  如今,用ASP技术构建的网站随处可见。由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的难题,网上求解这类问题的帖子非常多,下面我们就来谈谈ASP程序的加密方法。

  一、如何加密ASP程序?

  目前对ASP程序的加密方法主要有三种:脚本编码器(SRCENC.EXE)加密、组件加密、自编程序加密,下面我们就来展开介绍这三种加密方法。

  1、使用微软的MS Script Encode进行加密

  微软提供了脚本编码器MS Script Encode(下载地址http://www.itgene.cn/itgene/download/download.aspID=232),可以对ASP程序进行加密。这是一个简单的命令行工具,其执行文件是SRCENC.EXE,需要在DOS下运行。它只加密页面中嵌入的脚本代码,把网页中之间的ASP代码转换成不可读的乱码,其他部分则保持原样不变。加密后的程序,必须使用Internet Explorer 5.0以上版本才能正常浏览。

  用SRCENC加密之后,文件中被加密过的部分将变成只读类型,假如你修改了加密部分(哪怕只改动一个字),就会导致整个文件不能使用。对于 VBScript,加密后在源文件的第一行会显示:<SCRIPT LANGUAGE="VBScript.Encode">;而JScript(或 JavaScript)则会显示:<SCRIPT LANGUAGE="JScript.Encode">

  (1)加密方法

  单击“开始”/程序/附件/命令提示符,在MS-DOS 命令行中输入以下命令,即可对某个asp文件加密:

SRCENC  [switches]  <要加密asp文件名>  <加密后的文件名>

  其中[switches]项目可以选以下5个参数

  [switches] 含义 举例

  /s 可选。命令中带了该参数,加密过程中屏幕上就不会有输出。 screnc /s lacl.sct ulacl.sct

  对当前目录中的脚本小程序lacl.sct加密,加密过程中屏幕不显示任何信息

  /f 可选。指定输出文件是否覆盖同名输入文件。忽略,将不执行覆盖。 screnc /f lacl.asp

  对文件 lacl.asp加密,并用编码后的同名文件覆盖原文件

  /xl 可选。是否在.asp文件的顶部添加@Language指令。忽略,将添加。

  /l defLanguage 可选。指定Script Encoder加密中选择的缺省脚本语言。文件中不包含这种脚本语言特性的脚本将被Script Encoder 忽略。

  对于HTML文件,JScript为内置缺省脚本语言;对于ASP文件,VBScript为缺省脚本语言;对于扩展名为.vbs或.js的文件,Script Encoder也有自适应能力。 screnc /l vbscript lacl.htm ulacl.htm

  对文件 lacl.htm加密,并生成输出文件 ulacl.htm,确保没有指定语言属性的脚本块使用 VBScript

  /e defExtension 可选。指定待加密文件的文件扩展名。缺省状态下,Script Encoder能识别asa,asp,cdx,htm,html,js,sct和vbs文件。 screnc /e asp 11\*.* f:\labxw-jm

  对11目录中的所有.ASP 文件进行加密,并把编码后的输出文件放在f:\labxw-jm目录中

  (2)操作举例

  例如要加密当前目录中的lacl.asp文件,生成加密文件ulacl.asp,则在DOS下输入命令:

  screnc lacl.asp ulacl.asp

  对当前目录中的所有 .ASP 文件进行加密,并把编码后的输出文件放在f:\labxw中,则使用命令:

  screnc *.asp f:\labxw

 

  2、使用组件加密asp

  以上被screnc加密过的程序,是可以解密的(解密方法下文有介绍),如果你想彻底保护自己的asp代码,可以通过开发activex dll组件的方法进行保护。

  Dll文件是被编译过的机器代码,如果没有源项目文件,是不可能被反编译的,所以组件加密这种方法最安全,也不可能被破解。下面我们来举例说明操作过程,例如你要保护以下asp代码:

以下是引用片段:
  set rs=server.createobject("adodb.recordset")
  sql="select * from gq where xs=1 order by date asc"
  rs.open sql,conn,1,1
  if rs.eof and rs.bof then
  response.write"<A HREF=new0.asp?lbid=gqx ><%= gqx %></A>"
  else
  Response.Write ""
  end if
  set rs=nothing
  conn.close
  set conn=nothing

  可以把它们改写成VB组件,然后在ASP文件中调用组件即可。操作步骤如下:

  (1)新建一个vb6的activex dll项目

  在属性窗口中,命名你的库模块和项目文件(例如项目名lacl,模块名disp),以后在asp文件中,调用的对象名将为lacl_disp

  选择vb6中的项目菜单中的references ,选中microsoft activex data objects 2.0 library

  (2)编写VB组件

  接下来把<欲保护的asp代码>改写成VB组件,代码如下:

以下是引用片段:
  public function html_combo(disp_table as string) as string
  dim outstring as string
  dim conn as adodb.connection
  dim rst as adodb.recordset
  dim sqlstring as string
  set conn = createobject("adodb.connection")
  set rst = createobject("adodb.recordset")
  sqlstring = "select * from " & disp_table & " where xs=1 order by date asc"
  '以上是在VB中打开数据库操作,数据库中的表名、字段名,你可以根据自己的需要修改
  conn.open "dsn=sumnet"
  rst.open sqlstring, conn, 3, 3
  if rst.eof and rst.bof then
  outstring = ""
  else
  rst.movefirst
  outstring = "<A HREF=new0.asp?lbid="&request("lbid") & "></A>"
  end if
  html_combo = outstring
  rst.close
  conn.close
  end function

  写好以上VB代码后,保存项目并开始编译。

  (3)生成安装文件

  打开visual studio 6中附带的package deployment wizard程序,选择刚才建立的activex项目文件lacl;选择package,选择要打包的脚本或使用默认脚本,选择标准安装,为生成的安装文件选择一个存放目录,选择single cab. 其他均默认;然后单击下一步,安装文件就自动生成了!

  (4)在IIS服务器上安装组件

  在IIS服务器上运行这个安装文件,把组件安装到服务器上。

 

  (5)在网页中调用组件

  以后在ASP文件中,通过调用该组件完成原来的功能。在网页中调用你制作的组件,方法如下:

以下是引用片段:
  <%@ language="vbscript" %>
  <%
  set diaoyong = 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代码》对应的密文!

以下是引用片段:
  OPTION EXPLICIT
  const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  dim newline
  dim Base64EncMap(63)
  dim Base64DecMap(127)
  dim inp,hu,encode
  call initCodecs '初始化
  inp = "<WORD处理后的asp代码>" '将要保护的asp代码用WORD处理,然后填在此处
  hu= base64Encode(inp) '调用函数base64Encode进行加密,得到密文hu
  Response.Write(hu) '显示密文
  PUBLIC SUB initCodecs() '初始化函数initCodecs
  newline = "<P>" & chr(13) & chr(10)
  dim max, idx
  max = len(BASE_64_MAP_INIT)
  for idx = 0 to max - 1
  Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
  next
  for idx = 0 to max - 1
  Base64DecMap(ASC(Base64EncMap(idx))) = idx
  next
  END SUB
  PUBLIC FUNCTION base64Encode(plain) '加密函数base64Encode
  if len(plain) = 0 then
  base64Encode = ""
  exit function
  end if
  dim ret, ndx, by3, first, second, third
  by3 = (len(plain) \ 3) * 3
  ndx = 1
  do while ndx <= 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( (first \ 4) AND 63 )
  ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
  ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
  ret = ret & Base64EncMap( third AND 63)
  ndx = ndx + 3
  loop
  if by3 < len(plain) then
  first = asc(mid(plain, ndx+0, 1))
  ret = ret & Base64EncMap( (first \ 4) AND 63 )
  if (len(plain) MOD 3 ) = 2 then
  second = asc(mid(plain, ndx+1, 1))
  ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
  ret = ret & Base64EncMap( ((second * 4) AND 60) )
  else
  ret = ret & Base64EncMap( (first * 16) AND 48)
  ret = ret '& "="
  end if
  ret = ret '& "="
  end if
  base64Encode = ret
  END FUNCTION

  (3)重新改写要保护的asp文件

  改写原来的asp文件,在文件中增加UnEncode 和base64Decode函数,全部代码如下:

以下是引用片段:
  Dim Hu,Hu2
  '拷贝“欲保护asp代码”的密文 将之存放到Hu变量中
  Hu=”c2V0IHJzPXNlcnZlci5jcmVhdGVvYmplY3Qo12Fkb2RiLnJlY29yZHNldOMpICAgICDuc3FsPeNzZWxlY3QgKiBmcm9tIGdxICB3aGVyZSB4cz0xIG9yZGVyIGJ5IGRhdGUgYXNj1yAgICAgsnJzLm9wZW4gc3FsLGNvbm4sMSwxICAgICDuaWYgcnMuZW9mIGFuZCBycy5ib2YgdGhlbiDucmVzcG9uc2Uud3JpdGUTvSD7INAg5iAgILUgvyAFILITsmVsc2UgsiAgICAgUmVzcG9uc2UuV3JpdGUg1zxBIEhSRUY9bmV3MC5hc3A/bGJpZD0TJnJlcXVlc3Qo12xiaWQTKSAmIOM+PC9BPuPuZW5kIGlmICAgIL5zZXQgcnM9bm90aGluZyAgICAgICAgsmNvbm4uY2xvc2UgICAgICDuc2V0IGNvbm49bm90aGluZyAgIL4”
  Hu2= base64Decode(hu) '还原要保护的ASP代码
  execute(UnEncode(Hu2)) '还原单引号、回车换行,并执行原代码
  ’解密函数base64Decode
  FUNCTION base64Decode(scrambled)
  if len(scrambled) = 0 then
  base64Decode = ""
  exit function
  end if
  dim realLen
  realLen = len(scrambled)
  do while mid(scrambled, realLen, 1) = "="
  realLen = realLen - 1
  loop
  dim ret, ndx, by4, first, second, third, fourth
  ret = ""
  by4 = (realLen \ 4) * 4
  ndx = 1
  do while ndx <= 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) AND 255) + ((second \ 16) AND 3))
  ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
  ret = ret & chr( ((third * 64) AND 255) + (fourth AND 63))
  ndx = ndx + 4
  loop
  if ndx < realLen then
  first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
  second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
  ret = ret & chr( ((first * 4) AND 255) + ((second \ 16) AND 3))
  if realLen MOD 4 = 3 then
  third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
  ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
  end if
  end if
  base64Decode = ret
  END FUNCTION
  '还原单引号、回车换行函数UnEncode
  function UnEncode(cc)
  for i = 1 to len(cc)
  if mid(cc,i,1)<> "水" then
  if mid(cc,i,1)="加" then
  temp = """" & temp
  else
  temp = Mid(cc, i, 1) + temp
  end if
  else
  temp=newline&temp
  end if
  next
  UnEncode=temp
  end function

  将以上代码以test2.asp名存盘。

  (4)用SRCENC加密test2.asp

  用SRCENC加密test2.asp,然后把它发布到服务器上,这样别人即使得到该文件、破解了SRCENC加密,也无法看到原代码,因为原代码在test2.asp中是密文(Hu=”c2V0IHJzPXNlcnZlc...),所以ASP代码就被保护起来了!

 

  二、加密过的asp程序如何解密?

  如何对加密过的asp程序解密呢?首先我们要告诉大家,用组件法加密的asp程序是无法解密的,而screnc加密过的程序则可以解密,方法是:使用解密软件(ZWDECODE.EXE)。

  ZWDECODE.EXE(下载地址http://www.mydown.com/softdown/45/45183.html)可以对MS Script Encode加密的ASP文件进行解密,还原出源代码。

  (1)解密方法

  单击“开始”/程序/附件/命令提示符,在MS-DOS 命令行中输入以下命令,即可恢复原代码:

  ZWDECODE <已加密asp文件名>

  其中<已加密asp文件名>必需输入,该文件名可带目录路径;也必需输入,这是要生成的输出文件名,也可以带路径信息。

  (2)举例

  例如F:\22\lacl.asp曾被screnc加密处理过,现在要恢复其中的源代码,你可以在MS-DOS中输入以下命令:

  ZWDECODE F:\22\lacl.asp d:\ulacl.asp

  执行完毕,在D盘上就会生成一个ulacl.asp文件,打开该文件,你就能看到源代码了! 

ASP解密工具合集。破解加密了的ASP源码用的 文件包内包含了asp加解密工具。!!可以破解大部分asp加密方式。。当然。不可逆的没办法啊。 立即下载

相关推荐

Screnc-Zwdecode脚本编解码工具

Screnc和Zwdecode的脚本编解码工具,内含一份使用说明文档,可对asa、asp、cdx、htm、html、js、sct和 vbs等文件进行编码和解码

ASP源码—网址在线加密解密,网址加密解密方法及工具.zip

ASP源码—网址在线加密解密,网址加密解密方法及工具.zip

SCRENC-zwdecode-脚本编码解码工具(2012-0911整理含官方帮助)

最近需要这个东西就收集了下,看起来比较全了,分享给大家 1、SCRENC.EXE是用来加密的 格式:SCRENC inputfile outputfile eg:screnc /xl file.asp file_encrypt.asp 具体使用方法可以参考SCRENC.CHM帮助文件,中文的! 2、zwdecode.exe是用来还原的 格式:zwdecode inputfile outputfile eg:zwdecode file_encrypt.asp file_back.asp 这个就是网上传说的zwdecode.exe,2年前收集的工具,现在在网上不太好找了。对htm等格式解码还不错,2年前使用记得没有问题,但是在打包上传前测试发现对asp解码好像有些问题,测试跟磁盘格式、操作系统均无关系。大家可以自己用用。 3、webfree_web.exe 很好的解密工具,直接打开加密后的文件,点击开始图标即可看到源码,另存文件后与源文件比较没有任何出入!建议使用! 该工具可以作为管理员检测加密后asp木马的有力工具。 4、SCRENC.CHM 微软官方使用帮助

ASP源码—EVAL加密解密在线工具 v1.0.zip

ASP源码—EVAL加密解密在线工具 v1.0.zip

ASP在线网址加密解密程序

超级加解密转换工具 某些情况下,我们不希望对方看出我们的真实网址,需要将网址进行加密,本站可以将您的网址转换为 http://%77%77%77%2e%6e%62%35%35%35%2e%63%6f%6d 型格式,此类型格式在IE下可正常使用。 网址解密:对用上述方法进行加密过的网址,还原出它的真实地址。

ASP 、PHP 代码加密的安全性逻辑思考

最终逻辑就是,你用卖给客户一个产品,但是因为启动钥匙(加密的解密密钥)已插在产品上,,启动钥匙是加密的解密密钥(产品外壳可用解密密钥来打开),所以客户无法看懂钥匙(无法解出解密密钥),产品能正常使用,所以客户打不开你也不希望客户能打开产品窥探其中的玄机,这时候,客户是基本无法打开产品外壳的。可见,最终需要保密的不是什么编码表,也不是密钥,而是编码过程程序,因为其中有自定义易位编码函数等,只要不知道加密原文,那么在没有编码程序的情况下,光凭密文是没办法解密的,即使你有编码表和密钥也不行。

业余编程 556

ASP代码加密方法

通过将ASP代码转换成其他形式,比如VB6工程,然后编译成DLL,利用VB6编译后不可反编译的特性,提供较高的加密安全性。加密ASP代码的目的是为了保护知识产权,防止未授权的访问和修改。:同样是一款编译型加密工具,它将ASP代码转换成VB6工程,然后编译成不可反编译的DLL,提供高安全性的加密。:这是一款编译型的ASP代码加密工具,能够将ASP代码转换成DLL,并且不可被还原,从而保护知识产权。:微软提供了一个脚本编码器,可以对ASP程序进行加密,将网页中的ASP代码转换成不可读的乱码。

云加速 409

网站安全】网站通常面临的几种安全威胁及应对方式

【产生种种安全威胁的根源】 1、网站存储及传输机制的缺陷。 网站是wireless的,如何确定某个用户的信息,如何保存当前用户的信息便成为了一个亟待解决的问题。于是cookie及session解决了。 针对于某一个访问网站的用户,假如网站无法从cookie里面获取到他的sessionid(请注意:cookie是随着http请求发出去的,附在http协议的报头,所以,假如有人用窥探器的

一名普通码农的菜地 2829

深入研究 UCenter API(转载)

目录: 开篇 通讯原理:UCenter API与子站之间的通讯原理和单点登陆原理 加密与解密:AuthCode详解 & AuthCode函数翻译过程中的注意点 网站搭建: 康盛旗下网站 & Asp.net 网站搭建 转载于:https://www.cnblogs.com/LigLeanHard/archive/2011/07/0...

weixin_34014277的博客 89

web漏洞扫描工具AWVS使用

AWVS AWVS简介:Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞,如交叉站点脚本,sql 注入等。在被黑客攻击前扫描购物车,表格、安全区域和其他Web应用程序。75% 的互联网攻击目标是基于Web的应用程序。因为他们时常接触机密数据并且被放置在防火墙之前。 AW...

weixin_33696106的博客 1304

asp代码转换(加密/解密)工具

你的asp文件,如果不想人直接搜索文件内容查找,可以试试。良精网站系统很多加密实际上就算这样做的(如:后台如不是localhost禁止登录) 把字符串转换成ASCII码,可以转换asp VB 字符串,jsp的内容 本文件为我自己使用的工具,是用VB写的,源代码就几行,没做任何修饰。 声明:1、请勿使用本工具破解他人加密的商业程序,由此产生的法律责任,由使用者自行负责。 2、在加密自己的程序之前,请先备份原程序内容

asp解密工具zwdecodeasp解密工具zwdecode

asp解密工具zwdecodeasp解密工具zwdecodeasp解密工具zwdecodeasp解密工具zwdecodeasp解密工具zwdecode

ASP代码加密_ASP加密代码

ASP代码一般是明文,很少有加密的,MS有个工具Script Encoder可以加密,这个东东可以微软官方网站免费下载,而且还有详细使用说明,但是经过它加密后的文件会有<%@ language = vbscript.encode %>,管理员看到这句话就知道这个asp文件被加密了。而且也有相关的解密文件。 本文提供一种简单的方法,可以加密ASP代码,主要思路是将代码做些运算,比如将全部代码移动一位,基本上就算加密了,主要的加解密函数如下: function UnEncode(temp) b.

博客园 1236

ASP Vbscript.Encode 解密

突破ASP代码中的多重加密 - [源代码里没有秘密]如果你看到下面这样一段代码,会不会打消对其作修改的意图?如果你有点经验,或者即使还没有什么经验,只要你还没慌乱,就足以看出这是用 VBScript.Encode 加密的代码。这种加密相当好解决,附件里有个decode.htm文件,只要打开这个文件,然后把上面代码中第二对之间的内容放进代码框里,点击“解密”,就能看到明码了。

e_zhiwen的专栏 9089

asp代码加密方法及破解

asp代码加密方法及破解昨天有个朋友叫问我他在网上下载了一套商城系统  本地测试的时候都还是好好的(功能全部可用),可是上传到空间里的时候,购物车这个功能却失效了叫我帮他看看  我看了下代码  发现有些文件里面的部分代码被加密  例如:   po="jq>Sfrvftu/TfswfsWbsjbcmft)#TFSWFS`OBNF#*胡tfswfsjq& gt;#ujbo.ob

lusizeng的专栏 9042

老掉牙的ASP文件的加密与解密

using System;using System.IO ;using System.Text ;namespace SuperData.ASP{ ///  /// ASP破解程序 /// 功能: /// 1.加密一个文件:EncodeFile(源文件,目标文件),EncodeFile(源目录,目标目录,文件名) /// 2.解密一个文件:DecodeFile(源文件,目标文件),DecodeFi

Satchmo的专栏 2371

超简单的ASP解密方法

---------------------------------------------------------未解密代码----------------------------------------------------------------------------- darkst="!!!!!黎!!Ejn!!!WbmjeFousz!!!!!黎!!WbmjeFousz!!!

oceanark的博客 1437
上一篇: [原]Console小技巧——Console版贪食蛇
下一篇: 初涉大数运算(下)
weixin_33889665
博客等级 码龄11年 4970粉丝 749原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值