历史上的今天
返回首页

历史上的今天

今天是:2025年05月28日(星期三)

正在发生

2021年05月28日 | MSP430常用加密总结

2021-05-28 来源:eefocus

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


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


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


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


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


推荐阅读

史海拾趣

博巨兴公司的发展小趣事

随着业务的快速发展,博巨兴公司在2004年决定扩大经营规模,将写字楼搬迁至福田区彩田路彩虹大厦。这一举措不仅提升了公司的形象,也为进一步拓展业务提供了更好的条件。同时,公司不断加强技术研发,成功取得了苏州市华芯微电子有限公司的代理权,进一步巩固了在芯片代理领域的地位。

Autotrol公司的发展小趣事

Autotrol公司的齿轮传动链产品因其卓越的性能和广泛的应用领域而备受瞩目。公司积极与各行业合作伙伴建立合作关系,将其产品应用于水处理、汽车、采暖通风与空调、翻转广告、医院、农业、照明等多个领域。通过与合作伙伴的紧密合作,Autotrol不仅拓展了市场份额,还提升了品牌影响力。

DUBILIER公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DUBILIER公司深知这一点,因此一直致力于提升产品质量和可靠性。公司建立了严格的质量管理体系,对生产过程进行全面监控和控制。通过采用先进的生产设备和工艺,以及实施严格的质量检测程序,DUBILIER公司确保了其产品的卓越品质。这种对品质的执着追求使得DUBILIER公司的产品在市场上备受信赖。

Adafruit公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DUBILIER公司深知这一点,因此一直致力于提升产品质量和可靠性。公司建立了严格的质量管理体系,对生产过程进行全面监控和控制。通过采用先进的生产设备和工艺,以及实施严格的质量检测程序,DUBILIER公司确保了其产品的卓越品质。这种对品质的执着追求使得DUBILIER公司的产品在市场上备受信赖。

ERP公司的发展小趣事

在21世纪初,一家名为“电子智链”的ERP公司在中国电子行业崭露头角。创始人李明是一位资深电子工程师,他意识到电子企业面临的管理挑战和数字化转型的机遇。电子智链初期专注于为中小型电子企业提供定制化的ERP解决方案,帮助企业优化供应链管理、生产计划和财务管理。通过不断创新和积累客户反馈,电子智链逐渐在电子行业树立了良好的口碑。

Diplohmatic A/S公司的发展小趣事

Diplohmatic A/S公司非常重视企业文化的建设。公司倡导“创新、协作、诚信、共赢”的核心价值观,通过举办各类员工活动、开展团队建设和员工培训等方式,不断增强员工的归属感和凝聚力。这种积极向上的企业文化氛围激发了员工的创新精神和工作热情,为公司的持续发展提供了强大的动力。

问答坊 | AI 解惑

《基于PROTEUS的ARM虚拟开发技术》周景泰老师 PDF

《基于PROTEUS的ARM虚拟开发技术》周景泰老师 PDF…

查看全部问答>

想做一个USB的图像采集卡

我最近正在用cy7c68013+FPGA+TVP5150做一个图像采集卡,现在板子原理图刚画完,固件程序用CYPRESS提供的例程修改一下就行,就差USB的Windows驱动了,不知道谁有兴趣啊。 PS:把我画的原理图上传一下吧,请大家帮我看看有没有错误,另外,FPGA是否 ...…

查看全部问答>

MCS-51.96 系列单片机原理及应用

本书详细介绍MCS-51系列单片微型计算机的硬件结构、组成原理和指 令系统。结合应用实例简述系统的扩展和组成方法,并有较完整的应用系统例子供读者参考。书中的实用程序可为读者在研制软件时提供捷径。 本书还以相当的篇幅介绍具有串行通信接口的 ...…

查看全部问答>

入门求助:2440的EINT中断驱动

准备实现EINT中断驱动,所以参看了SMDK2440中Userkey驱动。 在Userkey.cpp文件中,有如下函数 BOOL InitInterruptThread() {     ...     KeyEvent = CreateEvent(NULL, FALSE, FALSE, NULL);      &nbs ...…

查看全部问答>

LwIP移植

    这段时间在搞一个windows下移植LwIP,操作系统模拟层已经搞定,基本架构也搭好了。收包木有问题,关键是发包(注:UDP包)的时候,通过抓包发现,lwip_sendto()之后并没有把报文发出去,只是发送了arp请求,然后等了好久tcpip_thre ...…

查看全部问答>

边沿指令的一种用途

在西门子S7-200系列中,边沿指令主要用于执行一次的情况,如若用自加指令使VW2中的数值加1,存于VW2中,不能直接使位指令I0.0接在自加指令的使能位上,,通过I0.0的置位/复位使VW2中的数值自加1,因为PLC的循环扫描周期很短,当I0.0=1时,每个扫描周 ...…

查看全部问答>

微机原理与接口技术实验

请教一个实验,微机原理与接口技术:用8255和8253让8个LED灯显示字符A到Z的ASCII码,每个字符显示两秒。写出设计原理、画电路图并编写程序…

查看全部问答>

【设计工具】Xilinx+FPGA的功耗优化设计方法

Xilinx+FPGA的功耗优化设计方法——设计人员可利用多种工具和技术来满足功率预算要求         解决方案              SOLUTION   &n ...…

查看全部问答>

ICKey平台荣获“最佳电子商务分销商”大奖

ICKey平台荣获“最佳电子商务分销商”大奖 《国际电子商情》“2012年度中国电子元器件分销商调查”活动圆满落幕,并于2012年6月6日在深圳马哥孛罗酒店举行了2012 年电子元器件分销商供应链峰会暨卓越分销商颁奖礼.上海云汉电子有限公司(IC ...…

查看全部问答>

大家分析下 这个程序中的USART接收终端为什么 没法响应

#include #include #define         F_CPU        7372800                // 单片机主频为7.3728MHz,用于延时子程序 #include #include #i ...…

查看全部问答>