久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6025|回復: 10
收起左側

怎么讀取52單片機的id號,用于程序加密。

[復制鏈接]
ID:382454 發表于 2018-10-9 21:02 來自觸屏版 | 顯示全部樓層 |閱讀模式
每塊單片機都有一個唯一的編碼,可以用來加密或者用戶跟蹤,這就是其序列號,怎樣讀取這個ID號呢?用于加密。謝謝!
回復

使用道具 舉報

ID:387733 發表于 2018-10-10 07:05 | 顯示全部樓層
不是每一種51單片機都有唯一ID號的。STC的單片機有,PDF說明里有詳細說明和讀取方法。
回復

使用道具 舉報

ID:164602 發表于 2018-10-10 08:39 | 顯示全部樓層
你應該看看芯片手冊。
如果是STC的芯片,那么最簡單了。
用STC-ISP下載軟件,下載一次程序,那么,在信息窗口,就會顯示出這個ID號!!!!! 1.jpg

2.jpg

看到沒?我的芯片ID號?
回復

使用道具 舉報

ID:330198 發表于 2018-10-10 09:10 | 顯示全部樓層
程序僅供參考。
————————————————————————————————————————————————
#include "reg51.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;                        

#define ID_ADDR_RAM 0xf1        //ID號的存放在RAM區的地址為0F1H
//#define ID_ADDR_RAM 0x71        //對于只有128字節RAM的ID號的存放在RAM區的地址為071H

                                //ID號的存放在程序區的地址為程序空間的最后7字節
//#define ID_ADDR_ROM 0x03f9      //1K程序空間的MCU(如                                             STC15F201EA, STC15F101EA)
//#define ID_ADDR_ROM 0x07f9      //2K程序空間的MCU(如                              STC15F402EACS, STC15F202EA, STC15F102EA)
//#define ID_ADDR_ROM 0x0bf9      //3K程序空間的MCU(如                                             STC15F203EA, STC15F103EA)
//#define ID_ADDR_ROM 0x0ff9      //4K程序空間的MCU(如               STC15F804EACS, STC15F404EACS, STC15F204EA, STC15F104EA)
//#define ID_ADDR_ROM 0x13f9      //5K程序空間的MCU(如                                             STC15F205EA, STC15F105EA)
//#define ID_ADDR_ROM 0x1ff9      //8K程序空間的MCU(如STC15F2K08S2,  STC15F808EACS, STC15F408EACS)
//#define ID_ADDR_ROM 0x27f9      //10K程序空間的MCU(如                             STC15F410EACS)
//#define ID_ADDR_ROM 0x2ff9      //12K程序空間的MCU(如              STC15F812EACS, STC15F412EACS)
//#define ID_ADDR_ROM 0x3ff9      //16K程序空間的MCU(如STC15F2K16S2, STC15F816EACS)
//#define ID_ADDR_ROM 0x4ff9      //20K程序空間的MCU(如STC15F2K20S2, STC15F820EACS)
//#define ID_ADDR_ROM 0x5ff9      //24K程序空間的MCU(如              STC15F824EACS)
//#define ID_ADDR_ROM 0x6ff9      //28K程序空間的MCU(如              STC15F828EACS)
//#define ID_ADDR_ROM 0x7ff9      //32K程序空間的MCU(如STC15F2K32S2)
//#define ID_ADDR_ROM 0x9ff9      //40K程序空間的MCU(如STC15F2K40S2)
//#define ID_ADDR_ROM 0xbff9      //48K程序空間的MCU(如STC15F2K48S2)
//#define ID_ADDR_ROM 0xcff9      //52K程序空間的MCU(如STC15F2K52S2)
//#define ID_ADDR_ROM 0xdff9      //56K程序空間的MCU(如STC15F2K56S2)
#define ID_ADDR_ROM 0xeff9      //60K程序空間的MCU(如STC15F2K60S2)

//-----------------------------------------

void InitUart();
void SendUart(BYTE dat);

//-----------------------------------------

void main()
{
    BYTE idata *iptr;
    BYTE code *cptr;
    BYTE i;
   


    InitUart();                 //串口初始化
   
    iptr = ID_ADDR_RAM;         //從RAM區讀取ID號
    for (i=0; i<7; i++)         //讀7個字節
    {
        SendUart(*iptr++);      //發送ID到串口
    }
   
    cptr = ID_ADDR_ROM;         //從程序區讀取ID號
    for (i=0; i<7; i++)         //讀7個字節
    {
        SendUart(*cptr++);      //發送ID到串口
    }

    while (1);                  //程序終止
}

