根据手册 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
谢谢大佬! 我再尝试