<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AT89C 系列單片機解密原理

          AT89C 系列單片機解密原理

          作者: 時間:2016-09-26 來源:網(wǎng)絡 收藏

            單片機解密簡單就是擦除單片機片內的加密鎖定位。由于系列單片機擦除操作時序設計上的不合理。使在擦除片內程序之前首先擦除加密鎖定位成為可能。系列單片機擦除操作的時序為:擦除開始---->擦除操作硬件初始化(10微秒)---->擦除加密鎖定位(50----200微秒)--->擦除片內程序存儲器內的數(shù)據(jù)(10毫秒)----->擦除結束。如果用程序監(jiān)控擦除過程,一旦加密鎖定位被擦除就終止擦除操作,停止進一步擦除片內程序存儲器,加過密的單片機就變成沒加密的單片機了。片內程序可通過總線被讀出。對于系列單片機有兩種不可破解的加密方法。

          本文引用地址:http://www.ex-cimer.com/article/201609/310325.htm

            一、永久性地破壞單片機的加密位的加密方法。簡稱加密模式。

            二、永久性地破壞單片機的數(shù)據(jù)總線的加密方法。簡稱燒總線加密模式。

            AT89C系列單片機加密模式原理

            這種編程加密算法燒壞加密鎖定位(把芯片內的硅片擊穿),面不破壞其它部分,不占用單片機任何資源。加密鎖定位被燒壞后不再具有擦除特性,89C51/52/55有3個加密位進一步增加了加密的可靠性。一旦用模式加密后,單片機片內的加密位和程序存儲器內的數(shù)據(jù)就不能被再次擦除,89C51/52/55單片機就好象變成了一次性編程的OTP型單片機一樣。如果用戶程序長度大于89C51單片機片內存儲器的容量,也可使用OPT模式做加密,具體方法如下:

            1、按常規(guī)擴展一片大容量程序存儲器,如27C512(64K)。

            2、把關鍵的程序部分安排在程序的前4K中。

            3、把整個程序寫入27C512,再把27C512的前4K填充為0。

            4、把程序的前4K固化到AT89C51中,用OPT模式做加密。

            5、把單片機的EA腳接高電平。

            這樣程序的前4K在單片機內部運行,后60K在片外運行。盜版者無法讀出程序的前4K程序,即使知道后60K也無濟于事。

            AT89C系列單片機煉總線加密模式原理

            因為單片機片內的程序代碼最終都要通過數(shù)據(jù)總線讀出,如果指導單片機的數(shù)據(jù)總線的其中一條線永久性地破壞,解密者即使擦除了加密位,也無法讀出片內的程序的正確代碼。89C1051/2051的數(shù)據(jù)總線為P1口燒總線模式燒壞89C2051的P1.0端口,原程序代碼為02H、01H、00H。讀出的數(shù)據(jù)則為03H,01H,00H。其中最低位始終為1,讀出的程序代碼顯然為錯碼。這種加密模式用于加密89C1051/2051單片機。缺點是占用單片機的資源。開發(fā)設計人員在設計單片機硬件系統(tǒng)時只要預留出口線P1.0不用,以后就可用燒總線模式對單片機加密。



          關鍵詞: AT89C OTP

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();