查看: 2046|回复: 3

[S12] mc9s12dg128后门钥匙解锁程序怎么解锁不了

[复制链接]

该用户从未签到

2

主题

3

帖子

0

新手上路

Rank: 1

积分
20
最后登录
2015-8-12
发表于 2015-8-11 17:24:40 | 显示全部楼层 |阅读模式
各位帮忙看看这个解锁程序有什么问题?就是解锁不了
const  char secury @0xFF0F =0x80;//flash加密
unsigned int flash_array[4] @0xFF00={
0x1111,0x1111,0x1111,0x1111
};//后门钥匙密码

while(count<=7) {
    data_receive[count++] = SCI_receive();
  }
  // SCI_send(1);   //加密成功
/* decode the code*/
  //接收密钥
  KEY1=(((unsigned int)data_receive[0])<<8)|data_receive[1];
  KEY2=(((unsigned int)data_receive[2])<<8)|data_receive[3];
  KEY3=(((unsigned int)data_receive[4])<<8)|data_receive[5];
  KEY4=(((unsigned int)data_receive[6])<<8)|data_receive[7];

  FCNFG_KEYACC=1;
flash_array[0] =KEY1;
  flash_array[1] =KEY2;
  flash_array[2] =KEY3;
  flash_array[3] =KEY4;
  FCNFG_KEYACC=0;   

if ((FSEC & 0x03) == 0x02) {
        SCI_send('Y' );    //解密成功
        }
         else {
           SCI_send('N');   //加密成功
      }
为什么单片机执行到FCNFG_KEYACC=1就会死机;

      
我知道答案 目前已有3人回答

评分

参与人数 1NXP金币 +3 收起 理由
小七 + 3

查看全部评分

回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16701
    最后登录
    1970-1-1
    发表于 2015-8-11 20:29:18 | 显示全部楼层
    楼主给讲讲你的思路吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2015-8-12
     楼主| 发表于 2015-8-12 09:14:32 | 显示全部楼层
    lkl0305 发表于 2015-8-11 20:29
    楼主给讲讲你的思路吧

      两种加密解密方法   

           在HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码的加密。这两种加密的方法根据用户的需求,使用的场合也有所不同。

           完全加密   

           所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作。在MC9S12DP256单片机中,加密是通过对某一Flash单元($FF0F)编程来实现的。加密后的芯片,BDM编程器对Flash的读操作就被禁止了。   

           采用完全加密,读取ROM代码的可能性就不存在了,这是一种最为“安全”的加密方法。如果用户

    想修改ROM的内容,唯一的办法就是将Flash的内容全部擦除,这一操作可以通过BDM编程器来完成。   

           使用BDM编程器擦除Flash ROM和EEPROM的过程与在普通模式下对片内的Flash ROM擦除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由BDM命令来实现。通过BDM编程器将一连串完整的擦除指令序列送给单片机,就可将Flash ROM和EEPROM的内容全部擦除了。   

           在全擦除操作完成后,BDM编程器将系统复位,系统会自动检查全擦除操作是否成功。如果成功,BDM状态寄存器的UNSEC位会自动置“1”,系统进入解密状态。   

          由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。

           使用密码的加密   

           为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。

           使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。   

           解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用BDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。

           假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:

    ;******************
    ;*  TEST KEYS 
    ;******************
    TESTKEYS
         BSET  FCNFG,$20             ;置KEYACC为1
         LDD   KEY0
         STD   $FF00
         LDD   KEY2
         STD   $FF02
         LDD   KEY4
         STD   $FF04
         LDD   KEY6
         STD   $FF06                  ;验证KEY0-KEY7
         BCLR  FCNFG,$20     ;清KEYACC为0 
      LDAA  FSEC
    ANDA  #$03
    CMPA  #$02 
    BNE   FAIL              &n

    bsp;    ; 是否验证成功?
    SUCCESS          ; 密码验证成功
    LDAA  FSTAT      ; 清除Flash状态寄存器
         ORAA  #%00110000
         STAA  FSTAT
         LDAA  #0
         STAA  FCNFG
         BRCLR FSTAT,$80,*
         LDD   #$FFFE
         STD   $FF0E                  ; 改写加密状态,复位后系统不再加密
         LDAA  #$20
         STAA  FCMD                 
         BSET  FSTAT,#$80             ; 开始执行
         BRCLR FSTAT,$40,*   
       RTS                          ; 返回
    FAIL RTS    

           程序返回后,如果用户输入的密码和原值符合,系统将会把保密寄存器FSEC的最后两位SEC[1:0]改写到未加密的状态,系统自动解密。如果验证没有通过,系统将保持加密状态。   

           需要注意,不管使用哪种方式将系统解密,解密后的系统虽然可以暂时读取Flash,但是由于单元$FF0F中的最后两位仍处于加密状态(全擦除后,“11”的组合仍为加密状态),系统在下次复位后,仍会回到加密的状态,所以为了彻底解密系统,必须改写这两位为“10”。整个程序的流程如图1所示。

                                                        图1 解密用户接口程序流程图
    想验证这个使用密码解锁这部分
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    22

    帖子

    0

    注册会员

    Rank: 2

    积分
    52
    最后登录
    2015-9-10
    发表于 2015-9-9 16:56:40 | 显示全部楼层
    学习了!
    freescaleic.org.png
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 22:31 , Processed in 0.098497 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表