简单就是说相当于芯片的身份证,可以区分每一个芯片

唯一设备标识符最适合:
● 用作序列号(例如 USB 字符串序列号或其它终端应用程序)
● 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以
提高 Flash 中代码的安全性
● 激活安全自举过程等
96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远
不能改变这些位。
96 位的唯一设备标识符也可以以单字节/ 半字 / 字等不同方式读取,然后使用自定义算法连接
起来。

芯片固件加密破解:

基本上任何固件加密都是可以被破解的,当然使用uid只是会增大破解的难度,如果当我们使破解的难度几乎等同于重新写代码的难度的时候,这个时候就算是加密的成功了。

代码思路:

第一次进入芯片,将芯片身份证固件uid读到静态区flash中

第二次进入芯片,就会将读取芯片uid,如果当前固件被读出到其他芯片中,会判断之前的uid

之前不一样,就会报错

#define uid1            (0x1FFF7A10)
#define uid2            (0x1FFF7A14)
#define uid3            (0x1FFF7A18)static const int id1 = 0xffffffff;
static const int id2 = 0xffffffff;
static const int id3 = 0xffffffff;
static const int id4 = 0xffffffff;
static const int id5 = 0xffffffff;
static const int id6 = 0xffffffff;/* 第一次进入,初始化uid */
if ((0xffffffff == id1) && (0xffffffff == id2) && (0xffffffff == id3) &&(0xffffffff == id4) && (0xffffffff == id5) && (0xffffffff == id6))
{id1 = *(uint32_t*)(0x1FFFF7E8);id2 = *(uint32_t*)(0x1FFFF7E8 + 4);id3 = *(uint32_t*)(0x1FFFF7E8 + 8);id4 = 0x11111111;id5 = 0x22222222;id6 = 0x33333333;return success;
}
/* 判断是否是该芯片 */
else if((*(uint32_t*)(0x1FFFF7E8) == id1) && (*(uint32_t*)(0x1FFFF7E8 + 4) == id2) && (*(uint32_t*)(0x1FFFF7E8 + 8) == id3) &&(0x11111111 == id4) && (id5 == 0x22222222) && (0x33333333 == id6))
{return success;
}
else
{return error;
}

【单片机】唯一设备ID UID固件加密相关推荐

  1. 漫谈唯一设备ID,android开发工程师

    设备ID,简单来说就是一串符号(或者数字),映射现实中硬件设备. 如果这些符号和设备是一一对应的,可称之为"唯一设备ID(Unique Device Identifier)" 不幸 ...

  2. Android专业获取设备信息如:AndroidID、唯一设备ID、制造商、型号、版本号、版本码等

    在开发app中很多时候需要获取设备的基本信息等运用到项目中,就需要一些方法获取,网上资源中方法五花八门,有的还获取不到,令人头大,话不多说,鄙人整理了一套方法,话不多说真机测试如下>上图: 接下 ...

  3. Android获得手机唯一设备ID号

    在安卓的工程中,往往需要获得手机设备唯一的ID号,在这个我们可以用TelephonyManager类来获得: 首先声明一个TelephonyManager类的对象: private Telephony ...

  4. node生成唯一设备id(node-machine-id)

    npm安装: npm install node-machine-id yarn安装: yarn add node-machine-id //有 异步,同步 两种生成方式 import {machine ...

  5. 【MCU】用stm32的UID给固件加密(重点在加密)

    1.聊一聊 演员这首歌大家应该再熟悉不过了,其中印象最为深刻的歌词是:"简单点,说话的方式简单点......",说话真的是一门技术,同时也是门艺术! 今天跟大家带来的知识不算难,现 ...

  6. 是否有唯一的Android设备ID?

    Android设备是否具有唯一的ID,如果是,则使用Java访问它的简单方法是什么? #1楼 有许多不同的方法可以解决这些ANDROID_ID问题(有时可能为null或特定模型的设备总是返回相同的ID ...

  7. 简述Android手机常用的设备ID

    一.简介 1.设备ID: 简单来说就是一串符号(或者数字)类似于我们的身份证号,映射现实中硬件设备.排除特殊情况(模拟器等),设备ID和设备是一一对应的,我们称之为"唯一设备ID(Uniqu ...

  8. Android中获取唯一的id

    文章目录 Android唯一设备ID现状 IMEI MAC地址 唯一Id实现方案 那些硬件适合硬件标识 工具类 Android唯一设备ID现状 设备ID,简单来说就是一串符号(或者数字),映射现实中硬 ...

  9. Android - 获取移动端设备ID标识,分情况

    目前需求:未登录的用户(游客)需要与客服实时通讯,要怎么区分用户消息? 思路:获取游客的设备ID,以此为标识传给服务器来查询/发送信息,一设备为一用户. 那设备ID是什么?怎么获取呢? 设备ID,就是 ...

最新文章

  1. 2020十大热门机器学习项目
  2. Sprint第二个冲刺(第八天)
  3. ASP.NET URL重写实现IHttpHandler接口
  4. js可以放gif吗_你清楚,一瓶开过的葡萄酒,最长可以放多久的时间吗?
  5. 【WC2018】即时战略
  6. SAP Hybris和Netweaver的租户隔离(Tenant isolation)机制设计
  7. 基础功能2-python修改文件中所有文件名
  8. C#制作网站挂机程序
  9. 苹果HomeKit生态深度解析,在智能家居领域后发制人?
  10. Floating IP
  11. java 加密并打包_我想把java文件先加密然后打包,请高手指教怎么加密,有那种好的加密算法吗?...
  12. uni-app swiper设置自定义高度
  13. 数据的存储结构有哪些?
  14. 论文精读报告-How to Read a Paper
  15. 小白学习Linux命令
  16. web前端大作业--黑色电影资讯博客网页设计(电影主题-HTML+CSS+JavaScript)
  17. 斩获iOS美国游戏榜单TOP2 触宝游戏战略进入高速发展轨道
  18. 【总结】一篇关于flask框架开发的知识点汇总手册(纯干货)
  19. 学习SpringSecurity这一篇就够了
  20. java 泛型 协变_泛型的逆变与协变

热门文章

  1. 两个时间序列之间的DTW(Dynamic Time Warping)距离度量
  2. es5 es6 互相转换
  3. AJAX与JavaScript脚本语言
  4. 台灯有必要买AA级的吗?精选专业护眼的国AA级台灯
  5. JZOJ ???? dexterity
  6. 小米离「高富帅」还有多远?
  7. 一个很有趣的问题:那些用QQ邮箱发应聘邮件的人啊(附:怎样写一封得体的电子邮件)...
  8. jenkins配置master-slave并发布dubbo服务
  9. 使用切换器导致一台电脑分辨率被降低的解决方法
  10. 忆享科技聚焦|数字中国发展报告、政务云市场规模、网络安全、中小企业数字化……近期热点资讯一览