|
總體一個思路就是讀取芯片ID,前后增加N個隨機數(shù)進行混淆,然后經(jīng)過加密運算后存儲在EEPROM中,程序運行初始化時取出加密后的ID數(shù)據(jù)進行比對。
固件程序改寫EEPROM的時機是什么時候呢?不可能將固件燒進單片機后就能改寫EEPROM,這樣別人把你的固件拷出來后,燒進其他板子,固件程序也能改寫其他單片機的EEPROM。
所以,固件程序修改EEPROM的時機,必須是EEPROM里有個數(shù)據(jù)是個特定值,而這個特定值是我們上位機輸入的,這就相當(dāng)于我們掌握了一個密碼,沒有這個密碼,固件程序是不會改寫EEPROM,而且固件寫入EEPROM的值必須覆要蓋這個特定值存儲的區(qū)域,這樣,我們密碼用完就銷毀了,起到了一個保密作用。
實現(xiàn)起來,最好能用串口跑起來個MODBUS協(xié)議,方便我們用上位機控制單片機。
在讀取ID加密數(shù)據(jù)的時候,設(shè)定一個基地址,然后通過加減運算,才指向EEPROM存儲加密ID數(shù)據(jù)的首地址,隱藏我們存儲在EEPROM中存儲ID加密數(shù)據(jù)地址。
|
|