/*----------------------------
初始化串口
----------------------------*/
void InitUart()
{
    SCON = 0x5a;                //設置串口為8位可變波特率
    TMOD = 0x00;                //定時器1為模式0(16位自動重載)
    TL1 = 0xd8;                 //設置波特率重裝值
    TH1 = 0xff;                 //115200 bps(65536-18432000/4/115200)
    TR1 = 1;                    //定時器1開始啟動

}

/*----------------------------
發送串口數據
----------------------------*/

void SendUart(BYTE dat)
{
    while (!TI);                //等待前面的數據發送完成
    TI = 0;                     //清除發送完成標志
    SBUF = dat;                 //發送串口數據
}
回復

使用道具 舉報

ID:382454 發表于 2018-10-10 09:15 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2018-10-10 08:39
你應該看看芯片手冊。
如果是STC的芯片,那么最簡單了。
用STC-ISP下載軟件,下載一次程序,那么,在信息 ...

謝謝!
回復

使用道具 舉報

ID:382454 發表于 2018-10-10 09:46 | 顯示全部樓層
http://www.stcisp.com/stc_id_encryption_stcisp.html

單片機加密保護的幾種方式:
其實理論上所有的單片機加密都會被破解,只是成本的問題(含時間成本、金錢成本等)。只要做到解密的成本足夠大,讓破解者覺得無利可圖即算成功!

1、法律保護
由完善的法律加強對盜版的打擊。在單片機程序里添加自己的版權、LOGO標記等,作為法庭上的證據(當然要加密保存,并反跟蹤,程序運行中要校驗是否被修改,如是則作相應的處理)。

2、技術保護。
通常是加密的容易而破解難。現代芯片的加密主要有工藝上縮小線寬、將保密位深埋、讀寫協議保密、讀取敏感區域時自動重啟等等方法,讓破解者不能取得內部BIN執行代碼。這是最基本的保護!假如一個系統的成本為:開發+測試+投產只需5萬元,而破解得到BIN文件卻要10萬元,這時哪誰還去做破解的傻事??

如果單片機有唯一ID,開發者使用了關聯單片機唯一ID的保護方式,可以讓加密更上一層樓!哪怕破解者千辛萬苦花了大價錢盜取了BIN文件,但不能直接使用,就可以大大增加了系統的保密性。使用唯一ID的加密的方式類似PC軟件使用USB加密狗或銀行網銀使用證書加密,都是通過唯一的標志記號,讓系統識別合法用戶。
修改單片機的BIN文件需要反匯編,人工閱讀分析。小程序容易進行跟蹤反匯編,但大程序(例如60KB)時,加密者首先通過各種編程技巧破壞反匯編軟件的跟蹤,這時需要破解者人工進行層層跟蹤了。當遇到包括多次隱蔽轉跳、動態加密、代碼CRC32校驗、動態陷阱和隨機報錯等等方式,例如60KB的BIN代碼,這個可是個浩大的工程,人工處理無疑象大海撈針,沙漠里找金砂!
即使在PC環境如此先進的跟蹤環境下,破解PC軟件的USB加密狗都很困難,更況且是在單片機的調試環境?!

當解密所花的人力金錢成本和時間成本比重新開發還高,解密將變得不償失!這絕不是象學生在學校做例題一樣:將“判斷某條JNZ指令改為JZ”這么簡單!說STC唯一ID解密容易的都是些水平不夠的新手,根本沒有經過實際操作!

也有人說,STC單片機早期的唯一ID是由ISPCODE提供,存在于RAM中的7個字節,而不是光刻在硅晶片上的唯一ID,容易被破壞:只要在程序前做一個轉跳去修改該RAM的ID區域為原ID可以破解。認為只有利用在硅片光刻的唯一ID用來加密才是可靠的,例如使用外部器件(例如:DS18B20)的。真是這樣嗎?答案當然是否定的,他違反了加密的基本常識,使用了外部ID,破解者就可以輕易地使用廉價的另一小單片機模擬這個ID,這樣的加密方法是非常脆弱的,是不堪一擊的!其次認為該唯一ID存在于RAM,會被后續程序破壞。但實際上加密者可以在啟動后其復制到變量中使用,不影響效果。至于認為破解時可修改程序,在RAM中人工生成一個原ID來欺騙加密機制或直接跳過該ID的判斷來解密。哈哈,聽上去不錯。但實際上加密者會首先對程序進行加密反跟蹤,而且在程序中有技巧地重重多次判斷程序本身是否被修改。若發現被修改則進入會進入保護陷阱!

