服務(wù)熱線
153 8323 9821
對ASP腳本源代碼進(jìn)行加密
-----------------------
目前,ASP(Acive Server Pages)技術(shù)已風(fēng)靡全球,在Internet上幾乎處處都能看到它的身影。它給開發(fā)商提供了基于腳本的直觀、快速、高效的應(yīng)用開發(fā)手段,極大地提高了開發(fā)的效果。應(yīng)用這種技術(shù),不需要進(jìn)行復(fù)雜的編程,就可以開發(fā)出專業(yè)的動態(tài)Web網(wǎng)站。
凡事有利必有弊,由于由于ASP腳本是采用明文(plain text)方式來編寫出來的,所以開發(fā)人員辛辛苦苦開發(fā)出來的ASP應(yīng)用程序,一旦發(fā)布到運行環(huán)境中去或交付用戶使用后,就很難保證這些“源代碼”不會被流傳出去。我們?nèi)绾文鼙Wo(hù)我們開發(fā)出的ASP源代碼呢?
在這里我們采用微軟提供的一個加密腳本的程序:SCRENC.EXE,這個程序可以在筆者網(wǎng)站(http://www.zhengwei.net)上下載。這是一個運行在DOS PROMAPT的命令工具,它使腳本設(shè)計者可以對最終的腳本進(jìn)行編碼,從而使 Web 主機(jī)和 Web 客戶不能查看或修改它們的源代碼。不過有一點需要注意的是加密后的程序要求用戶的游覽器必須使用Internet Explorer 5.0以上的版本。加完密后的腳本變成類似于如下的內(nèi)容:
腳本加密程序只對腳本代碼進(jìn)行加密,文件的其他內(nèi)容不動且以普通文本形式顯示。要使用腳本加密程序,以通常方法對文本進(jìn)行開發(fā)和調(diào)試,然后使用該實用程序?qū)ψ罱K的腳本進(jìn)行加密。腳本加密程序在源代碼中使用標(biāo)記來標(biāo)識加密開始的位置。
對于 Visual Basic Scripting Edition (VBScript),如下示例顯示了如何使用編碼標(biāo)記來顯示普通文本的版權(quán)信息:
在 JScript 中,加密標(biāo)記如下:
當(dāng)腳本加密程序被調(diào)用時,在開始標(biāo)記前,腳本塊內(nèi)的內(nèi)容保持不變,而其他內(nèi)容被加密。因此,如果開始標(biāo)記被省略,則腳本編碼塊內(nèi)的所有內(nèi)容均被加密,但如果開始標(biāo)記在腳本加密塊的最后,則不對任何內(nèi)容進(jìn)行加密。
在編碼發(fā)生后。您應(yīng)該知道 標(biāo)記或標(biāo)記內(nèi)包含有效的 HTML 和內(nèi)嵌腳本塊。使用該格式的應(yīng)用程序包括 Microsoft? Internet Information Services (IIS)。識別文件擴(kuò)展名有 .asp、.asa 和 .cdx。
HTML。該格式由一個包含有效的 HTML 和內(nèi)嵌腳本塊的文本文件組成。使用該腳本格式編寫的應(yīng)用程序包括 Microsoft FrontPage?, Microsoft? Visual InterDev? 和所有虛擬的 Web 設(shè)計器及瀏覽器。識別文件擴(kuò)展名有 .htm 和 .html。
普通文本。該格式由只包含腳本而無兩端標(biāo)記的文本文件組成。使用該腳本格式編寫的應(yīng)用程序包括 Windows? Scripting Host (WSH) 和 Microsoft? Outlook?。識別文件擴(kuò)展名有 .js 和 .vbs,經(jīng)加密后,分別變?yōu)?.jse 和 .vbe。
腳本小程序。該格式由一個在標(biāo)記中包含有效腳本小程序的文本文件組成。識別文件擴(kuò)展名有 .sct 和 .wsh。
示例
如下是使用腳本加密程序的一個例子以及對其結(jié)果的簡單解釋:
對輸入文件 test.html 進(jìn)行加密,生成輸出文件 encode.html,使用:
screnc test.html encode.html
對輸入文件 test.htm 進(jìn)行加密,并用編碼后的輸出文件覆蓋輸入文件,使用:
screnc /f test.htm
對當(dāng)前目錄中的所有 .ASP 文件進(jìn)行加密,并把編碼后的輸出文件放在c:\temp中,使用:
screnc ×.asp c:\temp
對當(dāng)前目錄中的所有 .ASP 文件進(jìn)行加密,并把編碼后的輸出文件放在c:\temp中,使用:
screnc /e asp ×.× c:\temp
對輸入文件 test.htm 進(jìn)行加密,并生成輸出文件 encode.htm,確保沒有指定語言屬性的腳本塊使用 VBScript,使用:
screnc /l vbscript test.htm encode.htm
對當(dāng)前目錄中的所有腳本小程序文件進(jìn)行加密,并不經(jīng)信息顯示就用編碼后的文件覆蓋這些文件,使用:
screnc /s /f ×.sct
要點:經(jīng)過編碼后,如果您改動加密后的文本,哪怕只改動一個字。腳本的完整性就會丟失,從而不能再使用。
============================
對經(jīng)MS Script Encode加密的ASP進(jìn)行解密
------------------------------
微軟的腳本編碼器( SCRENC.EXE )是微軟提供的可以對ASP腳本源碼進(jìn)行編碼加密的一個工具。應(yīng)用開發(fā)商通過使用這個工具,達(dá)到 Web 主機(jī)和 Web 客戶不能查看或修改它們的源代碼。有關(guān)SCRENC.EXE的詳細(xì)內(nèi)容請參看筆者的文章《對ASP腳本源代碼進(jìn)行加密》。在某種情況下如果我們忘了做源碼備份,就無法再進(jìn)行加工、修改了。怎么能把加過密的代碼再恢復(fù)回來呢?
在這里,我們提供一個解密軟件(ZWDECODE.EXE 需要這個軟件者請查閱http://www.zhengwei.net),使用這個工具可以對經(jīng)過MS Script Encode加密的ASP文件進(jìn)行解密,把源代碼還原。
例如可以把類似于如下的代碼:
?。糞CRIPT language=JScript.Encode>
#@~^QwIAAA==@#@&0; mDkW P7nDb0zZKD.n1YAMGhk+Dvb`@#@&P,kW`UC7kLlDGDcl22gl:n~{'P3~dYMc×iNz&R @×^#~@
?。?SCRIPT>
還原成:
<SCRIPT language=JScript>
function verifyCorrectBrowser(){
if(navigator.appName == "Microsoft Internet Explorer")
if (navigator.appVersion.indexOf ("5.") >= 0)
return(true);
else
return(false);
}
function getAppropriatePage(){
var str1 = "Had this been an actual Web site, a page compatible with ";
var str2 = "browsers other than ";
var str3 = "Microsoft Internet Explorer 5.0 ";
var str4 = "would have been loaded.";
if (verifyCorrectBrowser())
document.write(str1 + str3 + str4);
else
document.write(str1 + str2 + str3 + str4);
}
?。?SCRIPT>
ZWDECODE.EXE是一個運行在DOS PROMAPT的命令工具,以下是該程序的語法解釋:
描述
對經(jīng)過MS Script Encode加密的ASP文件進(jìn)行解密,使其恢復(fù)成源代碼。
語法
ZWDECODE inputfile outputfile
inputfile 必需的。要被解密的文件名稱,包括相對于當(dāng)前目錄的任何需要的路徑信息。
outputfile 必需的。要生成的輸出文件的名稱,包括相對于當(dāng)前目錄的任何需要的路徑信息。
注意:
本程序只能用于恢復(fù)自己丟失源代碼的程序,不可用于其它用途。為了安全起見,在解密前要做好備份。
我也來發(fā)言!各位網(wǎng)友慢慢看!
用Script Encoder加密你的ASP頁面
一直以來,ASP技術(shù)受到了越來越多朋友的喜愛,使用ASP從事WEB開發(fā)的人也
越來越多。ASP一個非常明顯的特征是頁面在服務(wù)器端經(jīng)過處理之后發(fā)送到瀏覽器
中的內(nèi)容為標(biāo)準(zhǔn)的HTML格式,這樣有效的保護(hù)了頁面程序的原代碼不被客戶端輕易
獲取。但是另一個普遍存在的問題是:
由于ASP頁面是純文本的形式存放,在服務(wù)器端可以輕易看到全部編程邏輯。這樣
給ASP應(yīng)用商業(yè)化帶來了一定的困難。解決的方法一般是使用組件技術(shù)將編程邏輯
封裝入DLL之中,但問題是:
1、如果每段代碼都組件化似乎工作量太大了,也沒有必要。
2、還有很多網(wǎng)友根本就不會編寫組件。
在這樣的背景下,微軟推出了Script Encoder1.0。一個命令行的腳本加密工具。
Script Encoder的特點是:
它只加密頁面中嵌入的腳本代碼,其他部分,如HTML的TAG仍然保持原樣不變。
處理后的文件中被加密過的部分為只讀內(nèi)容,對加密部分的任何修改都將導(dǎo)致整個
加密后的文件不能使用。Script Encoder加密過的ASP文件還將使Script Debugger
之類的腳本調(diào)試工具失效。
Script Encoder是可以對Client Side Script加密,也可以對Server Side
Script加密。
二、使用簡介
Script Encoder是個命令行工具,執(zhí)行文件為SCRENC.EXE。它的操作非常簡單:
SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile
/s 可選。讓Script Encoder“安靜”的工作,即執(zhí)行過程
沒有屏幕輸出。(
/f 可選。指定輸出文件是否覆蓋同名輸入文件。忽略,將
不執(zhí)行覆蓋。
/xl 可選。是否在.asp文件的頂部添加@Language指令。忽略,
將添加。
/l defLanguage 可選。指定Script Encoder加密中選擇的缺省腳本語言。
文件中不包含這種腳本語言特性的腳本將被Script Encoder
忽略。對于HTML和腳本文件來說,JScript為內(nèi)置缺省腳
本語言。對于ASP文件,VBScript為缺省腳本語言。同時
對于擴(kuò)展名為.vbs或.js的文件Script Encoder有自適應(yīng)
能力。
/e defExtension 可選。指定待加密文件的文件擴(kuò)展名。缺省狀態(tài)下,Script
Encoder能識別asa,asp,cdx,htm,html,js,sct和vbs文件。
三、常見問題和注意事項
1、在JOY ASP中幾次看到有網(wǎng)友使用Script Encoder時出現(xiàn)如下錯誤:
"Script Encoder object <"Scrip