亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >磁盤ID在ASP源碼防拷貝中的應用 創(chuàng)建者:webmaster 更新時間:2005-05-18 13:29

    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">自從ASP(Active Server Pages)問世以來,因其可以創(chuàng)建健壯易于維護、與平臺無關(guān)的應用系統(tǒng),ASP技術(shù)受到了越來越多網(wǎng)絡程序員的喜愛,使用ASP從事WEB開發(fā)的人也越來越多。但ASP只是一種非編譯型的、在服務端運行的腳本語言,采用明文(plain text)方式來編寫,即使采用了ASP加密程序?qū)SP源碼進行加密,也不一定能保證發(fā)布到運行環(huán)境中去的ASP應用程序不被非法拷貝。對于高權(quán)限的管理員,可以輕而易舉從服務器端拷貝出ASP程序應用到別的非授權(quán)網(wǎng)站。這樣給ASP應用商業(yè)化帶來了一定的困難。如何有效保護開發(fā)出來的ASP程序,本文基于磁盤序列號產(chǎn)生的隨機性,結(jié)合微軟官方免費提供的ASP腳本加密程序SCRENC.EXE,很好地解決了這個問題。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">磁盤序列號,簡稱磁盤ID,是對磁盤進行格式化時隨機產(chǎn)生的磁盤標識信息,是一個卷序列號。同一機器兩次格式化隨機產(chǎn)生固定格式的序列號相同幾率幾乎為零, DOS的后期版本和WINDOWS、WINNT均采用了這種磁盤標識方式,因而磁盤序列號常被運用用于商業(yè)化軟件進行加密使用。從WINDOWS9.X切換到MS-DOS方式,鍵入DIR命令后回車,屏幕出現(xiàn)當前卷標序列號信息,這個類似"0A48-1CD7"的序列號是一個16進制數(shù)。一些限期使用的軟件,在使用期限到了之后,會要求使用者在線申請新的授權(quán)序列號(使用許可)。這種授權(quán)序列號相當一部分是采用了靜態(tài)磁盤序列號結(jié)合時間產(chǎn)生的。安裝完畢之后的軟件,程序即使被非法拷貝到非初始安裝環(huán)境中,也不能使用。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">上述思想用VC、VB及DELIPHI編程語言都容易實現(xiàn),那么,在ASP中又如何實現(xiàn)呢?VBScript作為一種健壯的、安全的用戶語言,是受客戶機系統(tǒng)限制的,不能處理客戶機上API的調(diào)用,也不能直接操縱客戶機上的文件和文件系統(tǒng)之外的控件。因而本文采用VBScript并結(jié)合ASP內(nèi)置組件FileSystem來實現(xiàn)上述思想。 以下程序根據(jù)具體情況略加修改,可以應用于實際的ASP應用系統(tǒng)。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">作為講解實例,本文用到Access數(shù)據(jù)庫安全機制,實際應用中,可以用其它格式的文件存放的數(shù)據(jù)。為便于闡述,我們先建一個Access數(shù)據(jù)庫ID.mdb(密碼為"kxj"),內(nèi)建一個DriveInfo表,數(shù)據(jù)結(jié)構(gòu)如下:


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">id(自動編號) ;

    Serno(文本,12,磁盤序列號(10進制)) ;

    Wrimark(數(shù)字,1,寫盤標志,)。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">

    說明


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">Wrimark 值為0代表合法用戶未安裝系統(tǒng),值為1代表該系統(tǒng)已安裝。當值為1且序列號與當前盤不符時,則判定為非法拷貝用戶。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">初始化時先定義一個新記錄,各字段初始值分別為1,12345678,0。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">在同一目錄下,例如C:\INTERPUB\WWWROOT下,放置首頁Default.asp,合法用戶首頁Success.asp,非法安裝用戶提示頁Fail.htm及ID.mdb序列號存放庫。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">各ASP文件的編寫操作如下:


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">1、用FrontPage(或NotePad),新建一個ASP文件Default.asp,錄入以下程序代碼:


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><html>

    <head>

    <title>Sample</title>

    </head>

    <% dim conn,fs,f

    Set conn = Server.CreateObject("ADODB.Connection")

    conn.open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")

    set fs=server.createObject("scripting.filesystemobject")

    testDrive=Server.MapPath("/DRIVEINFO.ASP")

    '通過MapPath獲得當前盤盤符

    testDrive=Left(testDrive,3)

    set f=fs.getdrive(testDrive)

    '調(diào)用GetDrive方法,將驅(qū)動器賦予一個變量

    Mysql="SELECT * From driveinfo where id=1"

    set rsCheck = Server.CreateObject("ADODB.Recordset")

    rsCheck.open Mysql,conn,1,1

    FSER=trim(f.serialnumber)

    '獲得當前盤序列號

    StrSerno=trim(rsCheck.fields("SERNO"))

    StrMark=rsCheck.fields("WRIMARK")

    if StrSerno<>FSER and StrMark=0 then

    '若是首次安裝,則置寫盤標志為1

    session("pass")=true

    '定義用戶Session,并置為全局ASP文檔標識變量

    set rsMain = Server.CreateObject("ADODB.Recordset")

    Mysql1="update driveinfo SET SERNO="&FSER&", WRIMARK=1"

    rsMain.open Mysql1,conn,1,2

    response.write("<a href='success.asp'>SETUP

    SUCCESSFUL!WELCOME TO ACCESS THE WEBSITE!</a>")

    set rsMain=nothing

    else

    if StrSerno=FSER then

    '若是合法用戶再次合法進入

    session("pass")=true

    response.write("<a href='success.asp'>YOU ARE AUTHORIZED BY THE WEBSITE MANAGER,WELCOME TO ACCESS !</a>")

    else

    '非法拷貝用戶

    session("pass")=false

    response.write("<a href='fail.htm'>IT IS ILLEGAL TO COPY THE WEBSITE'S ASP DOCUMENT.YOU ARE NOT RIGRT TO USE THE PROGRAM.</a>")

    end if

    end if

    response.write("<br>")

    response.write("Volume Serial Number in drive "&testDrive)

    response.write(f.serialnumber)

    response.write("<br>")

    response.write("Volume hex Serial Number in drive "&testDrive)

    response.write(hex(f.serialnumber))

    response.write("<br>")

    '作為演示,本程序把當前盤序列號列出來(16進制)

    set f=nothing

    set fs=nothing

    %>

    </html>


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">

    2、在合法用戶可以訪問的各個ASP文件頭部,添加如下代碼:


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><% if Session("pass")=false then

    '對Session變量進行判定,非法則跳出本ASP文件

    response.redirect("fail.htm")

    end if

    %>


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">

    3、用ASP加密程序(例如微軟公司的SCRENC.EXE,別的ASP加密程序也可以)對各個ASP文件進行加密。


    style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">在DOS狀態(tài)下運行SCRENC -l vbscript source.asp destination.asp,即把源文件source.asp生成了包含密文ASP腳本的新文件destination.asp。SCRENC.EXE可以在微軟公司站點(http://www.microsoft.com免費下載)。

    以上程序代碼在簡體中文NT4.0、IIS3.0及簡體中文PWIN9.8、PWS4.0下通過。

    相關(guān)文章
    本頁查看次數(shù):