搜索
bottom↓
回复: 12

看LGT头文件,有关加密方法讨论

[复制链接]

出0入0汤圆

发表于 2012-4-27 10:53:38 | 显示全部楼层 |阅读模式
LGT头文件里面有这么几行:

/* GUID */
#define GUID3        (*(volatile unsigned char *)0xF6)
#define GUID2        (*(volatile unsigned char *)0xF5)
#define GUID1        (*(volatile unsigned char *)0xF4)
#define GUID0        (*(volatile unsigned char *)0xF3)

/* Oscillator Calibration Register */
//#define OSCCAL        (*(volatile unsigned char *)0x66)
#define  PRESETN        6
#define  OSCCAL5        5
#define  OSCCAL4        4
#define  OSCCAL3        3
#define  OSCCAL2        2
#define  OSCCAL1        1
#define  OSCCAL0        0


AVR在程序里面只能读出OSCCAL0,其他校验字节读不出来

LGT头文件定义有OSCCAL0~5,是否可以通过程序把这几个字节都读出来,如果能读出的话,相当于又多了5个唯一ID进行加密
再通过现有的GUID进行组合加密,还有网站公布的加密算法,那么强度就不可小窥

有演示板的朋友测试下,看能不能读出其他校验字节

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-27 10:57:16 | 显示全部楼层
这个就让应用者怎么去给自己的程序加密,算法比较灵活。

好的算法就OSCCAL就足够。

出0入0汤圆

 楼主| 发表于 2012-4-27 11:07:02 | 显示全部楼层
AVR程序中只能读出一个OSCCAL字节,这样的话才255个种子,编程器虽然能全不读出,但是无法参与程序中运算

LGT头文件定义了6个OSCCAL,是不是说可以通过 (*(volatile unsigned char *)0x66) + ??? 都读出这些
OSCCAL字节,或者其他方法可以读出

出0入0汤圆

 楼主| 发表于 2012-4-27 11:20:06 | 显示全部楼层
可能我表达不清楚,我想问的是:
LGT能否在程序中就可以读出6个字节的OSCCAL,而不是通过编程器读出

出0入0汤圆

发表于 2012-4-27 14:02:13 | 显示全部楼层
loveavr999 发表于 2012-4-27 11:20
可能我表达不清楚,我想问的是:
LGT能否在程序中就可以读出6个字节的OSCCAL,而不是通过编程器读出 ...

当然可以。

那是一个寄存器,是可读写的。

出0入0汤圆

发表于 2012-4-27 14:16:05 | 显示全部楼层
loveavr999 发表于 2012-4-27 11:20
可能我表达不清楚,我想问的是:
LGT能否在程序中就可以读出6个字节的OSCCAL,而不是通过编程器读出 ...

有可能总共只有一个OSCCAL,而不是6个

猜的,我没用过,我买的LGT还没到

出0入0汤圆

 楼主| 发表于 2012-4-27 14:59:32 | 显示全部楼层
logicgreen 发表于 2012-4-27 14:02
当然可以。

那是一个寄存器,是可读写的。

这个明白,
比如AVR,只能读出1M的校验值,2M、4M、8M 必须通过编程器才能读出

LGT头文件定义了6个,是不是有1M、2M、4M、8M、12M、16M (只是猜测),而且和AVR不一样,都可以通过程序读出,无需通过编程器读

要不就很难理解头文件为什么这样定义了:
//#define OSCCAL        (*(volatile unsigned char *)0x66)
#define  PRESETN        6
#define  OSCCAL5        5
#define  OSCCAL4        4
#define  OSCCAL3        3
#define  OSCCAL2        2
#define  OSCCAL1        1
#define  OSCCAL0        0

我的理解是:
OSCCAL = (*(volatile unsigned char *)0x66)
读0x66可以读出 OSCCAL0
读 0x66 +1 可以读出 OSCCAL1
。。。。

如果真能读出来的话,就真是一大喜讯,唯一ID可以增加6个字节,可以参与运算的加密种子多了6个字节,难度加大很多

我们公司有款产品就是因为AVR才1个字节的OSCCAL进行加密,被别人破解了,所以才比较关注这个唯一ID
AVR读出hex文件在深圳花几百元就能够拿到,用AVR都没有什么兴趣了

LGT又让我们看到了希望,加油啊LGT

出0入0汤圆

 楼主| 发表于 2012-4-27 15:03:32 | 显示全部楼层
mowin 发表于 2012-4-27 14:16
有可能总共只有一个OSCCAL,而不是6个

猜的,我没用过,我买的LGT还没到

肯定不止1个,只是其他是否可读,就不清楚了

还没有买LGT套件,邮购部成品版缺货,上架后再买测试

出0入0汤圆

发表于 2012-4-27 15:04:10 | 显示全部楼层
loveavr999 发表于 2012-4-27 14:59
这个明白,
比如AVR,只能读出1M的校验值,2M、4M、8M 必须通过编程器才能读出

仁兄理解有误。

OSCCAL只是一个RC16Mhz的校准值,它可以使RC 16Mhz 在10%左右内调整。

RC 16Mhz 是经过 CLKPR 寄存器分频后再给系统的。

出0入0汤圆

 楼主| 发表于 2012-4-27 15:26:47 | 显示全部楼层
感谢logicgreen,

OSCCAL出厂的时候应该进行校验过吧,在校验的时候,每个芯片的OSCCAL应该都不一样,那么可以理解:这个值如果我们不去改写的话是固定的,假设我用外部晶振,不去改写这些值,完全可以用OSCCAL当作加密种子,记得早期论坛有篇文章有朋友介绍过 OSCCAL 加密方法

现在的问题是LGT其他校验值是否也可以读出,而不只能读1个字节,从头文件隐约看到点什么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-27 15:34:24 | 显示全部楼层
发帖有字数限制啊,后面的字没有了,怎么不全
----------------------

当然LGT有4个字节的唯一ID,这个很爽啊,但是如果再配合6个字节的OSCACAL,那么就超爽了
估计能让解密者花更多的时间打转

/* GUID */
#define GUID3        (*(volatile unsigned char *)0xF6)
#define GUID2        (*(volatile unsigned char *)0xF5)
#define GUID1        (*(volatile unsigned char *)0xF4)
#define GUID0        (*(volatile unsigned char *)0xF3)

出0入0汤圆

发表于 2012-4-27 15:43:26 | 显示全部楼层
logicgreen 发表于 2012-4-27 15:04
仁兄理解有误。

OSCCAL只是一个RC16Mhz的校准值,它可以使RC 16Mhz 在10%左右内调整。

厂家mm,到底有几个OSCCAL?给个权威答复,谢谢

出0入0汤圆

发表于 2012-4-27 15:48:26 | 显示全部楼层
mowin 发表于 2012-4-27 15:43
厂家mm,到底有几个OSCCAL?给个权威答复,谢谢

只有一个OSCCAL, 下面几个是bit定义。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 16:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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