<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于PIC16C54單片機的智能軟件狗設計

基于PIC16C54單片機的智能軟件狗設計

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹一種基于PIC16C5493C46串行EEPROM智能型軟件狗的硬件和軟件設計。本軟件狗利用微控制器的特點(diǎn),利用簡(jiǎn)化的DES算法進(jìn)行加密,增加了軟件狗的破解難度。關(guān)鍵詞: 軟件狗 數據加密 隨著(zhù)各種計算機應用軟件、工具軟件的涌現,由此引起的計算機知識產(chǎn)權案件層出不窮,引出了計算機安全保密技術(shù)在計算機軟件版權保護中應用的新課題。實(shí)現計算機版權保護的技術(shù)方法很多,概括起來(lái)可以分為三大類(lèi):軟件法、硬件法、軟硬件結合法。軟硬件結合法結合了軟件法和硬件法的特點(diǎn)。從軟件設計上增加反跟蹤的難度,從硬件上增加仿制和狀態(tài)分析難度。硬件部分主要完成狀態(tài)加密和檢查。軟件狗是一種插在PC打印口上的用于應用軟件版權保護的設備。商品化的軟件狗產(chǎn)品向用戶(hù)提供軟件狗硬件、應用程序定制工具、應用軟件和軟件狗的接口程序庫。從硬件結構方面講,軟件狗的發(fā)展已經(jīng)歷了五代。第一代簡(jiǎn)單地將打印機的控制或數據線(xiàn)與狀態(tài)線(xiàn)通過(guò)電阻或二極管連接;第二代增加了一些門(mén)電路,將某些控制線(xiàn)或數據線(xiàn)經(jīng)過(guò)簡(jiǎn)單的邏輯運算后輸出到狀態(tài)口線(xiàn)上;第三代使用GAL或EPROM器件;第四代使用串行EEPROM器件;第五代在第四代的基礎上增加了微處理器,因此稱(chēng)為智能型軟件狗。本文介紹的軟件狗使用軟硬件結合法,屬于第五代軟件狗。圖1 電路原理圖1 硬件原理 由于軟件狗插在PC打印口上,因此軟件狗的硬件設計除了滿(mǎn)足其軟件保護功能外,還必須著(zhù)力解決如下三個(gè)問(wèn)題:由于PC的打印口沒(méi)有提供電源線(xiàn),要使和串行EEPROM芯片工作,就必須想辦法為它們提供電源,并且必須采用低功耗設計;不能影響PC對打印機的正常操作;硬件成本必須足夠低。 PIC系列單片機是使用Harvard總線(xiàn)和RISC結構的單片機,具有功耗低、高速、開(kāi)發(fā)容易、價(jià)位低、體積小等特點(diǎn)。93C46B是采用CMOS工藝制造的64%26;#215;16bit結構8引腳的串行可用電擦除可編程只讀存儲器,同樣具有功耗低、價(jià)位低、體積小等特點(diǎn)。這兩種器件能夠滿(mǎn)足對硬件設計的低功耗和低成本的要求。 圖1為本軟件狗的電源原理圖。包括PIC16C54及93C46構成的單片機系統、復位電路電源電路三部分。圖1中,R5、C3組成系統上電復位電路;D2、D3、C2組成系統電源電路;D1、R1、R2、C1組成PIC16C54的外部RC振蕩電路;PIC16C54通過(guò)其A口控制93C46串行EEPROM;T0CLKI引腳用于監測當前PC是否控制打印機;RB7引腳用于監測PC當前是否與本軟件狗聯(lián)系,并選擇單片機當前工作的時(shí)鐘頻率;RB4、RB5、RB6是軟件狗向PC方向發(fā)送數據的接口信號線(xiàn);RB0~RB3、RB5是PC向軟件狗方向發(fā)送數據的接口信號線(xiàn);R6是工作于外部RC振蕩電路方式時(shí)推薦的間接接地電阻,有利于系統抗干擾和振蕩電路的穩定性;R3、R4用于防止打印機和單片機之間信號發(fā)生沖突。 PC打印口中數據線(xiàn)和控制線(xiàn)為輸出線(xiàn),控制線(xiàn)的驅動(dòng)能力較強。為了不影響打印機的工作,只能選擇一根不常用并且不會(huì )讓打印機誤動(dòng)作的控制線(xiàn)(初始化線(xiàn)IP)為軟件狗提供電源。但單片機對串行EEPROM編程時(shí)系統需要的功率比較大,因此在軟件狗工作時(shí)又用了一根數據線(xiàn)(D7)提供更大的電源電流。本軟件狗工作于三種狀態(tài):當IP和D7都為低電平時(shí),軟件狗不工作;當IP為高電平時(shí),軟件狗工作于低功耗狀態(tài):當IP和D7都為高電平時(shí),軟件狗工作于正常狀態(tài),此時(shí)可以對軟件狗進(jìn)行任何操作。由于IP信號只有在PC系統啟動(dòng)時(shí)為高電平,一般情況下驅動(dòng)程序和應用軟件很少對此信號線(xiàn)進(jìn)行操作,平時(shí)此信號線(xiàn)一般保持低電平。因此軟件狗控制軟件可以將此信號線(xiàn)置為高電平使單片機可靠復位,并進(jìn)行一定的初始化工作。此時(shí),RC振蕩電路的R2為220kΩ,系統工作于<200kHz頻率時(shí),軟件狗的單片機軟件在此狀態(tài)下不會(huì )對串行EEPROM編程,因此軟件狗的耗散功率達到最低。當D7信號也被置高時(shí),此時(shí),RC振蕩電路的R2|R1<4.7kΩ,系統工作于>4MHz頻率時(shí),軟件狗進(jìn)入正常工作狀態(tài)。 當PC對打印機進(jìn)行操作時(shí),軟件狗不應該往并口輸出任何信息。由于PC對打印機的操作總是以將并口的選通線(xiàn)置為高電平開(kāi)始,因此可以通過(guò)對并口選通線(xiàn)的上升沿監測,判斷PC是否對打印機開(kāi)始操作。另外,還通過(guò)監測IP信號和D7信號來(lái)判斷軟件狗是否可以開(kāi)始工作。只有在并口選通信號為低電平,IP和D7都為高時(shí),軟件狗才允許向并口信號線(xiàn)輸出。圖3 軟件狗向PC發(fā)送數據的時(shí)序圖2 軟件設計 軟件狗的軟件設計有兩部分:軟件狗的單片機程序和PC程序。單片機程序包括對93C46的操作、與PC通訊接口、數據編碼、工作狀態(tài)控制等功能。PC程序包括本軟件狗開(kāi)發(fā)用的測試工具程序、用戶(hù)定制軟件狗的工具程序、軟件狗隨用戶(hù)程序發(fā)行時(shí)的動(dòng)態(tài)鏈接庫程序。測試工具程序用于測試軟件狗對串行EEPROM的讀寫(xiě)操作、軟件狗與PC間的通訊測試;用戶(hù)定制軟件狗的工具程序用于對軟件狗設置密碼的初始化工作;動(dòng)態(tài)鏈接庫程序為用戶(hù)的應用程序提供編程接口。單片機程序使用MTLAB集成環(huán)境的MTASM開(kāi)發(fā),PC軟件使用VC5.0開(kāi)發(fā)。本文只介紹單片機軟件。 2.1 軟件狗與PC的通訊 軟件狗與PC之間的數據通信方法是自行設計的。PC向軟件狗送數據時(shí)使用并口的選擇輸入(SELECTIN,這里稱(chēng)之為PCRDY)線(xiàn),數據線(xiàn)的D3~D0。單片機在PCRDY信號的下降沿讀取數據,每一個(gè)字節分兩次發(fā)送,先發(fā)低四位,后發(fā)高四位。PC向軟件狗方向發(fā)送數據的時(shí)序如圖2所示。軟件狗向PC方向發(fā)送數據時(shí)使用并口的選擇輸入(SELECT IN,這里稱(chēng)之為PCRDY)線(xiàn)、應答(ACK,這里稱(chēng)之為DO)線(xiàn)、選擇(SLC,這里稱(chēng)之為BUSY)線(xiàn)。軟件狗向PC發(fā)送數據時(shí)按先發(fā)低位后發(fā)高位的順序串行地將數據發(fā)給PC,一個(gè)字節分8次發(fā)完。軟件狗向PC方向發(fā)送數據的時(shí)序如圖3所示。 PC與軟件狗之間的數據通訊遵循“命令一應答”規則,PC發(fā)命令,單片機處理完命令后發(fā)應答數據。雙方可以根據命令及其應答的意義解析數據幀的結構,以校驗通訊的正確性。命令與應答數據幀的第一個(gè)字節的高四位總是命令或應答代碼,低四位總是此命令或應答所帶參數的個(gè)數。各命令與應答數據幀的結構定義如表1所示。表1 各命令與應答數據幀的結構定義 功 能代 碼參數個(gè)數參 數連接命令08軟件狗的序列號連接應答00無(wú)擦除命令10無(wú)擦除應答10無(wú)讀ROM命令21ROM的起始地址讀ROM應答28返回讀出的數據寫(xiě)ROM命令31~16第一個(gè)字節為ROM的起始地址,后面N-1個(gè)字節為寫(xiě)入的數據寫(xiě)ROM應答30無(wú)校驗編碼命令49第一個(gè)字節為校驗功能號,后面8個(gè)字節為待編碼的數據校驗編碼應答49第一字節為校驗功能號,后面8個(gè)字節為編碼后的數據2.2 加密算法 考慮到軟件狗使用時(shí)不能對應用程序的執行速度產(chǎn)生較大影響,對DES加密算法分析后進(jìn)行了簡(jiǎn)化,用來(lái)對數據進(jìn)行加密。DES加密算法的核心思想是使加密后的數據沒(méi)有顯著(zhù)的變化規律,一個(gè)方面使不同被加密數據加密后,原始數據一位的變化會(huì )引起后密后數據多處無(wú)明顯規律變化,即變化擴展原則;另一方面使用密鑰,密鑰的作用是將被加密數據與之進(jìn)行運算以改變原始數據。綜合這兩個(gè)方面的原則,采取了將被加密數據“換位一與密鑰異或”8次的加密方法。這種方法實(shí)現比較簡(jiǎn)單,且將被加密數據與原來(lái)數據比較,不同的被加密數據間的加密結果比較,很難發(fā)現其中規律,加密效果不錯。 整個(gè)系統的加密原理是PC利用系統時(shí)間產(chǎn)生一個(gè)隨機數,將此隨機數發(fā)送給軟件狗,軟件狗對此進(jìn)行加密返回加密結果,PC自己也對此進(jìn)行加密將自己的加密結果與軟件狗的加密結果進(jìn)行比較。另外,每一個(gè)軟件狗都有一個(gè)序列號,連接時(shí)必須提供正確的序列號才能連接進(jìn)行其它工作。同時(shí)序列號也用于區分不同的軟件狗,使得多個(gè)軟件狗可以插在同一個(gè)并口上正常工作。每個(gè)軟件狗可以設置16個(gè)不同的密鑰,用戶(hù)可以為應用程序的不同功能模塊設置不同的密鑰。 2.3 程序流程 PIC16C54單片機的程序流程如圖4所法。設置OPTION:初始化單片機的工作模式;設置PORTB、清除RAM:位于單片機空閑循環(huán)體內,設置PORTB的輸出方向,軟件狗在空閑時(shí)對打印口無(wú)影響;接收命令:接收PC發(fā)出的數據,按照軟件狗與PC的通信規則進(jìn)行解釋?zhuān)惶幚砻睿阂粋€(gè)CASE結構的程序體,根據命令含義執行不同功能;返回命令處理結果;按照軟件狗與PC的通信規則向PC返回應答信息。 筆者使用WKPE、DOG、DOGGIE等打狗軟件對本軟件狗進(jìn)行了破解實(shí)驗,這幾種軟件無(wú)法破解本軟件狗。另外本軟件狗在若干種品牌機和兼容機上進(jìn)行了測試,都可以正常工作并且對Windows打印作業(yè)無(wú)影響。實(shí)驗結果表明,本軟件狗有比較好的安全性、通用性和穩定性。

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>