openwrt使用sysupgrade升级的时候,只会对固件的头部image进行校验是否合法,不会校验固件的完整性,所以当固件只有头部正常其他地方被破坏修改后,这个固件就是危险的,一旦升级就会出现变砖的情况。
为了验证固件的完整性和合法性,可以有两种方式进行保护。
- 添加一个校验文件,跟固件打包在一起
- 在原有的固件前面/后面追加校验信息
方式1:压缩、解压校验升级
1.压缩
在编译生成sysupgrade.bin之后,计算该固件的md5sum/sha256sum,然后将校验值和固件的型号model、版本version等信息写入校验文件中,内容如下:
check_file
md5sum:63be2932ff52dfb99ece030338b51ec6
model:ZHAAA
version:1.0.0
所以升级包会有两个文件
sysupgrade.bin
check_file
2.解压校验
使用sysupgrade升级的时候,先将压缩包解压,然后判断型号model是否一致、判断固件的md5sum是否一致,