沈園園
概述:依賴硬件采集碼①方式的共享軟件注冊是一個(gè)比較復(fù)雜的過程,卻相對安全,常規(guī)注冊模式比較依賴人工溝通再進(jìn)行注冊,繁瑣且易出錯(cuò)。在互聯(lián)網(wǎng)與云服務(wù)器發(fā)達(dá)的時(shí)代,有效利用互聯(lián)網(wǎng)和云服務(wù)器解決共享軟件注冊的難題,實(shí)現(xiàn)無人值守自動安全注冊是很有必要的。本文主要研究使用DELPHI開發(fā)共享軟件自動注冊系統(tǒng)的實(shí)現(xiàn)方法。
關(guān)鍵字:共享軟件注冊? delphi? 自動化軟件注冊? 硬件信息采集? 注冊碼? 加密
引言
我們在進(jìn)行DELPHI教學(xué)過程中遇到有學(xué)生請教共享軟件注冊的問題,展開討論當(dāng)前主流軟件注冊模式,并總結(jié)出了一種自動化且安全的共享軟件注冊機(jī)制,用于實(shí)際應(yīng)用于共享軟件注冊。本文主要研究硬件注冊碼模式下如何進(jìn)行自動化共享軟件注冊。
1.提出問題:
共享軟件注冊是為了保證共享軟件作者合法權(quán)益的一種軟件保護(hù)機(jī)制,通常自動化注冊使用的是軟件注冊碼模式,就是利用算法生成注冊碼,用戶只需要輸入注冊碼就可以注冊,這種模式可以將注冊碼放到共享軟件平臺銷售,但有個(gè)很嚴(yán)重的問題,軟件注冊碼模式不安全,就是大家常說的COPY副本,只要有人將一個(gè)注冊碼共享出來,所有人都可以使用了。
既然軟件注冊碼模式很容易被COPY副本,那么為什么還是有那么多軟件廠商使用軟件注冊碼模式呢?因?yàn)檐浖源a模式天生就可以的實(shí)現(xiàn)無人值守的自動注冊授權(quán),可以廠商自售,可以托管代售,可以渠道分銷。
那么硬件注冊碼模式是相對比較安全的,有沒有可能把硬件注冊碼模式變成一種自動注冊的方法呢?
2.分析問題:
硬件注冊碼模式的原理是采集用戶電腦的硬件信息,根據(jù)硬件信息生成注冊碼或授權(quán)文件,這樣保證了一個(gè)注冊碼只能被一臺電腦使用,相對比較安全。在這樣的過程里,注冊碼是無法預(yù)先生成的,而且授權(quán)過程需要用戶和授權(quán)者相互溝通。
用手機(jī)充值卡給手機(jī)充值給了我們一個(gè)很好的啟示,通過代入,把注冊碼當(dāng)作充值卡密碼,把硬件注冊碼模式的軟件授權(quán)過程當(dāng)作通信運(yùn)營商后臺的充值過程,這樣我們就可以利用硬件注冊碼模式的安全性,只需要把軟件的授權(quán)過程通過網(wǎng)絡(luò)和服務(wù)做成自動處理過程,然后批量生產(chǎn)注冊碼就可以實(shí)現(xiàn)共享軟件的自動安全注冊了。
下面將詳細(xì)論述用delphi實(shí)現(xiàn)硬件注冊碼模式的自動注冊過程。
一、硬件注冊碼模式自動注冊原理
傳統(tǒng)的硬件注冊碼是通過客戶電腦的硬件信息生成的,無法預(yù)先生成注冊碼,這樣就導(dǎo)致了無法將注冊碼托管到第三方平臺代售。那么要實(shí)現(xiàn)自動注冊,就必須把軟件授權(quán)的過程自動化,注冊碼只是作為服務(wù)器驗(yàn)證客戶是否購買授權(quán)的唯一憑據(jù),注冊碼正確則服務(wù)器和客戶端配合完成軟件的實(shí)際注冊授權(quán)。此過程類似手機(jī)充話費(fèi),充值密碼正確則進(jìn)行充值。
原理如下:用戶購買注冊碼->用戶獲得注冊碼->用戶輸入注冊碼->服務(wù)器驗(yàn)證注冊碼->通過進(jìn)行注冊授權(quán)過程并完成軟件注冊授權(quán),否則退出。
注冊過程:客戶端獲得硬件采集碼->發(fā)送硬件采集碼到服務(wù)器->根據(jù)硬件采集碼通過算法生成硬件校驗(yàn)碼后發(fā)回客戶端->客戶端接受硬件校驗(yàn)碼->客戶端保存并生成KRY文件->完成授權(quán)。
二、硬件注冊碼運(yùn)作流程
1.常規(guī)硬件注冊碼模式運(yùn)作流程
用戶安裝軟件后收集硬件采集碼,聯(lián)系開發(fā)者進(jìn)行購買支付,再把硬件采集碼發(fā)給作者由作者生成硬件注冊碼,用戶使用硬件注冊碼注冊軟件,然后完成注冊,可以使用軟件。
2.硬件注冊碼自動注冊流程
用戶安裝軟件以后打開購買鏈接,使用共享軟件注冊平臺購買支付,而后獲得自動注冊碼進(jìn)行軟件注冊。
從以上兩個(gè)過程可以看出使用硬件注冊碼自動注冊機(jī)制的優(yōu)勢。
三、自動注冊系統(tǒng)的關(guān)系
注冊碼管理程序用于生成注冊碼,它將批量生成的注冊碼發(fā)布到自動平臺,由用戶購買自動發(fā)送注冊碼,用戶進(jìn)行注冊客戶端,客戶端注冊完畢以后聯(lián)系注冊服務(wù)器進(jìn)行數(shù)據(jù)庫對比。
了解以上基本原理和流程后我們就可以使用DELPHI進(jìn)行實(shí)現(xiàn)了,我們能得出我們需要實(shí)現(xiàn)的三大模塊:
1.注冊碼管理程序:負(fù)責(zé)生成注冊碼并插入數(shù)據(jù)庫。
2.注冊服務(wù)器:負(fù)責(zé)驗(yàn)證客戶端發(fā)來的注冊碼是否正確,提供對客戶端進(jìn)行授權(quán)服務(wù),并將使用過的注冊碼刪除。
3.注冊客戶端:每次軟件啟動檢查軟件的是否被注冊授權(quán),已授權(quán)則顯示軟件主界面,如果軟件沒有被授權(quán)則顯示軟件注冊界面,用戶只需要輸入注冊碼與注冊服務(wù)器通信進(jìn)行軟件注冊授權(quán)。
四、注冊碼管理程序的開發(fā)
為了方便在網(wǎng)上生成發(fā)布注冊碼,我們使用Delphi XE2+Intraweb來開發(fā)B/S結(jié)構(gòu)的注冊碼管理程序。該程序的主要功能有:
1.軟件管理--->添加新的軟件,以便新增加軟件也能使用自動授權(quán)系統(tǒng)
2.注冊碼生成--->對指定的軟件利用隨機(jī)算法生成固定長度的注冊碼,可以批量生產(chǎn)注冊碼,注冊碼生成后保存到數(shù)據(jù)庫里
3.注冊碼生成歷史--->生成注冊碼時(shí)產(chǎn)生的記錄信息
4.注冊碼使用歷史--->注冊服務(wù)器生成的注冊碼使用歷史記錄,包含用戶郵件、用戶硬件采集碼、用戶硬件效驗(yàn)碼、注冊時(shí)間、注冊碼等信息
注冊表字段構(gòu)成:Rid:自動編碼;Rsoft:所屬軟件;Rnum:注冊碼;Rtime:生成時(shí)間;由于篇幅的限制,本文僅略去隨機(jī)生成注冊碼的算法。
五、注冊服務(wù)器程序的開發(fā)
注冊服務(wù)器和注冊碼管理程序要使用同一個(gè)數(shù)據(jù)庫,注冊服務(wù)器使用Delphi XE2+Indy來開發(fā)。使用了IdTCPServer來作為服務(wù)器通信組件。
注冊信息數(shù)據(jù)構(gòu)成:軟件標(biāo)識:DPS,用于服務(wù)器識別屬于哪個(gè)軟件;郵件:109693505@QQ.com,用于記錄用戶聯(lián)系郵件;注冊碼:ABCDEFG123,用于服務(wù)器檢測本次注冊是否授權(quán);硬件采集碼:J20DALLDALSLDL(硬盤序列號),用于服務(wù)器生成硬件效驗(yàn)碼。
確認(rèn)信息數(shù)據(jù)構(gòu)成:確認(rèn)代碼:OK或ERROR
通信過程:注冊客戶端連接注冊服務(wù)器,連接成功發(fā)送注冊信息,返回確認(rèn)信息。
注冊服務(wù)器示例接收數(shù)據(jù)具體運(yùn)行原理描述如下,由于篇幅的限制代碼略:
接收記錄->返回記錄->生成硬件效驗(yàn)碼(AES密鑰;AES明文)->接收數(shù)據(jù)->寫入記錄->從注冊碼表查詢指定軟件的注冊碼是否存在->如果找到,注冊碼可用則:生成硬件效驗(yàn)碼,判斷硬件采集碼長度是否大于32,如果超過32則截取前32位字符,當(dāng)作AES256的密鑰->客戶端通過同樣的操作,對比服務(wù)器發(fā)送的效驗(yàn)碼,判斷是否授權(quán)->用AES加密生成硬件效驗(yàn)碼->從注冊碼表刪除->返回注冊成功信息及硬件效驗(yàn)碼->沒找到相關(guān)軟件的注冊碼->返回錯(cuò)誤信息。
六、注冊客戶端程序的開發(fā)
此處采用硬盤序列號作為硬件采集碼
注冊客戶端主要有兩個(gè)任務(wù):1.與注冊服務(wù)器通信完成軟件注冊授權(quán);2.軟件每次啟動時(shí)檢查軟件是否被授權(quán)使用。
注冊客戶端的運(yùn)行流程:
客戶端啟動->采集硬盤序列號->通過硬件校驗(yàn)碼算法生成硬件校驗(yàn)碼->讀取授權(quán)文件比對硬件校驗(yàn)碼->TURE->校驗(yàn)通過正常運(yùn)行此軟件;FALSE->校驗(yàn)不通過調(diào)用顯示注冊窗口->輸入注冊碼服務(wù)器檢查注冊碼,如錯(cuò)誤三次則退出,如正確則將硬件注冊碼寫入授權(quán)文件->提示注冊成功并重新運(yùn)行程序關(guān)閉客戶端。檢測授權(quán)文件是否存在過程中,如果沒有存在則默認(rèn)顯示注冊界面,一般讀取授權(quán)文件第一行,硬件校驗(yàn)碼后再獲取硬盤序列號,這里用和服務(wù)器同樣的算法把硬件序列號生成硬件校驗(yàn)碼。
七、示例硬件效驗(yàn)碼算法描述(硬盤序列號)
通過AES256加密硬盤序列號得到硬件效驗(yàn)碼
加密算法:AES256;原字符串:硬盤序列號;加密密鑰:硬盤序列號(如果大于32位,截取前32位);硬件效驗(yàn)碼=加密后的字符串。
授權(quán)文件就算只存儲明文硬件效驗(yàn)碼也沒關(guān)系,授權(quán)文件被復(fù)制到其他電腦無法使用。
結(jié)束語
通過網(wǎng)絡(luò)和服務(wù)器對注冊碼驗(yàn)證后進(jìn)行共享軟件自動注冊授權(quán)是完全可行的,較簡單的實(shí)現(xiàn)了自動安全注冊:注冊碼只能使用一次,能夠保證一臺電腦一個(gè)授權(quán),并且在安全得到保證的同時(shí)又具備了軟件注冊碼的易用性,可以將注冊碼放到共享軟件注冊平臺托管銷售,或者放到卡類平臺自動銷售。完全實(shí)現(xiàn)了即安全又自動化的共享軟件注冊以及共享軟件注冊銷售的無人值守模式。