仓酷云

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

[学习教程] ASP网页编程之磁盘ID在ASP源码防拷贝中的使用

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

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

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

x
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件
自从ASP(ActiveServerPages)问世以来,因其能够创立强健易于保护、与平台有关的使用体系,ASP手艺遭到了愈来愈
多收集程序员的喜好,利用ASP处置WEB开辟的人也愈来愈多。但ASP只是一种非编译型的、在服务端运转的剧本言语,接纳
明文(plaintext)体例来编写,即便接纳了ASP加密程序对ASP源码举行加密,也纷歧定能包管公布到运转情况中往的ASP应
用程序不被不法拷贝。关于高权限的办理员,能够十拿九稳从服务器端拷贝出ASP程序使用到其余非受权网站。如许给ASP
使用贸易化带来了必定的坚苦。怎样无效回护开辟出来的ASP程序,本文基于磁盘序列号发生的随机性,分离微软官方收费
供应的ASP剧本加密程序SCRENC.EXE,很好地办理了这个成绩。
磁盘序列号,简称磁盘ID,是对磁盘举行格局化时随机发生的磁盘标识信息,是一个卷序列号。统一呆板两次格局化随机
发生流动格局的序列号不异概率几近为零,DOS的前期版本和WINDOWS、WINNT均接纳了这类磁盘标识体例,因此磁盘序列
号常被使用用于贸易化软件举行加密利用。从WINDOWS9.X切换到MS-DOS体例,键进DIR命令后回车,屏幕呈现以后卷标序列
号信息,这个相似"0A48-1CD7"的序列号是一个16进制数。一些期限利用的软件,在利用刻日到了以后,会请求利用者在线
请求新的受权序列号(利用允许)。这类受权序列号相称一部分是接纳了静态磁盘序列号分离工夫发生的。安装终了以后
的软件,程序即便被不法拷贝到非初始安装情况中,也不克不及利用。
上述头脑用VC、VB及DELIPHI编程言语都简单完成,那末,在ASP中又怎样完成呢?VBScript作为一种强健的、平安的用户
言语,是受客户机体系限定的,不克不及处置客户机上API的挪用,也不克不及间接利用客户机上的文件和文件体系以外的控件。因
而本文彩用VBScript并分离ASP内置组件FileSystem来完成上述头脑。以下程序依据详细情形略加修正,能够使用于实践
的ASP使用体系。
作为解说实例,本文用到Access数据库平安机制,实践使用中,能够用别的格局的文件寄存的数据。为便于论述,我们先
建一个Access数据库ID.mdb(暗码为"kxj"),内建一个DriveInfo表,数据布局以下:
id(主动编号);
Serno(文本,12,磁盘序列号(10进制));
Wrimark(数字,1,写盘标记,)。

申明
Wrimark值为0代表正当用户未安装体系,值为1代表该体系已安装。当值为1且序列号与以后盘不符时,则判断为不法拷贝
用户。
初始化时先界说一个新纪录,各字段初始值分离为1,12345678,0。
在统一目次下,比方C:INTERPUBWWWROOT下,安排首页Default.asp,正当用户首页Success.asp,不法安装用户提醒页
Fail.htm及ID.mdb序列号寄存库。
各ASP文件的编写操纵以下:
1、用FrontPage(或NotePad),新建一个ASP文件Default.asp,录进以下程序代码:
<html>
<head>
<title>Sample</title>
</head>
<%dimconn,fs,f
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")
setfs=server.createObject("scripting.filesystemobject")
testDrive=Server.MapPath("/DRIVEINFO.ASP")
经由过程MapPath取得以后盘盘符
testDrive=Left(testDrive,3)
setf=fs.getdrive(testDrive)
挪用GetDrive办法,将驱动器付与一个变量
Mysql="SELECT*Fromdriveinfowhereid=1"
setrsCheck=Server.CreateObject("ADODB.Recordset")
rsCheck.openMysql,conn,1,1
FSER=trim(f.serialnumber)
取得以后盘序列号
StrSerno=trim(rsCheck.fields("SERNO"))
StrMark=rsCheck.fields("WRIMARK")
ifStrSerno<>FSERandStrMark=0then
如果初次安装,则置写盘标记为1
session("pass")=true
界说用户Session,并置为全局ASP文档标识变量
setrsMain=Server.CreateObject("ADODB.Recordset")
Mysql1="updatedriveinfoSETSERNO="&FSER&",WRIMARK=1"
rsMain.openMysql1,conn,1,2
response.write("<ahref=success.asp>SETUP
SUCCESSFUL!WELCOMETOACCESSTHEWEBSITE!</a>")
setrsMain=nothing
else
ifStrSerno=FSERthen
如果正当用户再次正当进进
session("pass")=true
response.write("<ahref=success.asp>YOUAREAUTHORIZEDBYTHEWEBSITEMANAGER,WELCOMETOACCESS!</a
>")
else
不法拷贝用户
session("pass")=false
response.write("<ahref=fail.htm>ITISILLEGALTOCOPYTHEWEBSITESASPDOCUMENT.YOUARENOTRIGRTTO
USETHEPROGRAM.</a>")
endif
endif
response.write("<br>")
response.write("VolumeSerialNumberindrive"&testDrive)
response.write(f.serialnumber)
response.write("<br>")
response.write("VolumehexSerialNumberindrive"&testDrive)
response.write(hex(f.serialnumber))
response.write("<br>")
作为演示,本程序把以后盘序列号列出来(16进制)
setf=nothing
setfs=nothing
%>
</html>

2、在正当用户能够会见的各个ASP文件头部,增加以下代码:
<%ifSession("pass")=falsethen
对Session变量举行判断,不法则跳出本ASP文件
response.redirect("fail.htm")
endif
%>

3、用ASP加密程序(比方微软公司的SCRENC.EXE,其余ASP加密程序也能够)对各个ASP文件举行加密。
在DOS形态下运转SCRENC-lvbscriptsource.aspdestination.asp,即把源文件source.asp天生了包括密文ASP剧本的新
文件destination.asp。SCRENC.EXE能够在微软公司站点(http://www.microsoft.com收费下载)。
以上程序代码在简体中文NT4.0、IIS3.0及简体中文PWIN9.8、PWS4.0下经由过程。

缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。
莫相离 该用户已被删除
沙发
 楼主| 发表于 2015-1-29 06:17:07 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
乐观 该用户已被删除
板凳
发表于 2015-2-5 23:05:57 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
小妖女 该用户已被删除
地板
发表于 2015-2-14 02:43:19 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
海妖 该用户已被删除
5#
发表于 2015-3-4 04:15:53 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
飘灵儿 该用户已被删除
6#
发表于 2015-3-11 16:26:45 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-19 02:11:55 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
谁可相欹 该用户已被删除
8#
发表于 2015-3-27 04:09:26 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-27 04:09:27 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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