关于ID运算加密方法的测试
本帖最后由 xxkj2010 于 2024-7-22 17:42 编辑STC 芯片的加密可以使用ISP中的ID加密工具,
今天就测试一下这个加密方法是否有效
芯片用STC8H8K64U-TSSOP20,程序用的是STC8H2K08U-USB_to_2_UART-20240618\12-CDC(Communication Device Class)协议范例 - USB-CDC转单串口修改,加入定时闪灯程序(这样有利于观察),mail.c代码如下:
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCAI.com ---------------------------------------------*/
/* --- BBS: www.STCAIMCU.com-----------------------------------------*/
/* --- QQ:800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
/*************功能说明 **************
本例程基于STC USB转双串口核心功能实验板进行编写测试。
CDC(Communication Device Class)协议范例
将代码下载到核心板后,在PC端可识别为USB-CDC串口设备
USB-CDC转UART2(P1.0,P1.1)串口功能,通过核心板S-TXD2,S-RXD2接口进行收发
USB-CDC从电脑接收的数据通过S-TXD2,S-RXD2接口发送
S-TXD2,S-RXD2接口收取的数据通过USB-CDC发送给电脑
串口的数据位只支持8位,停止位只支持1位
校验位可支持:无校验、奇校验、偶校验、1校验和0校验
支持自定义波特率
下载时, 设置IRC工作频率为 24MHz.
******************************************/
#include "stc.h"
#include "usb.h"
#include "uart.h"
void sys_init();
u32 i;
void Timer2_Init(void) //10毫秒@24.000MHz
{
AUXR &= 0xFB; //定时器时钟12T模式
T2L = 0xE0; //设置定时初始值
T2H = 0xB1; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
IE2 |= 0x04; //使能定时器2中断
}
void main()
{
P_SW2 |= 0x80;//扩展寄存器(XFR)访问使能
P3M0 =0x08; P3M1 =0x00;
#pragmaasm
ORG 1000H
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 000H
#pragma endasm
uart_init();
usb_init();
Timer2_Init(); //10毫秒@24.000MHz
EA = 1;
while (1)
{
uart_polling();
}
}
void Timer2_Isr(void) interrupt 12
{
i++;
if(i>50)
{
i=0;
P33=!P33;
}
}
上述故意把1000H后的第6位先改写为0x00,目的是让ISP写入运算后的ID号失效,
从而判断该程序运行的芯片不是原来的芯片,致使ID加密起作用。
烧写程序后,多次重新上电,看能否做到有时可以运行程序,有时不能运行程序,
结果:暂时看不到异常的情况。
上述的测试是否得当,请大佬指教,谢谢!
哎,明天再通电试试了,希望ID加密真的起作用。
不当。
运算后的ID应该由用户程序判断
这样操作:
ID运算写入指定地址后,下载,用软件去读,按照ID手动算一下对不对,对了就起作用了
换一个单片机,再读,应该不同了 这个不是这样用的吧 总之明白原理,就可以灵活运用,使用各样的加密规则策略,一定可行的。关键点就是ID是唯一、不可复制的! Yeah~~~.
9 DebugLab 发表于 2024-7-22 18:21
不当。
运算后的ID应该由用户程序判断
这样操作:
我本来也觉得是这个道理,但大佬说不是这个道理。 soma 发表于 2024-7-22 18:37
这个不是这样用的吧
那该怎么用呢? xxkj2010 发表于 2024-7-22 21:29
那该怎么用呢?
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4085第一个视频就是讲这个的 如果用代码方法对ID进行判断的话,生产一万台机器就得收集一万个ID号,修改一万次原代码,这样很麻烦的。
大佬说,我这样的理解是错误的。
这视频教程的意思好像是说芯片会自动识别,自动搞乱非正确ID号的程序运行:
传统加密的笑话, STC对加密的延申发展,放心的【远程升级】,视频讲解 - 远程现场升级 =【发布项目程序+程序加密后传输+USB下载】,ID号加密/通过ID号控制下载 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4085&extra=&page=1 soma 发表于 2024-7-22 21:33
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4085第一个视频就是讲这个的
xxkj2010 发表于 2024-7-22 21:35
如果用代码方法对ID进行判断的话,生产一万台机器就得收集一万个ID号,修改一万次原代码,这样很麻烦的。
...
代码不用动,算法和STCAIISP保持一致就行,下载过程中,STCAIISP会自动根据ID修改指定位置写入的数据,程序中根据全球唯一ID校验指定位置的数据,不需要手动操作
页:
[1]
2