根据手册 1.联盛德微电子固件防拷贝方案 2.WM_W800_固件生成说明 v1.2
我尝试给固件加密,成功了.基本无感,非常nice
可是由于对openssl 不是很了解.
由于文档确实只有一句话,公钥文件的 N 记为:capbu_N.dat ...
capbu_N.dat 是如何产生的
对于tools 的 aft_build_project.sh 参数是否可以更改?
key.txt是否可以更改?
如果更改了两项任何一项,试了无效,猜测是生成capbu_N.dat 时,已经加入了这些参数,所以修改后,导致不能解密.
生成秘钥,生成公钥,公钥将key.txt加密并且追加到固件,最后将capbu_N.dat追加到固件末尾.
可capbu_N.dat 如何跟 key.txt 与 -k参数关联的,或者怎么生成的,希望得到回答.
困扰两天了.万分感谢.
固件加密用的是key.txt里的秘钥,也就是30~66,这个是需要用户自己设定的值,改的时候需要改三个地方,1.把key.txt文件里改了;2.在aft_build_project.sh替换用到的地方;3.在烧录工具里的文件夹里有个AvoidCopyTestCases.xml里也有用到这个值,需要修改替换掉。
capub_1.pem和capub_1_N.dat这两个文件是用来加密key.txt的,不需要修改,目前固定使用这组值。
cakey.pem和capub.pem是用来做签名和解签名用的,也是需要用户自己修改的值,直接改这两个文件的内容就可以,aft_build_project.sh里不用改,因为是直接引用的文件名。烧录工具文件夹下的capub.pem需要同步修改。同事,如果烧录工具文件夹下的文件修改后,需要关闭烧录工具重新打开。
公钥可以用SSH的标准工具来产生,基本上在任何一个 linux 系统上,都有这个命令,产生公钥的命令
ssh_keygen
按提示回答存放路径,保密密码(一般不用)就可以生成一对密钥了,其中 .pub 后缀文件就是公钥。
操作如图:
感谢你的回复
确实是不需要更改 capub_1.pem和capub_1_N.dat
用openssl手动生成新的cakey.pem和capub.pem,也可以达到修改的效果.
然后也是你的回复,让我之前的一个误区,搞明白了.
-k的参数其实 是key.txt 的16进制数...之前没想到对应关系.
同时改这两个参数,也是可以达到修改的效果.
有问题提出来还是挺好的.
谢谢了
-K 参数是30313233343536373839616263646566
key.txt 内容是0123456789abcdef
好像不是对应的ascii啊??
另外, 我手头的SDK没有文件: tools/w800/ca/capub_1.pem 和tools/w800/ca/capub_1_N.dat这两个文件哦,所以加密固件make编译就报错了。请问应该如何处理?
@timiil 1.数字0~9对应的ascii码就是0x30~0x39,a~f对应的ascii码是0x61~0x66。2、确认下手头的sdk是不是最新版本,最新版本肯定是有的,可以在官网下载一个。
@timiil http://ask.winnermicro.com/article/75.html
谢谢大佬!我再尝试