首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S12X系列芯片加密

S12X系列芯片加密

我再做这个功能,按照数据手册上写了个加密程序,其实就是设置Security寄存器,但是设置后发现程序不工作,不知道怎么搞的。
你只是设置了security寄存器程序就不工作了吗?检查一下是否写的地址不对?
海纳百川  有容乃大
版主好,我用的是s12p128芯片,这个与s12xs兼容。它的后门密码存储在全局地址0x3_FF00到0x3_FF07,每次复位时加载地址0x3_FF0F的值到安全寄存器FSEC中,我用#pragma定义了一个数据到地址FF0F,这个数据就是为了允许后门密钥访问和设置芯片为加密状态(最后一个位置1),在通过BDM刷写程序进去时,FF0F地址处的最低位总是被写成0(非加密状态)。这种加密的方法一直没能通过,也许通过BDM刷写时芯片会始终设置为非加密状态。
   后来我想个方法,就是通过串口发送写PFLASH指令,MCU接收到指令后就擦除FF0F所在扇区,然后写数据到FF0F处,这样复位后就可以将此数据加载进行FSEC寄存器了。但是复位向量在FFFE地址处(其他中断可以通过基址寄存器修改,复位向量地址似乎就固定死了),与FF0F在同一个扇区,这样一擦也把复位向量擦了,程序当然就不能执行了。
  之后我在擦除后再将复位向量写进去,这样程序就正常了。加密功能算是实现了,不过总觉得这个芯片是否还有其他方法将加密位写进去,而不用擦除复位入口。请问版主有没有高招,给小弟我指条路,不胜感激。在王宜怀老师著的一本书中介绍了一个方法,说是通过修改Linker.ld文件,将加密位映射到地址FF0F处,但是我一直没找到这个文件,不知道是否在codewarrior IDE中。
加密问题先告一段落,剩下就是通过后门密钥解密了,我仍然通过SCI口进行控制,单片机将接收到的密码与存储的密码进行比对。在s12p中有条指令:Verify backdoor Access Key,只要将4个字的密码写进FCCOB寄存器中,然后开始运行(FSTAT_CCIF = 1)。
但我还没有调试成功,不能通过密码解密。这个我再继续调试
你好,我这几天也在搞XD256和XEP100的解密工作,遇到了差不多同样的问题,希望能和你多交流一下,我的邮箱[email=xiaokedai@gmail.com,请问你的联系方式?xiaokedai@gmail.com,请问你的联系方式?[b[/email]] 4# achao86926
加密的另一个相对简单的方法是:定义一个常量并定位到0xFF0F处,例如:
const word secure @ 0xFF0F = 0xFFBD;
即可,楼主可以试试。希望能一起讨论下解密的问题。
做产品,这一块的确要解决,否则复制品会层出不穷啊!
飞思卡尔8/16/32位多功能开发板/下载器:
网站:http://www.lqist.cn,
淘宝店:http://shop36265907.taobao.com
加密问题先告一段落,剩下就是通过后门密钥解密了,我仍然通过SCI口进行控制,单片机将接收到的密码与存储的密码进行比对。在s12p中有条指令:Verify backdoor Access Key,只要将4个字的密码写进FCCOB寄存器中,然后 ...
achao86926 发表于 2009-11-14 16:15
怀疑这种方法的可行性,如果能行的话,经过若干次,若干天的尝试,最后肯定可以破解密码。印象中,加密后只能擦除,不能读取了。
飞思卡尔8/16/32位多功能开发板/下载器:
网站:http://www.lqist.cn,
淘宝店:http://shop36265907.taobao.com
这个是没问题的,我已经在XEP100的上验证过了。 8# chiusir
加密后是可以解密然后读取的。这个我已经试过了,为了防止别人经过若干次的破解,程序内部可以设置解密失败次数。



8# chiusir
这个看上去是一个好方法,我试一试。我以前想过用#pragma DATA_SEG 来定义一个字,但是行不通的。 6# daixiaoke
加密芯片,也可以考虑一下AT88SA102S,ATMEL首款密钥256位的加密芯片,也是行业第一款256位密钥的加密芯片,开发比较简单,公开的算法和源码,MSN:agon2010@live.cn
返回列表