《Labview軟件加密技術(shù)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Labview軟件加密技術(shù)(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、LabVIEW開發(fā)技術(shù)叢書
GSD zone net
廠 NATIONAL INSTRUMENTS
目目錄錄
引言一獻(xiàn)給剛步入加密領(lǐng)域的工程師 1
獲取系統(tǒng)的硬件信息 2-3
生成系統(tǒng)ID和激活碼 4-6
后記
引言一獻(xiàn)給剛步入加密領(lǐng)域的工程師
自己辛辛苦苦做岀來(lái)的軟件輕輕松松被人盜版了, 就像葉圣陶先生的小說(shuō)
2、《多了三五斗》 中豐收
了卻高興不起來(lái)的農(nóng)民一樣一一閉上眼睛就是天黑。 所以,加密是一個(gè)軟件工程師保護(hù)自己辛勤
勞動(dòng)成果的必備技術(shù)(開源軟件和有其它盈利模式的軟件除外 )。
從技術(shù)角度來(lái)說(shuō),天下沒(méi)有破不了的軟件, 只是破解難度不一而已。從經(jīng)濟(jì)角度來(lái)看, 只要破解
的成本高于使用正版軟件的成本,那么破解的工作便不會(huì)有人去做了一一除非是純技術(shù)興趣。
當(dāng)前市面上比較流行的軟件保護(hù)技術(shù)有: 序列號(hào)、軟件狗和綁定系統(tǒng)硬件信息三種: 序列號(hào)保護(hù)
法常見(jiàn)于網(wǎng)絡(luò)上的共享軟件, 破解比較容易。 軟件狗是一個(gè)安裝在并口、 串口等接口上的硬件電
路,同時(shí)有一套使用于各種語(yǔ)言的接口軟件和工具軟件。 復(fù)雜
3、的軟硬件技術(shù)結(jié)合在一起使破解非
常難,許多有商業(yè)價(jià)值的軟件一般都用軟件狗來(lái)保護(hù)。 綁定系統(tǒng)硬件信息是用戶在安裝完軟件后,
獲得一個(gè)與系統(tǒng)硬件信息 (CPU ID,硬盤序列號(hào)等)相關(guān)的代碼。開發(fā)商通過(guò)這個(gè)軟件生成一個(gè)激 活碼,用戶輸入激活碼后便可正常使用軟件了。
相比之下,序列號(hào)屬于純軟件方法,破解比較容易;軟件狗是軟硬結(jié)合的方法,破解很難,但需 要購(gòu)買商業(yè)化的軟件狗,費(fèi)用高;綁定系統(tǒng)硬件信息的方式,安全性不錯(cuò),而且不需要額外軟件 狗的費(fèi)用。
圖1.1綁定系統(tǒng)硬件信息技術(shù)
下面的章節(jié)中,本文將針對(duì)綁定系統(tǒng)硬件信息技術(shù), 先講述如何獲得系統(tǒng)硬件信息, 然后講述生
成系統(tǒng)ID和激
4、活碼的方法,最后給岀一個(gè)完整的范例演示程序。
1
NI USE-SI 33:
圖2.2用屬性節(jié)點(diǎn)獲取 NI硬件序列號(hào)
獲取系統(tǒng)的硬件信息
到哪里去找硬件信息
CPU、硬盤、網(wǎng)卡、GPIB卡、數(shù)據(jù)采集
一套基于計(jì)算機(jī)的自動(dòng)化系統(tǒng)必定包含許多硬件,比如 卡、模塊化儀器等等。
為了方便管理,廠家會(huì)給這些硬件一個(gè)唯一的標(biāo)識(shí)號(hào) (id),或者序列號(hào)(SN),如圖2.1所示。如
果廠家也提供相關(guān)的訪問(wèn)函數(shù),我們就可以獲得硬件的唯一標(biāo)識(shí)號(hào)。
Nl US6-5133: "Dev3" - Measurement ft Airtomation Explorer
立件(F)漏輯(E)查
5、看㈣工耳⑴幫助(H)
-Q我的系統(tǒng)
+由數(shù)據(jù)鄰居
|弓.尊設(shè)備和接口
4■成 NI Motion Devices 血MI-DAQmx設(shè)備
+ PXi PKl System (Unidentified)
+ J Serial & Parallel
+ 9歷史數(shù)據(jù)
十“扌換算
出6軟件
+ ■ IVI Driver?
+購(gòu)遠(yuǎn)程系統(tǒng)
圖2.1硬件序列號(hào)
獲取NI硬件序列號(hào)
NI公司硬件設(shè)備的序列號(hào)可以通過(guò)屬性節(jié)點(diǎn)查知,如圖 2.2所示。
2
#
關(guān)于數(shù)據(jù)采集卡, GPIB卡的硬件信息請(qǐng)參考范例程序 GetDAQSN.vi和GetGPIBSN.vi
6、#
獲取計(jì)算機(jī)硬件信息
計(jì)算機(jī)的硬件信息通常包括: CPU ID,硬盤序列號(hào), MAC地址和BIOS信息。這些信息由于涉
及硬件訪問(wèn),需要調(diào)用許多底層函數(shù),具體技術(shù)細(xì)節(jié)請(qǐng)參考 Skyremember在CSDN發(fā)表的文章
《獲取網(wǎng)卡 MAC、硬盤序列號(hào)、 CPU ID、BIOS編號(hào)》。本文將獲取硬件信息的函數(shù)做成了
GetHWInfo.dll,方便在 LabVIEW 下調(diào)用,如圖 2.3所示。
A GetCPUID.vi 序框圖
< Encr.r.匚!□_ I_X_|
文件(日 編輯(號(hào) 查看項(xiàng)盹廠畫可
1 ( £ncryp. + ?
■
叵
X
丈件(巳翳紙)
7、查看他項(xiàng)目遲)按作
CPU
ID
GetHWInfo. dll : getCPUInFomatlor CPU ID
A
圖 7F| |右“應(yīng)用程序麺
CPU ID
IoooTxfa-efeb-fbff-oooo-kbd
>
Encryption. Ivpruj/^ 的電腦
<
E&ryptiom I命roj/我的電腦<
圖 2.3 Get CPU ID
其余硬件信息,請(qǐng)參考范例程序 GetBIOSInfo.vi ,GetHDDSN.vi和GetMAC.vi
生成系統(tǒng)ID和激活碼
當(dāng)獲取系統(tǒng)硬件信息后, 下一步就是生成系統(tǒng) ID和激活碼。從理論上來(lái)說(shuō)
8、,生成系統(tǒng)ID就是找 岀一個(gè)算法F1,使得SystemID = F1 (Hardwarelnfo );生成激活碼就是找岀一個(gè)算法 F2,使得
ActivationCode = F2 (SystemID)。激活的過(guò)程就是找岀一個(gè)算法 F3,使得 SystemID = F3
(ActivationCode),或者找岀兩個(gè)算法 F3+F4,使得 F3(SystemID) = F4(ActivationCode) 。
最后激活過(guò)程的算法越復(fù)雜, 其破解難度越高。 在計(jì)算機(jī)行業(yè),已經(jīng)有許多成熟的加密解密算法
了,大家可以根據(jù)具體需要選用。
本文為了大家理解方便,將采用簡(jiǎn)單且直觀的加密解密算法。
9、
生成系統(tǒng)ID
在數(shù)學(xué)中,有很多可逆的算法,比如乘和除,傅里葉變換和反傅里葉變換,交織和節(jié)交織,調(diào)制 和解調(diào)等等。選用可逆算法可以降低激活算法的設(shè)計(jì)難度,當(dāng)然,如果加密算法功底深厚的話, 可以選用不可逆的算法。
由于硬件信息大多數(shù)由大寫字母和數(shù)字組成,本文設(shè)計(jì)的可逆算法思路是:以十迚制數(shù) 69為對(duì)
稱點(diǎn),找岀硬件信息字符的鏡像字符,比如 0的鏡像字符為 Z,由此形成的字符串作為系統(tǒng) ID,
如圖3.1所示:
通過(guò)該算法,由 NI硬件序列號(hào) EAB2F3生成的系統(tǒng)ID為EIHXDW,如圖3.2所示。
4
圖3.2系統(tǒng)ID
重萍數(shù)組維數(shù)
:?
Reopen or
10、create_yl
o “ 口
koduptf
圖3.3 USB-Key形式的激活碼
做好了 USB-Key 形式的激活碼后,就可以把這個(gè) USB-Key 交付給客戶了
檢測(cè) USB-Key
本文檢測(cè)USB-Key 的設(shè)計(jì)思路是:首先需要把二迚制流讀岀,然后恢復(fù)岀 前系統(tǒng)硬件的信息做比較,如所示。
SystemID,并與當(dāng)
當(dāng)然,我們還可以把集中算法混合在一起,構(gòu)成更加復(fù)雜的算法。
生成USB-Key激活碼
給客戶激活碼的方式有很多種,本文推薦將激活碼以二迚制流的方式寫入 U盤,以USB-Key
的形式給客戶。系統(tǒng)在運(yùn)行時(shí), USB-Key必須存在,否則系統(tǒng)不能運(yùn)行。
11、
本文算法的設(shè)計(jì)思路是:先把 SystemID轉(zhuǎn)換為二迚制流,然后以 code.act文件名(文件名可自
?。┍4娴経盤,如圖3.3所示。當(dāng)然,可以增加一些使二迚制流復(fù)雜化的算法,比如交織,那 么在解算二迚制流的時(shí)候,就需要增加對(duì)應(yīng)的解算算法,比如解交織。
SystemID
I g ? Hi t:ii~
劉無(wú)諸逞田
Tlh)
口
Fi
UE. 巧
Code
I ^-q&fciK~| |
G*
Valifiystem?
圖 3.4 Check Dongle
完整加密程序演示
本文所有的代碼包含在隨附的演示程序中 Encryption.Ivproj ,如圖3.
12、5所示。
圖 3.5 Encryption.lvproj
6
7
在運(yùn)行Demo_GenerateUSBKey.vi 程序時(shí),需要先根據(jù)需求調(diào)用相應(yīng)的硬件信息函數(shù),然后制
作 USB-Key。制作好 USB-Key 后,再運(yùn)行 Demo_CheckDongle.vi 即可。
#
后記
“I hear and I forget; I see and I remember; I do and I understand.
眼見(jiàn)為實(shí),耳聽為虛,仸何事都要親自付以行動(dòng)才能真真正正的理解。在 LabVIEW 這樣一個(gè)非 常適合工程師和科學(xué)家的平臺(tái)上,多嘗試,多實(shí)踐是工程能力增長(zhǎng)的不二法門。
8
#
拙作肯定存在不少問(wèn)題,有仸何問(wèn)題,可以給我 與大家一起分享一起討論。
Email: jing.zhang.zju@ ,真心希望能
#