唯一ID不管是由物理光刻或由廠家的程序生成,只要是原始不被復制直接使用,那都是可靠的保密ID!只有使用象STC單片機的內部唯一ID加密才是上策!

現在,新的STC15F系列單片機還在增加了一種在程序FLASH最后7個字節的新唯一ID!這個是不可改寫的,可進一步增強單片機的保密程度,使數據更安全了。所以好好利用單片機內部的唯一ID,是加密的利器,對保護投資者、開發者的合法權益就具有很大意義了。

3、可通過不斷優化完善系統,快速升級固件和產品,贏得客戶。
回復

使用道具 舉報

ID:382454 發表于 2018-10-10 10:15 | 顯示全部樓層
好像這個挺難破的,這個是怎么搞的,大家看看。
https://download.csdn.net/download/cangfang2006/8291469

                                                                            讀取STC單片機ID號,用CRC-ITU算法加密 完整源代碼                                                                                                                                                                                                                                                        讀取STC單片機 ID號,利用CRC-ITU算法存入EEPROM,在應用程序中比較單片機ID號和EEPROM中的CRC數據,兩者符合規定算法才運行程序執行,這樣將達到程序堅不可摧的目的!(在具體應用中,可以靈活修改 生成多項式0X1021的值,防止被破解算法)                                                                    


回復

使用道具 舉報

ID:407393 發表于 2018-10-10 10:36 | 顯示全部樓層

每塊單片機都有一個唯一的編
回復

使用道具 舉報

ID:382454 發表于 2018-12-19 17:46 | 顯示全部樓層
本帖最后由 univers 于 2018-12-19 18:03 編輯
zhanghyg 發表于 2018-10-10 09:10
程序僅供參考。
—————————————————————————————————————————— ...

#define ID_ADDR_RAM 0xf1        //ID號的存放在RAM區的地址為0F1H
RAM這個0xf1地址是對的,手上的芯片是STC89C52RC,我讀出來7位,再累加求和,示顯出在數碼管里。每片芯片都不一樣。
但是我想讀ROM的ID號,讀出來是錯的,地址是看說明書找到的,#define ID_ADDR_ROM 0x1ff9
幾個芯片讀出來全都是一樣的,好暈。
請問樓主STC89C52RC的程序區ROM   ID首地址是在那里哦??
謝謝!!!
捕獲.PNG
回復

使用道具 舉報

ID:382454 發表于 2018-12-19 22:37 來自觸屏版 | 顯示全部樓層
手上有STC8A8K64SA13的開發板,我讀了一個ram區的id與rom區的
回復

使用道具 舉報

ID:382454 發表于 2018-12-19 22:37 來自觸屏版 | 顯示全部樓層
手上有STC8A8K64SA13的開發板,我讀了一個ram區的id與rom區的id是一至的。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久伦理中文字幕 | 免费黄色大片 | 久久51 | 99精品免费久久久久久日本 | av免费网站在线观看 | 91中文在线观看 | av毛片| 国产精品av久久久久久久久久 | 福利成人 | 婷婷狠狠 | 91精品国产91久久综合桃花 | 久久久精品视频免费看 | 午夜成人免费视频 | 欧日韩在线| 久久久久国产一区二区三区四区 | 成年人免费网站 | 久久久久久久香蕉 | 国产精品一区二区三区久久 | 秋霞av国产精品一区 | 在线国产一区二区三区 | 午夜色婷婷 | 日本精品一区二区 | 一级a性色生活片久久毛片波多野 | 中文字幕日韩专区 | 日韩精品在线视频 | 国产一级淫片免费视频 | 欧美色综合一区二区三区 | 五月天激情电影 | 亚洲国产欧美在线人成 | 色婷婷av一区二区三区软件 | 在线亚州 | 欧美一级片中文字幕 | 国产伦一区二区三区视频 | 亚洲精色| 一区精品在线观看 | 国产成人99久久亚洲综合精品 | 激情自拍偷拍 | 国产精品久久久久久久久久久久久久 | 欧美激情精品久久久久久 | 免费一区二区三区 | 在线成人www免费观看视频 |