找回密码
 立即注册
查看: 1123|回复: 16

关于ID运算加密方法的测试

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-22 16:12:36 | 显示全部楼层 |阅读模式
本帖最后由 xxkj2010 于 2024-7-22 17:42 编辑

STC 芯片的加密可以使用ISP中的ID加密工具,

001.jpg

今天就测试一下这个加密方法是否有效
芯片用STC8H8K64U-TSSOP20,程序用的是STC8H2K08U-USB_to_2_UART-20240618\12-CDC(Communication Device Class)协议范例 - USB-CDC转单串口修改,加入定时闪灯程序(这样有利于观察),mail.c代码如下:
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCAI.com ---------------------------------------------*/
  8. /* --- BBS: www.STCAIMCU.com  -----------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
  11. /*---------------------------------------------------------------------*/
  12. /*************  功能说明    **************
  13. 本例程基于STC USB转双串口核心功能实验板进行编写测试。
  14. CDC(Communication Device Class)协议范例
  15. 将代码下载到核心板后,在PC端可识别为USB-CDC串口设备
  16. USB-CDC转UART2(P1.0,P1.1)串口功能,通过核心板S-TXD2,S-RXD2接口进行收发
  17. USB-CDC从电脑接收的数据通过S-TXD2,S-RXD2接口发送
  18. S-TXD2,S-RXD2接口收取的数据通过USB-CDC发送给电脑
  19. 串口的数据位只支持8位,停止位只支持1位
  20. 校验位可支持:无校验、奇校验、偶校验、1校验和0校验
  21. 支持自定义波特率
  22. 下载时, 设置IRC工作频率为 24MHz.
  23. ******************************************/
  24. #include "stc.h"
  25. #include "usb.h"
  26. #include "uart.h"
  27. void sys_init();
  28. u32 i;
  29. void Timer2_Init(void)                //10毫秒@24.000MHz
  30. {
  31.         AUXR &= 0xFB;                        //定时器时钟12T模式
  32.         T2L = 0xE0;                                //设置定时初始值
  33.         T2H = 0xB1;                                //设置定时初始值
  34.         AUXR |= 0x10;                        //定时器2开始计时
  35.         IE2 |= 0x04;                        //使能定时器2中断
  36. }
  37. void main()
  38. {
  39.                 P_SW2 |= 0x80;  //扩展寄存器(XFR)访问使能
  40.                 P3M0 =  0x08; P3M1 =  0x00;
  41.                 #pragma  asm
  42.                         ORG 1000H
  43.                         DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 000H
  44.                 #pragma endasm
  45.     uart_init();
  46.     usb_init();
  47.                 Timer2_Init();                //10毫秒@24.000MHz
  48.            
  49.     EA = 1;
  50.    
  51.     while (1)
  52.     {
  53.         uart_polling();
  54.     }
  55. }
  56. void Timer2_Isr(void) interrupt 12        
  57. {
  58.         i++;
  59.         if(i>50)
  60.         {
  61.                 i=0;
  62.                 P33=!P33;
  63.         }
  64. }
复制代码
上述故意把1000H后的第6位先改写为0x00,目的是让ISP写入运算后的ID号失效,
从而判断该程序运行的芯片不是原来的芯片,致使ID加密起作用。
烧写程序后,多次重新上电,看能否做到有时可以运行程序,有时不能运行程序,
结果:暂时看不到异常的情况
上述的测试是否得当,请大佬指教,谢谢!
哎,明天再通电试试了,希望ID加密真的起作用。


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:430
  • 最近打卡:2025-05-08 09:00:25
已绑定手机

77

主题

4874

回帖

8496

积分

超级版主

DebugLab

积分
8496
发表于 2024-7-22 18:21:47 | 显示全部楼层
不当。
运算后的ID应该由用户程序判断
这样操作:
ID运算写入指定地址后,下载,用软件去读,按照ID手动算一下对不对,对了就起作用了
换一个单片机,再读,应该不同了

点评

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5647  发表于 2024-7-22 21:29
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-05-08 00:01:49
已绑定手机

19

主题

3196

回帖

4956

积分

论坛元老

积分
4956
发表于 2024-7-22 18:37:51 来自手机 | 显示全部楼层
这个不是这样用的吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2025-05-09 00:12:09
已绑定手机

6

主题

285

回帖

867

积分

荣誉版主

积分
867
发表于 2024-7-22 19:04:38 | 显示全部楼层
总之明白原理,就可以灵活运用,使用各样的加密规则策略,一定可行的。关键点就是ID是唯一、不可复制的! Yeah~~~.


9
(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-22 21:27:24 | 显示全部楼层
Debu*** 发表于 2024-7-22 18:21
不当。
运算后的ID应该由用户程序判断
这样操作:

我本来也觉得是这个道理,但大佬说不是这个道理。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-22 21:29:43 | 显示全部楼层
so*** 发表于 2024-7-22 18:37
这个不是这样用的吧

那该怎么用呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-05-08 00:01:49
已绑定手机

19

主题

3196

回帖

4956

积分

论坛元老

积分
4956
发表于 2024-7-22 21:33:12 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-22 21:35:00 | 显示全部楼层
如果用代码方法对ID进行判断的话,生产一万台机器就得收集一万个ID号,修改一万次原代码,这样很麻烦的。
大佬说,我这样的理解是错误的。
这视频教程的意思好像是说芯片会自动识别,自动搞乱非正确ID号的程序运行:
传统加密的笑话, STC对加密的延申发展,放心的【远程升级】,视频讲解 - 远程现场升级 =【发布项目程序+程序加密后传输+USB下载】,ID号加密/通过ID号控制下载 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区  https://www.stcaimcu.com/forum.p ... p;extra=&page=1

点评

校验失败如何错误运行,是用户代码实现的,需要自己编写 收集ID号是校验芯片ID号在列表内才能下载,和这个不是一个东西  详情 回复 发表于 2024-7-22 23:29
代码不用动,算法和STCAIISP保持一致就行,下载过程中,STCAIISP会自动根据ID修改指定位置写入的数据,程序中根据全球唯一ID校验指定位置的数据,不需要手动操作  详情 回复 发表于 2024-7-22 23:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-22 21:36:04 | 显示全部楼层
so*** 发表于 2024-7-22 21:33
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4085第一个视频就是讲这个的

003.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:430
  • 最近打卡:2025-05-08 09:00:25
已绑定手机

77

主题

4874

回帖

8496

积分

超级版主

DebugLab

积分
8496
发表于 2024-7-22 23:24:12 | 显示全部楼层
xxkj*** 发表于 2024-7-22 21:35
如果用代码方法对ID进行判断的话,生产一万台机器就得收集一万个ID号,修改一万次原代码,这样很麻烦的。
...

代码不用动,算法和STCAIISP保持一致就行,下载过程中,STCAIISP会自动根据ID修改指定位置写入的数据,程序中根据全球唯一ID校验指定位置的数据,不需要手动操作
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 03:14 , Processed in 0.143471 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表