单片机程序中利用ID号进行ID号加密
单片机程序中使用ID加密
在单片机程序设计中,使用ID加密是目前比较流行的手段,其中最有代表的就是STC单片机,只要能见到STC的广告就可以看到他们关于加密的宣传,从STC开始销售单片机就宣传他们的产品无法解密,但是往往是最好解密的单片机,比如STC89系列单片机解密,是51单片机里最容易解密的,可以直接用软件读出程序,STC在其它技术上没有看到多大的宣传,但是在无法解密上是随处宣传,可见下了一饭工夫。
例如目前在其网站上宣传的:采用宏晶第6代加密技术,有全球唯一ID号无法解密,性能更好,大批量稳定生产STC10xx系列/STC11xx系列STC12C5Axx/STC12C52xxSTC12C56xx系列请优先选择使用,管脚直接兼容传统8 9C/S系列,解决了全球传统89系列单片机全部都已被轻易解密的问题,老产品继续生产。
这只是商家的一种销售手段,其实目前STC所有单片机都可以解密,虽然宏晶公司下了一翻苦心,连编程器都没有读芯片的功能,但是作为解密工程师自己开发了解密工具,可以读STC的单片机程序。
例如在ST C单片机写入以下代码就可以实现了ID加密:unsigned char idata *p;
unsigned char i;
unsigned char idata id[7];
i = 0;
for(p=0xf1; p<=0xf7; p++) id[i++] = *p;
有的单片机不具有STC宣传的那样的全球唯一的ID号,是不是就不能采用ID加密了呢?答案是否定的。
比如很多设计者采用了DLASS的DS18B20,这个18B20虽然是个温度传感器,但是具有唯一ID,如果把DS 18B20和单片机连接,让单片机去验证DS18B20的ID,这样也可以实现唯一ID加密,即使把单片机解密了,拷贝后直接无法使用。
使用了ID加密可以提高解密的难度,但是不是无法解密,很多公司的的宣传只是一种夸张,什么世界第一、无法解密。
一种基于唯一ID的单片机程序综合加密方法
• 18•本文从单片机系统的组成及技术特点出发,分析了单片机系统常见的加密方法及其优缺点,充分利用解密中的汇编代码可读性差的特点,提出了一种基于唯一ID 的单片机程序综合加密方法。
单片机又称为微控制单元,或单芯片微型计算机,其广泛应用于智能仪表、实时工控、通讯设备、导航系统、家用电器等各种领域。
一个单片机产品由硬件和软件组成,硬件的通用性和可见性,硬件加密一般难以实施,加密措施通常通过软件实现。
如何保护好自己的单片机技术成果和知识产权,提高解密成本,是单片机开发者在产品设计中必需考虑的要素之一。
1 常见的加密与解密分析解密的目的是为了省去耗时耗力的开发过程,轻易地做出一个功能相同或相似的产品。
解密过程的第一步是复制硬件,硬件一般由通用器件和印制电路板组成,一般没复制难度;然后读取出单片机的程序文件,基本都可以实现,而且越是使用量大的单片机,读取技术越成熟;最后破解程序中的加密措施,让程序烧录到新的单片机在复制的硬件上正常运行,完成破解。
下面先分析常见的加密方防止通用的编程调试工具读取;关闭调试接口,如stm32系列的JTAG 接口和SWD 接口,此方法可以有效防止常规的破解工具读取,增加一定的破解难度;切断物理意义上的通讯线路,这种方法保护更有效,但从此不能再对单片机写入程序,对于售后服务来说是一种风险。
如stm32系列单片机的存储器读保护级别。
1.3 使用专业的加密芯片使用加密芯片的成本更加高,对于成本敏感的单片机产品接受度很低。
1.4 使用唯一ID号一些单片机在出厂的候芯片内部给予了一个唯一的ID 。
选择一种特殊的算法,利用这个唯一的ID ,产生一组数据X ,把这个数据预先烧录到存储器里。
单片机上电初始化的时候,先读出存储器里的这个数据X ,然后读出自身的ID 号通过加密算法算出一个值Y ,然后比较XY 值是否一样,如果一样则继续工作,否则停止工作,这是最实用的一种方法。
1.5 利用外部电路参数校正对于一些非纯数字电路,电路自身存在有较大的参数偏差,利用软件校正参数偏差,使得每一块电路板的程序电路一种基于唯一ID的单片机程序综合加密方法天地(常州)自动化股份有限公司 陈 贤法及其特点。
关于stm32单片机,用id加密,明码安全问题分析
关于stm32单片机,用id加密,明码安全问题分析
stm32 提供的id ,可以让我们进行软件加密,
这个功能挺好的,
但是我研究了一下明码加密的弱点,
贴出来,给大家研究一下,
写了一段简单的代码,如下,效验id
程序就是输出ok1,来代表id 的明码对比,
然后我们生成hex 文件,
这个hex 文件,就是我们明码加密后的烧写文件,
当这个文件烧写到指定的id 设备上,才能运行,我们测试是输出ok1; 加密过程已经ok,
下面
我们分析一下弱点,
单片机声明的常量,
编译器会进行编译,并固化到flash 区域,
基本上大多数单片机编译器都是这么做的,
所以就存在了安全问题,
我们用jlink 的软件, J-Flash ARM V4.08
读取或者加载我们的hex 文件,
我们为了便于分析,保存成1.c 文件,
用ue 打开分析,
很容易就找到了我们用于效验设备id 的对比数据:
看上面的数据,不用说了吧,
就是我们用于效验的对比数据,
所以,如果是高手, 还是要注意你的加密的算法,
明码是有其薄弱一面的,
还是谢谢大家看我的文章.
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
单片机 自动识别
单片机自动识别
随着科技的不断发展,单片机的应用越来越广泛。
单片机是指集成了中央处理器、存储器和输入/输出器的一种微处理器芯片,是现代电子产品中的核心部件之一。
单片机的自动识别技术指的是电子产品能够自动识别所连接的单片机型号以及其功能,并能自主进行配置和匹配。
这种自动识别技术不仅能够提高单片机的使用效率,还可以降低错误率,提高产品性能和可靠性。
单片机的自动识别技术主要包括软件自动识别和硬件自动识别两种方式。
软件自动识别是指通过软件程序实现对单片机型号和功能的识别,通常在系统启动或运行时自动执行。
硬件自动识别是指通过硬件电路实现对单片机型号和功能的识别,常用于产品设计中,可以实现自动配置和匹配。
软件自动识别技术主要包括通过读取单片机芯片内部的ID码、芯片型号等信息来识别单片机;通过对单片机进行扫描,利用CPU的ID 指令来获取单片机ID码;通过调用单片机的唯一硬件ID进行识别等方式。
这些技术实现简单,成本较低,但稳定性较差。
而硬件自动识别技术则可以通过芯片上的引脚、串行EEPROM、I2C 总线等方式实现。
它的稳定性更高,但成本相对较高。
硬件自动识别技术在存储器读写、中断控制、定时器等功能上运用广泛,大大提高了单片机的使用效率和可靠性。
在实际应用中,选择合适的自动识别技术非常重要。
需要根据产品需求、场景和成本等因素进行综合考虑。
总的来说,自动识别技术为电子产品的应用带来了更高的效率和可靠性,它的发展将推进电子产品的智能化和便捷化。
单片机全球唯一id的设计原理
单片机全球唯一id的设计原理
单片机全球唯一ID的设计原理是基于全球唯一标识符(GUID)或UUID。
这些ID是随机生成的,具有极低的重复概率,因此可以保证全球范围内的
唯一性。
UUID是一种128位的数字标识符,通常由32个十六进制数字组成,并按
照的格式分成五部分,例如:32位的厂商ID、16位的硬件序列号、8位的版本号、4位的日期和时间信息以及12位的随机数。
通过这种方式,UUID 可以确保在全世界的唯一性。
在单片机中,全球唯一ID通常被存储在一个非易失性的存储器中,例如ROM或者EEPROM。
当单片机启动或复位时,程序会读取这个ID并验证
其有效性。
如果ID损坏或丢失,则单片机可以通过预设的备份ID进行恢复。
这种设计原理可以防止单片机被克隆或复制,从而保护产品的知识产权和安全性。
同时,全球唯一ID还可以用于跟踪和记录单片机的生产、使用和维
修情况,有助于提高产品的可追溯性和质量控制。
51单片机应用程序实例
广告灯的左移右移
1. 实验任务
做单一灯的左移右移,硬件电路如图 4.1 所示,八个发光二极管 L1-L8 分别接在单 片机的 P1.0-P1.7 接口上,输出“0”时,发光二极管亮,开始时 P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0 亮,重复循环。
2. 电路原理图
图 4.1
每次送出的数据是不同,具体的数据如下表 1 所示
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 L8 L7 L6 L5 L4 L3 L2 1111111 1111110 1111101 1111011
P1.0 L1 0 1 1 1
说明
L1 亮 L2 亮 L3 亮 L4 亮
1110111 1 1101111 1 1011111 1 0111111 1
一键多功能按键识别技术
1.实验任务 如图 9.1 所示,开关 SP1 接在 P3.7/RD 管脚上,在 AT89S51 单片机的 P1 端口接有四 个发光二极管,上电的时候,L1 接在 P1.0 管脚上的发光二极管在闪烁,当每一次按 下开关 SP1 的时候,L2 接在 P1.1 管脚上的发光二极管在闪烁,再按下开关 SP1 的时 候,L3 接在 P1.2 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,L4 接在 P1.3 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,又轮到 L1 在闪烁了,如此轮 流下去。 2.电路原理图
单片机基础知识
XTAL1和XTAL2。
有两种时钟产生方式:内部方式和外部 方式。
内部时钟方式
内部有一个用于构成振荡器的高增益反相放大器,通 过在XTAL1和XTAL2端外接石英晶体作为定时元件。 C1和C2典型值 通常选择30pF左右。 晶体的振荡频率 在1.2MHz~12MHz之 间。 某些高速单片机 芯片的时钟频率已 达10空间:
片内程序存储器; 片外程序存储器;
片内数据存储器;
片外数据存储器。
程序存储器(ROM):用来存放程序和 始终要保留的数据。 数据存储器(RAM):用来存放程序运 行中所需要的常数和变量。当然,全局 数据也可以放在RAM中。
程序存储器(ROM)
FFFFH
片外ROM
单片机(又称微控制器)是在一块硅 片上集成了各种部件的微型计算机。 这些部件包括中央处理器CPU、数据 存储器RAM、程序存储器ROM、定 时器/计数器T/C和多种I/O接口电路。
1.2 8051的内部结构
1.2.1 中央处理器
8051的中央处理器CPU由运算器和控制 逻辑构成,其中包括若干特殊功能寄 存器(SFR)。
8051片内ROM为掩膜型, 在制造芯片时已将应 用程序固化进去,使它具有了某种专用功能; 内部程序不能改写, 不便于实验和开发。如 在实验调试中使用8051, 需在片外扩展可改 写的EPROM。
8031片内没有ROM, 使用时需外接ROM。 8751具有片内EPROM, 固化的应用程序可以方 便地改写。
外部时钟方式
常用于多片 MCS-51单片 机同时工作。
(2)8051的基本时序周期
振荡周期:指振荡源的周期,若为内部产 生方式,则为石英晶体的振荡周期。
时钟周期:(称S周期)为振荡周期的两倍, 时钟周期=振荡周期P1+振荡周期P2。
单片机基于唯一ID加密新算法探讨
前辈们针对唯一ID加密算法提供了格式各样的算法,我看后也是受益匪浅,先如今也和大家分享一下我的加密算法思路,共同探讨下此法是否可行。
用唯一ID,目的是逼迫盗版者需要反汇编修改代码。
1、完全写自己的armlink ,fromelf 等类似工具〔linux 开源代码〕,加入自己的一些东西,让生成的bin和公共的不一样,这样破解者如果用通用的armlink fromelf所产生的代码必然和自己的工具产生不一样,这个时候,破解者必须破解你加入的一些东西,不然程序完全不能运行。
armlink 可以产生很多自己定义的段,然后对各种段offset。
同时程序配合offset。
2、修改fromelf类似的工具,在把elf文件转化bin文件过程中,任何程序的路口地址都需要动态的偏移,这样,如果用常规fromelf转换,一定出错。
这也加大破解难度。
举个例子,比如我有A ,B两个程序,但是我B程序link后,在elf的时候B程序整体地址偏移0x04,而A函数调用B函数是通过偏移0x4调用的。
但是破解者,如果反汇编编译,那么B函数肯定不会编译0x4,那么A调用B是offset 0x4的,所以程序崩溃。
系统中,有多种偏移,那么破解者头就大了,必须断点调试什么的改,这样的破解,相信代价太高了。
以上思路的原则就是,结合编程c代码,link 和elf转换工具,把bin按照自己的思路组合,如果破解者反汇编,必须要匹配的link和elf工具,不然编译出来的代码不能运行。
如果非要破解,代价高的很。
以上就是我的观点,不知道是否可行,欢迎各位探讨。
很多人纠结ID的算法,这里我没有将,因为我的理解是,只要有唯一ID,然后做一个简单加密,论坛中也有很多高手说明了各种方法。
这里不再赘述!补充:很多前辈都已经讲了很多种基于唯一ID的加密方法。
而我的思路是在他们的方法基础上,让盗版者在反汇编这条路让更难走。
而我文章开头讲了,唯一ID的作用就是让盗版者走反汇编这条路。
STM8S系列单片机原理与应用(潘永雄)第1-5章章 (3)
第3章 存储器系统及访问
3.1 存储器结构 3.2 存储器读写保护与控制寄存器 3.3 Flash ROM存储器IAP编程
第3章 存储器系统及访问
3.1 存储器结构
在STM8S系统内,RAM存储区、EEPROM存储区、引 导ROM存储区、Flash ROM存储区,以及与外设有关的 寄存器(包括外设控制寄存器、状态寄存器、数据寄存器) 均统一安排在16 MB线性地址空间内,即内部地址总线为 24位,如图3-1所示。这样,无论是RAM、EEPROM、 Flash ROM,还是外设寄存器,其读、写指令的格式与操 作数的寻址方式等完全相同。
NAFR6 NAFR5 NAFR4 NAFR3 NAFR2 NAFR1 NAFR0 FFH
Reserved Reserved Reserved Reserved
LSI IWDG WWDG WWDG
00H
_EN
_HW
_HW _HALT
NLSI NIWDG NWWDG NWWDG
FFH
_EN
_HW
_HW _HALT
鉴于UBC存储区具有二级保护功能,可将中断向量 表、无须修改的程序代码及数表划入UBC区,而将需要 通过IAP编程方式改写的代码、数据放在主存储区内。
第3章 存储器系统及访问
2. 主存储区 UBC存储区外的Flash ROM存储区称为主程序区。如果 没有定义UBC,则主程序区起始地址为008080H单元,即中 断入口地址表外的所有Flash ROM单元均属于主程序区。如 果定义了UBC存储区,则UBC存储区之上的所有Flash ROM 单元属于主程序区。
LDW X, 0100H ; 将0100H单元内容送XH寄存器,将 0101H单元内容送XL寄存器—对齐
单片机原理及应用期末考试必考知识点重点总结
单片机概述:单片机是微单片微型计算机的简称,微型计算机的一种。
它把中央处理器(CPU),随机存储器(RAM),只读存储器(ROM),定时器\计数器以及I\O接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。
字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位数称为“字长",字长标志着精度,MCS—51是8位的微型计算机。
89c51 是8位(字长)单片机(51系列为8位)单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。
由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单,工作可靠稳定.单片机软件系统包括监控程序,中断、控制、初始化等用户程序。
一般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码)。
1.1单片机的半导体工艺一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点;另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有CMOS的低功耗的特点.例如:8051的功耗是630mW,80C51的功耗只有110mW左右。
1。
2开发步5骤:1.设计单片机系统的电路2。
利用软件开发工具(如:Keil c51)编辑程序,通过编译得到。
hex的机器语言。
3.利用单片机仿真系统(例如:Protus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。
4。
借助单片机开发工具软件(如:STC_ISP下载软件)读写设备将仿真中调试好的.hex程序拷到单片机的程序存储器里面.5.根据设计实物搭建单片机系统.2。
1MCS-51单片机的组成:(有两个定时器)CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等.工作过程框图如下:运算器组成:8位算术逻辑运算单元ALU(Arithmetic Logic Unit)、8位累加器A(Accumulator)、8位寄存器B、程序状态字寄存器PSW(Program Status Word)、8位暂存寄存器TMP1和TMP2等。
单片机下载线使用说明
AVR/S51单片机并口ISP下载线AVR和ATMEL的AT89S系列单片机可以使用ISP下载线在线编程擦写,即不必将IC芯片拆下,直接在电路板上进行程序修改、下载等操作。
这样对程序的调试和升级都很方便。
ISP下载线的线路很简单,适合自己动手制作。
本站为了给广大AVR/S51单片机业余爱好者提供一条通用的ISP下载线,在一般的开发过程中可以一线打天下,特制作了支持所有AVR系列和AT89S系列(包含AT89S51/52)的并口下载线。
并口下载线内部使用了HC244芯片对信号进行隔离,带5.1V过压保护,具有二极管电压隔离,可防止误插到JTAG座时的目标板电源保护。
本站做的ISP下载线,其接口与双龙AVR所有开发板兼容的排列。
具体管脚排列如下:本并口ISP下载线具有如下特点:1、支持所有双龙SL系列AVR/AT89S单片机开发实验器,管脚与双龙所有AVR开发板兼容。
2、支持的器件为ATMEL 公司的AT89S 系列(包含AT89S51/52)和AVR系列。
3、支持的烧录文件格式:INTEL格式的HEX文件、EEP文件,二进制BIN文件。
4、支持缓冲区数据修改和保存,缓冲区中的数据可以保存为二进制BIN文件,INTEL格式的HEX或EEP文件。
5、本软件的OS平台可以是WIN98ME、WIN2K、WINXP。
操作使用说明:1、本程序除了有编程所需的各项功能外,还具备芯片ID 码校验、序列号产生、内部RC振荡校准、熔丝配置等功能。
2、当使用序列号产生、内部RC 振荡校准、熔丝配置等功能时,会自动弹出对话窗口,供用户选择。
3、序列号产生、内部RC振荡校准常数的保存地址默认为FLASH存贮器的尾部,用户可以自己修改存放地址及序列号的长度;对有EEPROM 存贮器的芯片,还可以选择保存的EEPORM存贮器中。
4、在熔丝配置窗口,可以直接对熔丝进行编程和读取,但要注意您的选择可能破坏ISP 编程所需的时钟条件。
