您尚未登录。

楼主 # 2021-06-25 21:38:53

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

利用xfel及mkz工具实现一机一镜像量产方案

之前讨论过,如何在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。
https://whycan.com/t_6507.html

里面利用了AES256,SHA256,ECDSA256,LZ4等算法来实现防盗版,也就是mkz工具所做的工作。

防盗版最优的方案,肯定是绑定应该ID,然后一台机器一个镜像。为了做到一台机器一个镜像,这里利用上前段时间开发的xfel工具。结合bat脚本可以很方便的实现批量生产工具。

那么该如何实现量产方案了。

先说一下思路,芯片进入fel模式后,xfel工具可以获取芯片的唯一ID,根据唯一ID,通过mkz工具可以制作一个专用镜像,然后再通过xfel工具,将镜像烧录至spi nor flash。

windows下批处理脚本

@echo off

@set UNIQUEID=""
@set ENCRYPT_KEY="679408dc82ae80d411d5d9720b65a43fc4f1534fa563fb28c6cd8928e46aaae9"
@set PUBLIC_KEY="03cfd18e4a4b40d6529448aa2df8bbb677128258b8fbfc5b9e492fbbba4e84832f"
@set PRIVATE_KEY="dc57b8a9e0e2b7f8b4c929bd8db2844e53f01f171bbcdf6e628908dbf2b2e6a9"
@set MESSAGE="https://github.com/xboot/xboot"

@for /f "delims=" %%i in ('xfel.exe sid') do (set UNIQUEID=%%i)
@echo %UNIQUEID% | findstr "ERROR" > nul && (
	@echo ERROR: Can't found any FEL device
) || (
	@echo Unique ID:
	@echo         %UNIQUEID%
	@mkz.exe -majoy 3 -minior 0 -patch 0 -r 24576 -k %ENCRYPT_KEY% -pb %PUBLIC_KEY% -pv %PRIVATE_KEY% -m %MESSAGE% -g %UNIQUEID% -i %UNIQUEID% xboot.bin xboot.bin.z
	@xfel.exe spinor write 0 xboot.bin.z
	@xfel.exe reset
)
@pause

最近编辑记录 xboot (2021-06-25 21:39:47)

离线

楼主 #1 2021-06-25 21:41:29

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

防盗版最关键的就是保护aes 加密key,这里aes加密key每台机器都不一样,通过某种算法,根据唯一ID,自动生成aes加密key。

离线

楼主 #2 2021-06-25 21:44:10

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

2.png
3_20210625-2145.png
板子上电进入fel模式,然后双击bat文件,等待烧录完成即可。

最近编辑记录 xboot (2021-06-25 21:45:26)

离线

楼主 #3 2021-06-25 21:46:54

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

此方案有一定的通用性,只要xfel能支持的芯片,都可以实现一机一镜像量产方案。

离线

楼主 #6 2021-06-27 16:58:26

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

提供一个在linux平台下编译xfel windows版本的步骤,用此步骤编译出来的xfel.exe体积较大,而且在使用时需要在xfel.exe文件旁边放置一个libusb-1.0.dll,还是建议大家用晕哥的方案,直接用VS2017直接来编译xfel.exe,这样编译出来的体积小,无需依赖libusb-1.0.dll文件。

1, Install some build tools

sudo apt install mingw-w64
sudo apt install autoconf
sudo apt install libtool-bin

2, Download and install libusb

git clone https://github.com/libusb/libusb.git
cd libusb
./autogen.sh
./configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32/
make
sudo make install

3, Download and build xfel source code

git clone https://github.com:xboot/xfel.git
cd xfel
CROSS=i686-w64-mingw32- make

执行这三步后,就可以生成xfel.exe,拷贝到window平台即可使用了(注意旁边放置一个libusb-1.0.dll文件)。

最近编辑记录 xboot (2021-06-27 17:00:58)

离线

楼主 #7 2021-06-27 17:03:11

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

当前xfel git源码树,已补全全志各种常用soc,现在的支持列表如下:

static struct chip_t * chips[] = {
	&a10,
	&a13_a10s_r8,
	&a20,
	&a23,
	&a31,
	&a33_r16,
	&a40i_r40,
	&a64,
	&a80,
	&a83t,
	&d1,
	&f1c100s_f1c200s_f1c500s,
	&h3_h2,
	&h5,
	&h6,
	&h616,
	&r329,
	&t507,
	&v3s_s3,
	&v831,
};

离线

楼主 #8 2021-06-27 17:25:22

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

提供一个基于当前git源码树,用mingw编译出来的一个版本,里面集成zadig-2.5.exe驱动安装工具。
xfel-git-4f8ae763e9.7z

离线

楼主 #9 2021-06-27 17:52:55

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

伍零壹 说:

请教下  XFEL能用于STM32 LPC1788这样的芯片么?

这个xfel肯定是不可以支持STM32 LPC这类芯片的,xfel仅能支持全志的芯片,但思路是相通的,如果芯片厂家提供了usb刷机方式,且拥有执行能力,就是支持exec命令,那么也是可以造一个这样的工具,这些究竟是能做到何种层次,由SOC厂家内置rom的功能决定的,当然还有一个大杀器就是这些芯片都支持jtag,那么基于jtag同样可以实现这些功能。

离线

楼主 #12 2021-06-28 09:19:58

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

f1c100s无法支持加密引导,信任链是缺失的,如果spl是可信任的话,那么后面的固件按照设计就是安全的,天生芯片缺陷,也就无能为力了,对于修改id读函数这个也不容易,你仅能修改spl里面的,就是sram中的代码,但无法修改ddr中的读id函数,那个需要有完整性校验,当然spl破了,顺滕摸瓜,是可以解密固件的,解密固件后再分析,修改,重新加密,换签名文件是可以破解的,但这一圈下来,要掉层皮。

离线

楼主 #14 2021-06-28 20:32:42

xboot
会员
注册时间: 2019-10-15
已发帖子: 692
积分: 434

Re: 利用xfel及mkz工具实现一机一镜像量产方案

xfel v1.1.2版本
xfel-windows-v1.1.2.7z

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn