欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6386|回復(fù): 10
收起左側(cè)

怎么讀取52單片機(jī)的id號(hào),用于程序加密。

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-10-10 08:39 | 顯示全部樓層
你應(yīng)該看看芯片手冊(cè)。
如果是STC的芯片,那么最簡(jiǎn)單了。
用STC-ISP下載軟件,下載一次程序,那么,在信息窗口,就會(huì)顯示出這個(gè)ID號(hào)!。。! 1.jpg

2.jpg

看到?jīng)]?我的芯片ID號(hào)?
回復(fù)

使用道具 舉報(bào)

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

typedef unsigned char BYTE;
typedef unsigned int WORD;                        

#define ID_ADDR_RAM 0xf1        //ID號(hào)的存放在RAM區(qū)的地址為0F1H
//#define ID_ADDR_RAM 0x71        //對(duì)于只有128字節(jié)RAM的ID號(hào)的存放在RAM區(qū)的地址為071H

                                //ID號(hào)的存放在程序區(qū)的地址為程序空間的最后7字節(jié)
//#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區(qū)讀取ID號(hào)
    for (i=0; i<7; i++)         //讀7個(gè)字節(jié)
    {
        SendUart(*iptr++);      //發(fā)送ID到串口
    }
   
    cptr = ID_ADDR_ROM;         //從程序區(qū)讀取ID號(hào)
    for (i=0; i<7; i++)         //讀7個(gè)字節(jié)
    {
        SendUart(*cptr++);      //發(fā)送ID到串口
    }

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

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

}

/*----------------------------
發(fā)送串口數(shù)據(jù)
----------------------------*/

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

使用道具 舉報(bào)

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

謝謝!
回復(fù)

使用道具 舉報(bào)

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

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

1、法律保護(hù)
由完善的法律加強(qiáng)對(duì)盜版的打擊。在單片機(jī)程序里添加自己的版權(quán)、LOGO標(biāo)記等,作為法庭上的證據(jù)(當(dāng)然要加密保存,并反跟蹤,程序運(yùn)行中要校驗(yàn)是否被修改,如是則作相應(yīng)的處理)。

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

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

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

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

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

現(xiàn)在,新的STC15F系列單片機(jī)還在增加了一種在程序FLASH最后7個(gè)字節(jié)的新唯一ID!這個(gè)是不可改寫的,可進(jìn)一步增強(qiáng)單片機(jī)的保密程度,使數(shù)據(jù)更安全了。所以好好利用單片機(jī)內(nèi)部的唯一ID,是加密的利器,對(duì)保護(hù)投資者、開發(fā)者的合法權(quán)益就具有很大意義了。

3、可通過不斷優(yōu)化完善系統(tǒng),快速升級(jí)固件和產(chǎn)品,贏得客戶。
回復(fù)

使用道具 舉報(bào)

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

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


回復(fù)

使用道具 舉報(bào)

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

每塊單片機(jī)都有一個(gè)唯一的編
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表