[求助]ESP32的flash解除加密

henhenzhu
Posts: 4
Joined: Sun Jun 06, 2021 10:57 pm

[求助]ESP32的flash解除加密

Postby henhenzhu » Sun Jun 06, 2021 11:05 pm

按照乐鑫的官方教程
关闭 Flash 加密
若因某些原因意外启用了 Flash 加密,则接下来烧录明文数据时将使 ESP32 软砖(设备不断重启,并报错 flash read err, 1000)。

可通过写入 FLASH_CRYPT_CNT eFuse 再次关闭 Flash 加密(仅适用于开发模式下):

首先,前往 Project Configuration Menu,在“安全性能”目录下关闭 启用 Flash 加密启动。

退出 menuconfig 并保存最新配置。

再次运行 idf.py menuconfig 并复核是否确认已关闭该选项!如果该选项仍处于已启用状态,则引导加载程序会在启动后立即重新启用加密。

在未启用 Flash 加密的状态下,运行 idf.py flash 构建并烧录新的引导加载程序与 app。

运行 espefuse.py (components/esptool_py/esptool 中)以关闭 FLASH_CRYPT_CNT:

espefuse.py burn_efuse FLASH_CRYPT_CNT
重置 ESP32,Flash 加密应处于关闭状态,引导加载程序将正常启动。
实际的情况如下
Connecting........_____....._
Detecting chip type... ESP32
espefuse.py v3.1-dev
The efuses to burn:
from BLOCK0
- FLASH_CRYPT_CNT

Burning efuses:

- 'FLASH_CRYPT_CNT' (Flash encryption mode counter) 0b0000001 -> 0b0000011

Check all blocks for burn...
idx, BLOCK_NAME, Conclusion
[00] BLOCK0 is not empty
(written ): 0x00000344f0000000000001320000a0000085246f289ce8a800110080
(to write): 0x00000000000000000000000000000000000000000000000000300000
(coding scheme = NONE)
.
This is an irreversible operation!
Type 'BURN' (all capitals) to continue.
实际无法解除flash加密,求教下

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: [求助]ESP32的flash解除加密

Postby ESP_Gargamel » Mon Jun 07, 2021 1:25 am

FLASH_CRYPT_CNT 有奇数个 bits 为 1 时,加密;偶数个时,不加密。你 BURN 之后报什么错误?0b1 -> 0b11,是否没成功?请再确认 FLASH_CRYPT_CNT 是否被写保护了。也提供下 espefuse.py summary 的 efuse 信息。

henhenzhu
Posts: 4
Joined: Sun Jun 06, 2021 10:57 pm

Re: [求助]ESP32的flash解除加密

Postby henhenzhu » Mon Jun 07, 2021 1:41 am

了解,感谢,是我没有仔细查看说明书!!
顺便请教下,使用flash加密生成的bin可以用flash_download_tool直接批量烧录吗,还是必须每次都生成--->烧录

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: [求助]ESP32的flash解除加密

Postby ESP_Gargamel » Mon Jun 07, 2021 2:03 am

你是在 PC 预加密,再烧录?你是要用一个 key,还是用不同的 key?如果用一个 key 的话,直接生成加密的 bin,用烧录工具直接烧录,在烧 efuse,这个相对来说安全性差一些。如果要用不同的 key,那你得做一套工具,random 一个 key,再加密,再烧录,再烧 efuse。当然你需要自己管理好 key 和板子的关系,比如用板子的 mac。

henhenzhu
Posts: 4
Joined: Sun Jun 06, 2021 10:57 pm

Re: [求助]ESP32的flash解除加密

Postby henhenzhu » Mon Jun 07, 2021 2:09 am

感谢,主要是想用一个批量的加密量产方式来快速地生产产品

henhenzhu
Posts: 4
Joined: Sun Jun 06, 2021 10:57 pm

Re: [求助]ESP32的flash解除加密

Postby henhenzhu » Mon Jun 07, 2021 2:15 am

"用烧录工具直接烧录,再烧efuse"中的"再烧efuse",是不是指的执行一次espefuse.py burn_efuse FLASH_CRYPT_CNT,让0b0-->0b1,如果是的话,这一步也可以用啥批量工具烧录吗

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: [求助]ESP32的flash解除加密

Postby ESP_Gargamel » Mon Jun 07, 2021 2:31 am

当前没有现成的工具,我们后面会提供相应的工具来简化 flash 加密的操作。当前,你可以自己写一套脚本来操作整个 flash 和 efuse 的烧录。注意,你还需要对你的 key(BLOCK1) 进行读写保护。

Who is online

Users browsing this forum: Baidu [Spider] and 143 guests