如何来为MSP430单片机加密?

发布者:幸福自由最新更新时间:2021-03-30 来源: eefocus关键字:MSP430  单片机  加密 手机看文章 扫描二维码
随时随地手机看文章

1、为什么要加密,如何加密?


当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。


2、JTAG、BSL、BOOTLOADER、熔丝的区别和关系是什么?


JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编程了。


BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。


注意:A 、要烧断熔丝(加密)必须使用JTAG接口;B、烧断熔丝后只能通过BSL或者用户代码来实现编程更新。


3、BSL的验证密码是怎么回事?


BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。通过BSL擦除所有Flash信息时不需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。BSL的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。


4、为什么要使用高级加密?


32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就能将其破解。这对自动操作的计算机来说几乎是一瞬间的事情。那么如果用到的中断向量越多,就越难破解,最好的办法就是将所有未用到的中断向量全部填充为随机数据,这就是“高级加密”。


5、关于TI-TXT文件


TI-TXT文件是TI公司为MSP430单片机定义的一种编程代码格式,其内容为纯文本格式,使用任何文本编辑器都能对其进行阅读,下面是一个这类文件的例子:


@FEFE


B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00


40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00


C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00


F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00


F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00


F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40


00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43


30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE


30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40


FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40


A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C


0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53


F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D


1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41


30 41


@FFFE


5C FF


q


第一行的@FEFE表示从地址0xFEFE开始,有如下代码。每行为16字节,每个字节使用16进制数表示,每两个字节之间用一个空格格开。内容末尾的@FFFE就是程序的复位向量了,表示程序的入口地址为0xFF5C。最后用一个小写的q字符加换行结束,当然也可以把中断向量的那两行放到最前面去,比如下面这段代码的含义跟上面的是一样的,同样符合规则。


@FFFE


5C FF


@FEFE


B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00


40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00


C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00


F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00


F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00


F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40


00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43


30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE


30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40


FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40


A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C


0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53


F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D


1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41


30 41


q


手动修改TI-TXT文件来实现高级加密:


下面是使用到中断向量较少的一段代码的中断向量:


@FFE0


10 FF A0 FF


@FFFE


5C FF


它与下面这段代码意义是一样的:


@FFE0


10 FF A0 FF FF FF FF FF FF FF FF FF FF FF FF FF


FF FF FF FF FF FF FF FF FF FF FF FF FF FF 5C FF


这里我们把未用到中断向量改成随机数据,就实现高级加密了,不过注意不要把有效的中断向量也改了哦。


@FFE0


10 FF A0 FF A5 5A 37 21 F3 44 E0 77 9A 00 22 33


44 55 66 77 88 99 AA BB CC DD EE 3E E3 0F 5C FF


关键字:MSP430  单片机  加密 引用地址:如何来为MSP430单片机加密?

上一篇:MSP430与图形液晶显示模块接口应用
下一篇:MSP430的编译环境问题总结

推荐阅读最新更新时间:2024-11-13 18:50

