我刚刚接触单片机不久,下面讲到的方法绝对是我自己思索出来的,保证原创!
如果别人和我的思路一样,纯属巧合,也请各位大侠们别拍砖,也同时帮我分析一下这种方法可不可行!
我一直想对辛辛苦苦编写出来的单片机程序进行加密,但无从下手,大家知道,像S51、S52这类型的ISP下载的MCU,你即然可以ISP写入,
别人也很容易读取,写的程序一样被人家偷_窥无疑。我在网上搜索良久,找的方法无疑就三种:
1.使用有加密功能的单片机,但现在解密的编程器大把,很快就把你的程序偷取了。
2.把单片机的管脚烧毁,无疑这种方法最好,但是没有人提供正确的烧断步骤。为此我特地发了一个贴讨论过,都没有人知道怎么烧!
3.程序内部加密,但是你的板如果能正常运行,别人也仿照和你的板一模一样,别人也一样可以正常运行。这个方法不可行。
我自己就想,硬件烧断管脚我不会,那我就采用EEPROM(AT24C02)存储器进行加密,把加密值放入EEPROM中。
第一:
例如,我做一个4*4键盘的密码锁的电磁门锁产品。用的是AT24C02来存储用户的设置密码,假设地址1和地址2用来存放用户设置的密码,而地址10
和地址11、地址12用来存放我的加密值。我只要在程序中判断:地址10+地址11=地址12,那么条件成立,程序正常运行。否则就是盗版的,
我会让程序在24小时后陷入死循环锁坏,让用户开不了门,非得破门而入,让用户去投诉盗版公司,让他们的生意做不成。呵呵,想到这里我就想笑。
(注;加密值是我事先写入EEPROM中,并不会在产品程序中写入,这样的话,盗版的人就不知道我有加密过,给他们认为这是一个无加密的产品)
第二:
第二个产品就是烘烤箱,例如烘烤各类果实的果干。使用的是AT89S52和AT24C02和DS18B20,我的加密值同样也放在EEPROM中,大家知道,每个18B20
都独有一个序列号,我也把这相序列号存入EEPEOM中,在程序中也做相应的对应关系,能对应上就可以正常运行程序,否则就让程序在10分钟后拼命的
加热烧烤,烧死它,而让数码管显示的温度值是一个非常正常的数值。呵呵,想到这里我就会偷偷的笑!
第三:
我不会用平常的P0、P1口去驱动数码管,而是从P0-P3四个I/O口中任意取几个脚,只要凑够8个脚就行了,同理,键盘输入也是这样取管脚。
然后我用0.5平方的细漆包线进行连接管脚和元件,再用农机胶把这些细小的漆包线和整个AT89S52全部封住,让别人不知道这些管脚到底接的是哪个
元件,如果他们拆除农机胶进行查看,呵呵,因为农机胶很硬,拆不出就算拆出来,也会同时把漆包线弄断,更不可能知道管脚和元件的连接关系。
以上是我想到的加密方法,不知可不可行,请大家发表一下意见,如何才能做得更好。
(很遗憾的是我还掌握不到怎么烧断AT89S52管脚的方法,如果大家有这方面的经验,贴出来让大家分享一下好吗!)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
就是你的程序有BUG,不得不找你来修补,即使牛人也难以重构(带BUG程序比正常程序还难模仿)。
一周热门 更多>