單片機加密
㈠ stc的單片機怎麼用id號來加密
STC讀內部ID號工具組(自解壓文件:103K), 原文件是一個自解壓文件,這里改為RAR,只有5K,也幫你貼到這里來了。(注意:該工具組好像只能使用在有物理串口的單片機使用。例如STC15F系列因串口需IO模擬,應該是運行後無效的)
解開後有一個EXE文件和一個HEX文件。將HEX文件 ISP寫入單片機,運行ShowID.exe, 設置好串口號,波特率隨便設,例如9600,按【讀取信息】鍵即可讀取ID等信息。
(該工具組主要是方便檢驗唯一ID的,實際應用請看官方數據表裡有C語言的範例。圖中為一塊STC12C5A08S2為例,請看其顯示的結果與使用編程讀取以上15位數據通過串口發送,用最新的程序匠人的「串口獵人」V26接收顯示是一樣的!:) )
不同的晶元的ID都是唯一的,上圖是兩個不同批次的STC12C5410AD的ID。該ID使用7位字元,可以描述的總數為: 256^7=72,057,594,037,927,936個(天文數字)!應該不會重復了吧。。呵呵。。。
㈡ 單片機開發板的單片機加密方法
科研成果保護是每一個科研人員最關心的事情,目的不使自己的辛苦勞動付注東流加密方法有軟體加密,硬體加密,軟硬體綜合加密, 時間加密,錯誤引導加密,專利保護等措施有矛就有盾,有盾就有矛,有矛有盾,才促進矛盾質量水平的提高加密只講盾,也希望網友提供更新的加密思路,現先講一個軟體加密:利用MCS-51 中A5 指令加密,(本人85 年發現的,名軟體陷阱),其實世界上所有資料,包括英文資料都沒有講這條指令,其實這是很好的加密指令A5 功能是二位元組空操作指令加密方法在A5 後加一個二位元組或三位元組操作碼,因為所有反匯編軟體都不會反匯編A5 指令,造成正常程序反匯編亂套,執行程序無問題仿製者就不能改變你的源程序,你應在程序區寫上你的大名單位開發時間及仿製必究的說法,以備獲得法律保護我曾抓到過一位獲省優產品仿製者,我說你們為什麼把我的名字也寫到你的產品中?
硬體加密:8031/8052 單片機就是8031/8052掩模產品中的不合格產品,內部有ROM(本人85年發現的),可以把8031/8052 當8751/8752 來用,再擴展外部程序器,然後調用8031 內部子程序當然你所選的同批8031 晶元的首地址及所需用的中斷入口均應轉到外部程序區。 擦除晶元標識
把8X52 單片機,標成8X51 單片機,並用到後128B的RAM 等方法,把AT90S8252 當AT89C52,初始化後程序段中並用到EEPROM 內容,你再去聯想吧!
用激光(或絲印)打上其它標識如有的單片機引腳兼容,有的又不是同一種單片機,可張冠李戴,只能意會了,這要求你知識面廣一點
用最新出廠編號的單片機,如2000 年後的AT89C 就難解密,或新的單片機品種,如AVR 單片機
DIP 封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定製ASIC,或軟封裝,用不需外晶振的單片機工作(如AVR 單片機中的AT90S1200),使用更復雜的單片機,FPGA+AVR+SRAM=AT40K系列
硬體加密與軟體加密只是為敘說方便而分開來講, 其實它們是分不開的,互相支撐,互相依存的軟體加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以.......
利用單片機未公開,未被利用的標志位或單元,作為軟體標志位,如8031/8051 有一個用戶標志
位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二位元組或三位元組操作碼,在無程序的空單元也加上程序機器碼,最好要加巧妙一點
用大容量晶元,用市場上模擬器不能模擬的晶元,如內部程序為64KB 或大於64KB 的器件,
如:AVR 單片機中ATmega103 的Flash 程序存儲器為128KB
AT89S8252/AT89S53 中有EEPROM,關鍵數據存放在EEPROM 中,或程序初始化時把密碼寫
到EEPROM 中,程序執行時再查密碼正確與否,然後....... 當然不能告說人家這是什麼器件,盡量不讓人家讀懂程序,在這里說謊,騙人是正當防衛。
用真真假假, 假假真真,把幾種不同品種的單片機放在同一設備中,如主晶元用AVR(說是MCS51),鍵盤顯示用AT89C2051(說是GAL),I/O 口擴展驅動用PIC(說是AT90S1200)等,當然要求你知識面廣一點如果你用高級語言C 編寫程序就簡單了,因為C 語言程序移植方便有些國家的產品能做到三年保修,三年保不壞,三年後保壞,或三年後保有故障,可能用什麼技術?你去想吧例:每次開機或關機,EEPROM 某單元加1,也可二個三個單元連接起來計數,達到某值停止工作,硬體用軟體代替,軟體用硬體代替用大規模CPLD 可編程器件,關於單片機加密,講到這里,就算拋磚引玉,下面請各位高手把玉亮出來吧。
對付購買你設備,想不付錢或想少付錢的人,你可採用先供限時(次)使用版軟體,錢付清下載正式版軟體(監控)。
㈢ 51單片機的加密如何使用原理是是什麼
AT89cxx加密原理
單片機解密簡單就是擦除單片機片內的加密鎖定位。由於AT89C系列單片機擦除操作時序設計上的不合理。使在擦除片內程序之前首先擦除加密鎖定位成為可能。AT89C系列單片機擦除操作的時序為:擦除開始---->擦除操作硬體初始化(10微秒)---- >擦除加密鎖定位(50----200微秒)--->擦除片內程序存儲器內的數據(10毫秒)----->擦除結束。如果用程序監控擦除過程,一旦加密鎖定位被擦除就終止擦除操作,停止進一步擦除片內程序存儲器,加過密的單片機就變成沒加密的單片機了。片內程序可通過匯流排被讀出。對於 AT89C系列單片機有兩種不可破解的加密方法。
一、永久性地破壞單片機的加密位的加密方法。簡稱OTP加密模式。
二、永久性地破壞單片機的數據匯流排的加密方法。簡稱燒匯流排加密模式。
一、OTP加密模式原理
這種編程加密演算法燒壞加密鎖定位(把晶元內的矽片擊穿),面不破壞其它部分,不佔用單片機任何資源。加密鎖定位被燒壞後不再具有擦除特性, 89C51/52/55有3個加密位進一步增加了加密的可靠性。一旦用OTP模式加密後,單片機片內的加密位和程序存儲器內的數據就不能被再次擦除, 89C51/52/55單片機就好象變成了一次性編程的OTP型單片機一樣。如果用戶程序長度大於89C51單片機片內存儲器的容量,也可使用OPT模式做加密,具體方法如下:
1、按常規擴展一片大容量程序存儲器,如27C512(64K)。
2、把關鍵的程序部分安排在程序的前4K中。
3、把整個程序寫入27C512,再把27C512的前4K填充為0。
4、把程序的前4K固化到AT89C51中,用OPT模式做加密。
5、把單片機的EA腳接高電平。
這樣程序的前4K在單片機內部運行,後60K在片外運行。盜版者無法讀出程序的前4K程序,即使知道後60K也無濟於事。
二、煉匯流排加密模式原理
因為單片機片內的程序代碼最終都要通過數據匯流排讀出,如果指導單片機的數據匯流排的其中一條線永久性地破壞,解密者即使擦除了加密位,也無法讀出片內的程序的正確代碼。89C1051/2051的數據匯流排為P1口燒匯流排模式燒壞89C2051的P1.0埠,原程序代碼為02H、01H、00H。讀出的數據則為03H,01H,00H。其中最低位始終為1,讀出的程序代碼顯然為錯碼。這種加密模式用於加密89C1051/2051單片機。缺點是佔用單片機的資源。開發設計人員在設計單片機硬體系統時只要預留出口線P1.0不用,以後就可用燒匯流排模式對單片機加密。
㈣ 單片機AT89C51在燒程序時按了加密,有解密方法嗎
一般不會的加了密也能讀,只是讀出的東西全是 FF,不是裡面執行的程序加了密晶元做一次晶元擦除操作晶元就應該空了,可以再次燒寫,如果出現問題可以考慮換一個單片機或編程器試試
㈤ 單片機原理的加密方法
科研成果保護是每一個科研人員最關心的事情,加密方法有軟體加密,硬體加密,軟硬體綜合加密,時間加密,錯誤引導加密,專利保護等措施有矛就有盾,有盾就有矛,有矛有盾,才促進矛盾質量水平的提高加密只講盾,也希望網友提供更新的加密思路,現先講一個軟體加密:利用MCS-51 中A5 指令加密,其實世界上所有資料,包括英文資料都沒有講這條指令,其實這是很好的加密指令A5 功能是二位元組空操作指令加密方法在A5 後加一個二位元組或三位元組操作碼,因為所有反匯編軟體都不會反匯編A5 指令,造成正常程序反匯編亂套,執行程序無問題仿製者就不能改變你的源程序。
硬體加密:8031/8052單片機就是8031/8052掩模產品中的不合格產品,內部有ROM,可以把8031/8052 當8751/8752 來用,再擴展外部程序器,然後調用8031 內部子程序當然你所選的同批8031晶元的首地址及所需用的中斷入口均應轉到外部程序區。
硬體加密
用高電壓或激光燒斷某條引腳,使其讀不到內部程序,用高電壓會造成一些器件損壞重要RAM 數據採用電池(大電容,街機採用的辦法)保護,拔出晶元數據失去機器不能起動,或能初始化,但不能運行。
用真假方法加密
擦除晶元標識
把8X52單片機,標成8X51 單片機,並用到後128B的RAM 等方法,把AT90S8252 當AT89C52,初始化後程序段中並用到EEPROM 內容,你再去聯想吧!
用激光(或絲印)打上其它標識如有的單片機引腳兼容,有的又不是同一種單片機,可張冠李戴,只能意會了,這要求你知識面廣一點 。
用最新出廠編號的單片機,如2000 年後的AT89C 就難解密,或新的單片機品種,如AVR 單片機。
DIP 封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定製ASIC,或軟封裝,用不需外晶振的單片機工作(如AVR 單片機中的AT90S1200),使用更復雜的單片機,FPGA+AVR+SRAM=AT40K系列。
硬體加密與軟體加密只是為敘說方便而分開來講,其實它們是分不開的,互相支撐,互相依存的軟體加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以………….....
利用單片機未公開,未被利用的標志位或單元,作為軟體標志位,如8031/8051有一個用戶標志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二位元組或三位元組操作碼,在無程序的空單元也加上程序機器碼,最好要加巧妙一點用大容量晶元,用市場上模擬器不能模擬的晶元,如內部程序為64KB 或大於64KB 的器件,如:AVR 單片機中ATmega103 的Flash 程序存儲器為128KBAT89S8252/AT89S53中有EEPROM,關鍵數據存放在EEPROM 中,或程序初始化時把密碼寫到EEPROM 中,程序執行時再查密碼正確與否,盡量不讓人家讀懂程序。關於單片機加密,講到這里,就算拋磚引玉。
㈥ 怎樣對寫進單片機裡面的程序進行加密
對單片機裡面程序加密必須靠硬體實現,也就是單片機本身來實現。使用編程器燒錄時,有選項,可以選擇加密級別。其實最穩妥的加密就是防止被讀出。
㈦ 51單片機怎麼加密 在源代碼會不會有用來加密的代碼
額,首先,這個加密的原理要清楚。還有編譯的原理要清楚。。。
第一,程序為什麼會被讀出來?因為編程器編程總要校驗一下比較安全,保證編程可靠。所以,編程器一般都可以讀程序。但是,這個被山寨哥們看上了就是大大的方便了。於是,加密位就被設計出來了。加密一下,編程器就讀不出程序了。這個在編程時編程器設置項了可以選擇。具體發生的事情是:編程器對器件的加密位編程。於是器件的「讀」功能就被限制。只有全擦除可以連加密位一起還原。如此就達到了代碼保護的作用。由於這個過程不涉及程序本身,屬於對器件的「設置」。並不是靠程序執行來起作用的。所以靠編譯器來加密?還是算了吧。。。
第二,編譯是把由高級語言寫成的源代碼,翻譯成「天書」的過程。這個涉及到的,僅僅是一個翻譯的過程。就像說話,跟美國人說是要說「鳥語」的。但是意思是一個樣的。要是這個再能加密,那麼抱歉,美國人也不都是中情局的,到時候會看不懂「密電」的。
㈧ PIC單片機該怎麼加密
PIC晶元加密在配置位中設置的,這個要根據晶元資料去設置的,如果是pickit 3 programmer,在右上角configuratation中根據晶元資料進行配置加密,加密後的晶元無法再使用工具讀取程序。
㈨ 單片機加密狗是什麼技術
加密狗 加密狗是由彩虹天地公司首創,後來發展成如今的一個軟體保護的通俗行業名詞,"加密狗"是一種插在計算機並行口上的軟硬體結合的加密產品(新型加密狗也有usb口的)。一般都有幾十或幾百位元組的非易失性存儲空間可供讀寫,現在較新的狗內部還包含了單片機。軟體開發者可以通過介面函數和軟體狗進行數據交換(即對軟體狗進行讀寫),來檢查軟體狗是否插在介面上;或者直接用軟體狗附帶的工具加密自己EXE文件(俗稱"包殼")。這樣,軟體開發者可以在軟體中設置多處軟體鎖,利用軟體狗做為鑰匙來打開這些鎖;如果沒插軟體狗或軟體狗不對應,軟體將不能正常執行。
加密狗通過在軟體執行過程中和加密狗交換數據來實現加密的.加密狗內置單片機電路(也稱CPU),使得加密狗具有判斷、分析的處理能力,增強了主動的反解密能力。這種加密產品稱它為"智能型"加密狗.加密狗內置的單片機里包含有專用於加密的演算法軟體,該軟體被寫入單片機後,就不能再被讀出。這樣,就保證了加密狗硬體不能被復制。同時,加密演算法是不可預知、不可逆的。加密演算法可以把一個數字或字元變換成一個整數,如DogConvert(1)=17345、DogConvert(A)=43565。
加密狗是為軟體開發商提供的一種智能型的軟體保護工具,它包含一個安裝在計算機並行口或 USB 口上的硬體,及一套適用於各種語言的介面軟體和工具軟體。加密狗基於硬體保護技術,其目的是通過對軟體與數據的保護防止知識產權被非法使用。
加密狗的工作原理:
加密狗通過在軟體執行過程中和加密狗交換數據來實現加密的.加密狗內置單片機電路(也稱CPU),使得加密狗具有判斷、分析的處理能力,增強了主動的反解密能力。這種加密產品稱它為"智能型"加密狗.加密狗內置的單片機里包含有專用於加密的演算法軟體,該軟體被寫入單片機後,就不能再被讀出。這樣,就保證了加密狗硬體不能被復制。同時,加密演算法是不可預知、不可逆的。加密演算法可以把一個數字或字元變換成一個整數,如DogConvert(1)=17345、DogConvert(A)=43565。下面,我們舉個例子說明單片機演算法的使用。 比如一段程序中有這樣一句:A=Fx(3)。程序要根據常量3來得到變數A的值。於是,我們就可以把原程序這樣改寫:A=Fx(DogConvert(1)-12342)。那麼原程序中就不會出現常量3,而取之以DogConvert(1)-12342。這樣,只有軟體編寫者才知道實際調用的常量是3。而如果沒有加密狗,DogConvert函數就不能返回正確結果,結果算式A=Fx(DogConvert(1)-12342)結果也肯定不會正確。這種使盜版用戶得不到軟體使用價值的加密方式,要比一發現非法使用就警告、中止的加密方式更溫和、更隱蔽、更令解密者難以琢磨。此外,加密狗還有讀寫函數可以用作對加密狗內部的存儲器的讀寫。於是我們可以把上算式中的12342也寫到狗的存儲器中去,令A的值完全取決於DogConvert()和DogRead()函數的結果,令解密難上加難。不過,一般說來,加密狗單片機的演算法難度要低於一些公開的加密演算法,如DES等,因為解密者在觸及加密狗的演算法之前要面對許多難關
[編輯本段]目前最新的硬體加密原理
隨著解密技術的發展,單片機加密狗由於其演算法簡單,存儲空間小,容易被硬復制等原因,正逐漸被市場所淘汰。以北京彩虹天地信息技術股份有限公司為首的國內加密狗廠商研發出穩定性更好、存儲空間更大(最大為64K)、有效防止硬克隆的第四代加密狗——「智能卡」加密狗以其獨創的「代碼移植」原理,已經被國內大型商業軟體開發商如金蝶、用友、CAXA、廣聯達、神機妙算、魯班……所採用。
以世界上第一款智能卡加密鎖——宏狗為例,簡單介紹一下「代碼移植」原理。
「代碼移植」加密原理為一種全新的、可信的軟體保護模型,工作原理為:軟體中部分代碼經過編譯,「移植」到加密鎖硬體內部,軟體中沒有該段代碼的副本。
在這套軟體保護方案中,PC端應用軟體的關鍵的代碼和數據「消失」了,被安全地移植到精銳IV型加密鎖的硬體中保護起來。在需要使用時,應用軟體可以通過功能調用引擎來指令精銳IV運行硬體中的關鍵代碼和數據並返回結果,從而依然可以完成整個軟體全部的功能。由於這些代碼和數據在PC端沒有副本存在,因此解密者無從猜測演算法或竊取數據,從而極大程度上保證了整個軟體系統的安全性。簡言之,精銳IV提供了一套可信的解決方案,從理論上保證軟體加密的安全。
加密狗技術的運用案例
1、廣聯達造價軟體
2、清華斯維爾造價軟體
3、神機妙算造價軟體
4、魯班造價軟體
使用加密狗進行加密的一些策略
現在的解密技術排除法律和道德因素,就從學術角度來說是門科學。它與加密技術一樣是相輔相成不斷提高。
以下就針對使用加密狗(加密鎖)進行硬體保護談談幾點心得:
針對於使用加密狗的解密有什麼方法?
1、硬體復制
復制硬體,即解密者復制Sentinel Superpro相同的加密鎖。由於加密鎖採用了彩虹公司專用的ASIC晶元技術,因此復制該加密鎖非常困難,且代價太大。
2、監聽
解密者利用並口監聽程序,進行解密,其工作機制是:
監聽程序,記錄應用程序對並口發的查詢串和加密鎖發回的響應串。當移去加密鎖時,如果程序再對並口發查詢串確認身份時,監聽程序返回所記錄的響應串。程序認為加密鎖仍然在並口上,是合法用戶繼續運行,應用程序也就被解密了。
3、 列印機共享器
將加密鎖插在列印機共享器上,多台計算機共同使用列印機共享器上的一把加密鎖。(後面簡述對抗策略)
4、 DEBUG
解密者DEBUG等反編譯程序,修改程序源代碼或跳過查詢比較。應用程序也就被解密了。
對於以上的幾種解密方法加密者可以考慮使用以下幾種加密策略:
1、針對上述監聽和DEBUG問題解密方法,本人推薦充分利用加密狗開發商的API函數調用的加密策略:
a、 針對並口監聽程序
1)對加密鎖進行演算法查詢
Ø 正確的查詢響應驗證
用戶生成大量查詢響應對,如200對。在程序運行過程中對激活的加密演算法單元隨機的發送在200對之中的一對「345AB56E」―――「63749128」。查詢串「345AB56E」,哪么演算法單元返回的下確的響應串應該是「63749128」,若是,則程序認為加密鎖在並口上,是合法用戶,繼續運行,反之終止程序。
Ø 隨機非激活演算法驗證
我們對非激活的加密鎖演算法單元發隨機生成的查詢串,如:「7AB2341」,非激活演算法單元只要是有查詢就會有響應串。因此返回響應串「7AB2341」,在程序中判斷響應串與查詢串是否相同,如果相同,則證明我們的加密鎖仍然在口上。繼續運行程序。
Ø 隨機激活演算法驗證
假設監聽程序了解了上面的機制。即對非激活的加密演算法我們發什麼查詢串則返回相同的響應串。哪么我也有對策。對激活的加密演算法單元發隨機生成的查詢串,如:「345AB56E」由於是激活演算法響應串肯定與查詢串肯定不等。所以假如返回響應串「7253ABCD」,在程序中判斷響應串與查詢串是否不同,如果不同,則證明我們的加密鎖仍然在並口上,繼續運行程序。
上面三種加密策略在程序同時使用,相符相承,相互補充。即使監聽程序記錄下來我們的部分查詢響應。
2) 分時查詢
用戶把查詢響應對分組,如120對分為4組。每30對一組。頭三個月使用第一組,第二個月三個月使用第二組以此類推,監聽程序就算記錄了頭三個月。第二個月三個月以後程序仍然無法使用。
也可以再生成100對「臨時委員」,每次運行隨意抽出1對與以上分組結合使用。使記錄程序在三個月內也無法記錄完全。程序也無法使用。
3) 隨機讀寫存儲單元
為了防監聽程序。我們的策略是:程序在啟動時,我們利用隨機函數隨機生成的一個數,假設是「98768964」。我們在指定的18#單元寫入這個數。哪么我們在程序運行中,每調用一個功能程序前讀取18#單元,數判定是否是我們寫入的數「98768964」。因為每次寫入的數是隨機生成的,所以監聽程序記錄不到當次啟動時寫入的隨機數,它返回的數肯定是一個不匹配的數。我們就可以就此判定是否是合法用戶。Sentinel Superpro加密鎖可以重復寫10萬次以上。也就是說每天寫三次也可以使用一百年。
2、 針對列印共享器的加密策略
為了防列印共享器。我們的策略是:程序在啟動時,我們利用隨機函數隨要生成的一個數,假設是「7762523A」。我們在指定的34#單元寫入這個數。哪么在程序運行中,每調用一個功能程序前讀取34#單元,以判定是否是我們寫入的數「7762523A」。以此判定是否是合法用戶。因為每次寫入的數隨機生成的,同時使用列印共享器的其他非法用戶的程序一進入也會寫入一個不同的隨機數。那麼第一個用戶的程序在校驗是否是第一個用戶寫入的數時,就會被認為是非法的用戶。所以在一個階段也只是一個程序使用。(例如RAINBOW公司開的Sentinel Superpro加密鎖可以重復10萬次以上。也就是說每天寫三次也就可以使用一百年。)
3、 針對DEBUG跟蹤的加密鎖的安全策略
1)分散法
針對DEBUG跟蹤。在調用每個重要功能模塊前,我們建議要對加密鎖進行查詢,校驗身份。如果只在程序開始部分校驗身份,DEBUG跟蹤程序部分可以輕易的跳過校驗部分,而一些不良用戶可以在驗證後可以將加密鎖拔下用在其它計算機。
2)延時法
針對某一具體查詢校驗,都有三步驟:
Ø 查詢得到響應串
Ø 比較響應串和查詢串是否匹配
Ø 執行相應的步驟
我們建議以上三個步驟要延時執行。最好鞀三步驟相互遠離些,甚至放到不同的子程序或函數中。例如:我們執行「查詢得到響應串」 後,相隔50執行「比較響應串和查詢串是否匹配」。假如程序需要調用一個函數。哪么我們就在這個函數里執行「執行相應的步驟」。這樣程序更難於被破解。
3)整體法
將響應串作為程序中數據使用。
例如:我們有返回值「87611123」,而我們程序需要「123」這個數。我們可以讓「87611123」減去「8761000」得到「123」。這樣以來任何對加密程序的修改都會使程序紊亂。
4)迷惑法
一般情況下我們的程序執行相應的驗證步驟。驗證是非法用戶就會退出。這樣很容易被發現代碼特徵。我們知道是非法用戶後繼續執行一些無用的操作使程序紊亂。以迷惑解密者。
以上為現如今軟體開發商使用硬體加密狗(加密鎖)進行軟體保護時可以使用的幾種切實可行的幾種加密策略。
㈩ 單片機程序加密,防止別人上傳程序,盜用技術。
單片機系統產品的加密和解密技術永遠是一個矛盾的統一體。然而,為了更好的保護好自己的單片機技術成果和知識產權,加大解密成本,研究新型加密技術仍是保護成果的主要手段。
《單片機系統的動態加密技術》這篇文章不錯,網路文庫里就有,可以參考一下。