《Labview軟件加密技術(shù)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Labview軟件加密技術(shù)(12頁珍藏版)》請(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)域的工程師自己辛辛苦苦做岀來的軟件輕輕松松被人盜版了,就像葉圣陶先生的小說 多了三五斗 中豐收了卻高興不起來的農(nóng)民一樣一一閉上眼睛就是天黑。所以,加密是一個(gè)軟件工程師保護(hù)自己辛勤勞動(dòng)成果的必備技術(shù)(開源軟件和有其它盈利模式的軟件除外)。從技術(shù)角度來說,天下沒有破不了的軟件,只是破解難度不一而已。從經(jīng)濟(jì)角度來看,只要破解的成本高于使用正版軟件的成本,那么破解的工作便不會(huì)有人去做了一一除非
2、是純技術(shù)興趣。當(dāng)前市面上比較流行的軟件保護(hù)技術(shù)有:序列號(hào)、軟件狗和綁定系統(tǒng)硬件信息三種:序列號(hào)保護(hù)法常見于網(wǎng)絡(luò)上的共享軟件,破解比較容易。 軟件狗是一個(gè)安裝在并口、串口等接口上的硬件電路,同時(shí)有一套使用于各種語言的接口軟件和工具軟件。復(fù)雜的軟硬件技術(shù)結(jié)合在一起使破解非常難,許多有商業(yè)價(jià)值的軟件一般都用軟件狗來保護(hù)。綁定系統(tǒng)硬件信息是用戶在安裝完軟件后,獲得一個(gè)與系統(tǒng)硬件信息 (CPU ID,硬盤序列號(hào)等)相關(guān)的代碼。開發(fā)商通過這個(gè)軟件生成一個(gè)激 活碼,用戶輸入激活碼后便可正常使用軟件了。相比之下,序列號(hào)屬于純軟件方法,破解比較容易;軟件狗是軟硬結(jié)合的方法,破解很難,但需 要購(gòu)買商業(yè)化的軟件狗,
3、費(fèi)用高;綁定系統(tǒng)硬件信息的方式,安全性不錯(cuò),而且不需要額外軟件 狗的費(fèi)用。圖1.1綁定系統(tǒng)硬件信息技術(shù)下面的章節(jié)中,本文將針對(duì)綁定系統(tǒng)硬件信息技術(shù),先講述如何獲得系統(tǒng)硬件信息,然后講述生成系統(tǒng)ID和激活碼的方法,最后給岀一個(gè)完整的范例演示程序。1NI 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)的訪問函數(shù),我們就可以獲得硬件的唯
4、一標(biāo)識(shí)號(hào)。Nl US6-5133: Dev3 - Measurement ft Airtomation Explorer立件(F)漏輯(E)查看工耳幫助(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)可以通過屬性節(jié)點(diǎn)查知,如圖2.2所示。2#關(guān)于數(shù)據(jù)采集卡,GPIB卡的硬件信息請(qǐng)參考范例程序GetDA
5、QSN.vi和GetGPIBSN.vi#獲取計(jì)算機(jī)硬件信息計(jì)算機(jī)的硬件信息通常包括:CPU ID,硬盤序列號(hào),MAC地址和BIOS信息。這些信息由于涉及硬件訪問,需要調(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 序框圖Encryption. Ivpruj/ 的電腦E&ryptiom I命roj/我的電腦圖 2.3 Get CPU ID其余硬件信息,請(qǐng)參考范例程序GetBI
6、OSInfo.vi ,GetHDDSN.vi和GetMAC.vi生成系統(tǒng)ID和激活碼當(dāng)獲取系統(tǒng)硬件信息后, 下一步就是生成系統(tǒng) ID和激活碼。從理論上來說,生成系統(tǒng)ID就是找 岀一個(gè)算法F1,使得SystemID = F1 (Hardwarelnfo );生成激活碼就是找岀一個(gè)算法F2,使得ActivationCode = F2 (SystemID)。激活的過程就是找岀一個(gè)算法F3,使得 SystemID = F3(ActivationCode),或者找岀兩個(gè)算法 F3+F4,使得 F3(SystemID) = F4(ActivationCode) 。最后激活過程的算法越復(fù)雜,其破解難度越高。
7、 在計(jì)算機(jī)行業(yè),已經(jīng)有許多成熟的加密解密算法了,大家可以根據(jù)具體需要選用。本文為了大家理解方便,將采用簡(jiǎn)單且直觀的加密解密算法。生成系統(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所示:通過該算法,由 NI硬件序列號(hào) EAB2F3生成的系統(tǒng)ID為EIHXDW,如
8、圖3.2所示。4圖3.2系統(tǒng)ID重萍數(shù)組維數(shù):Reopen or create_ylo “ 口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(xiǎn)盤,以USB-Key的形式給客戶。系統(tǒng)在運(yùn)行時(shí),USB-Key必須存在,否則系
9、統(tǒng)不能運(yùn)行。本文算法的設(shè)計(jì)思路是:先把SystemID轉(zhuǎn)換為二迚制流,然后以 code.act文件名(文件名可自取)保存到U盤,如圖3.3所示。當(dāng)然,可以增加一些使二迚制流復(fù)雜化的算法,比如交織,那 么在解算二迚制流的時(shí)候,就需要增加對(duì)應(yīng)的解算算法,比如解交織。SystemIDI g Hi t:ii劉無諸逞田Tlh)口FiUE. 巧CodeI -q&fciK| |G*Valifiystem?圖 3.4 Check Dongle完整加密程序演示本文所有的代碼包含在隨附的演示程序中Encryption.Ivproj,如圖3.5所示。圖 3.5 Encryption.lvproj67在運(yùn)行Demo_
10、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.眼見為實(shí),耳聽為虛,仸何事都要親自付以行動(dòng)才能真真正正的理解。在 LabVIEW 這樣一個(gè)非 常適合工程師和科學(xué)家的平臺(tái)上,多嘗試,多實(shí)踐是工程能力增長(zhǎng)的不二法門。8#拙作肯定存在不少問題,有仸何問題,可以給我 與大家一起分享一起討論。Email: jing.zhang.zju ,真心希望能#