单片机程序远程下载方法(包括STC单片机
简介:在某些特殊的场合单片机程序、软件需要进行远程下载,特别是单片机程序的远程升级。本文介绍一种使用串口转以太网模块ZLSN3000来实现51单片机(特别是STC单片机)、PIC单片机、ARM、AVR、PLC的程序远程升级的方法。 1.原理 1.1升级条件 任何能够通过PC机串口下载程序的单片机都可以用该方法实现远程程序升级。目前该方案已经在STC单片机、PIC单片机、ARM上验证。 1.2硬件连接图 如图 1 所示是通过Internet远程升级STC单片机程序的演示图。在设备端,使用卓岚ZLSN3000模块将STC单片机的串口(2根线)和ZLSN3000的RXD、TXD引线直接连接;ZLSN3000的网口连接到ADSL
[单片机]
<font color='red'>单片机</font>程序远程下载方法(包括STC<font color='red'>单片机</font>)
利用51单片机统计脉冲个数,即时输出显示
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。 ;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈! ;悬赏分:30 | 解决时间:2011-7-20 19:15 | ;===================================================== ;最佳答案: ;题目要求在T1端输入脉冲,统计脉冲个数,并即时输出显示,使用8个LED数码管,显示:0000 0000~9999 9999。 ;计数、显示,很简单的。虽然要求的位数较多,但是循环一下,也就可以了。 ;程序用汇编汇编语言编写好了,指令不超过50行,太简单了。 ;题目只是要求在T1端输入脉冲,并没有指出显示电路,那么
[单片机]
利用51<font color='red'>单片机</font>统计脉冲个数,即时输出显示
MCS-51单片机的无条件转移指令用法介绍
控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 MCS-51单片机的无条件转移指令用法介绍 无条件转移指令 这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。 LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址) AJ
[单片机]
单片机串口控制步进电机的源程序
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define LED P1 //因为步进电机是减速步进电机,减速比的1/64 , //所以N=64时,步进电机主轴转一圈 //使用前请短接J2跳线帽,串口助手设置为比特率9600,无校验位,停止位1,发送数据为16进制形式 uchar code CCW ={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆时钟旋转相序表 uchar code CW ={0x09,0x01,0
[单片机]
msp430有几种时钟源
在MSP430单片机中,一个时钟周期=MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。 一个机器周期=一个时钟周期,即430每个动作都能完成一个基本操作。 一个指令周期=1~6个机器周期,具体根据具体指令而定。 另外,指令长度只是一个存储单位,与时间没有必然的关系。 MSP430单片机的时钟模块主要包括: 三个时钟:辅助时钟ACLK、主时钟MCLK、子系统时钟SMCLK 三个振荡器:低频时钟源LFXT1、高频时钟源XT2、数字控制RC振荡器DCO 而MSP430单片机工作所需时钟就是由这些振荡器振荡后经处理产生的。 a、ACLK:是LFXT1CLK信号经1/2/4/8分频后得到的,主要用作低速外
[单片机]
<font color='red'>msp430</font>有几种时钟源
Microchip推出全新8位单片机开发板,可连接5G LTE-M窄带物联网网络
A- 蜂窝迷你开发板是 AVR®系列的产品,为开发人员提供了构建设备的简易蓝图   物联网网络开发人员希望在设计应用中便捷地实现安全蜂窝连接,但却面临着复杂的设计和高昂的部署成本。为了给那些对位置灵活性、低功耗和部署简单性有严格要求的网络设计人员提供解决方案,crochip chnology Inc.(美国微芯科技)今日宣布推出基于AVR128DB48 8位()的AVR-IoT 蜂窝迷你开发板。该解决方案为在窄带物联网网络上构建和执行器节点提供了强大的平台。   AVR-IoT 蜂窝迷你开发板是一款小尺寸(SFF)板,是希望将物联网设备连接到现有5G网络的开发人员的理想解决方案。这对于移动中的设备或位于偏远地
[机器人]
单片机点亮数码管
数码管的示意图如上,通过点亮a-g七个led来拼成对应的数字或字符,数码管有共阳极(底电平亮)和共阴极(高电平亮),以上图的数字2为例: 共阳极(0亮1灭): DP G F E D C B A 1 0 1 0 0 1 0 0 = 0xA4 共阴极(1亮0灭): DP G F E D C B A 0 1 0 1 1 0 1 1 = 0x5B 全部定义: 附件的excel中有所有共阳共阴的代码; 以共阳极为例,将0-9定义在数组(C语言中是叫“表”?有知道的同志可以赐教)中,通过循环来依次显示0-9; #include reg52.h un
[单片机]
<font color='red'>单片机</font>点亮数码管
瑞萨MCU这几年的崛起之路
经常阅读我公公众号文章的小伙伴,应该看到了我今年分享关于瑞萨MCU的内容比较多。 再次,你会发现瑞萨电子这几年发展的比较迅猛,不管是线上还是线下的活动都特别多,还有不断涌现出新的MCU产品。 瑞萨MCU 我们先来说说我们接触最多的MCU,瑞萨MCU在这几年之中增加了多个系列、N个型号,可以说涵盖了低功耗、高性能、车规级、性价比等目前几乎市面上都有的各个领域的MCU。 我们先来看下官网目前在售的MCU情况: https://www.renesas.cn/zh/products/microcontrollers-microprocessors 目前有7大系列,包括: Cortex-M内核32位
[汽车电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved