Добрый день.
Есть камера Smtsec sip-k678k5 на платформе HiSilicon Hi3519DV500. Нужно попасть в U-boot CLI, но он запаролен.
Нашел в сети хак: если U-boot не сможет загрузить linux image - он предоставит U-boot CLI минуя пароль (не всегда, но очень часто. Не сработает только если разрабы не поленились и настроили защиту от этого вектора атаки).
Источник: Securing U-Boot: A Guide to Mitigating Common Attack Vectors - Timesys
(поиск по фразе “if a Linux/OS boot fails, U-boot may still open up the CLI”)
Согласно bootlog, образ ОС находится в SPI NAND MX35LF1GE4AB.
Первые 46 строк бутлога (строки 14,17,20,23):
flash^M
boot table board switch:0x00000007
DDR size: 0x00000400MB
System startup
Uncompress Ok!
U-Boot 2022.07 (Sep 04 2024 - 03:12:54 +0000)hi3519dv500
DRAM: Relocation Offset is: 17723000
Relocating to 5ff23000, new gd at 5fb02de0, sp at 5fb02dd0
Core: 1 devices, 1 uclasses
SPI Nor: Boot Media isn't SPI Nor
NAND: fmc_ip_ver_check(32): Check Flash Memory Controller v100 ...fmc_ip_ver_check(38): Found
SPI Nand ID Table Version 2.7
SPI Nand(cs 0) ID: 0xc2 0x12 Name:"MX35LF1GE4AB"
Block:128KB Page:2KB OOB:64B ECC:4bit/512
Chipsize:128 MiB
Loading Environment from SPIFlash... Boot Media isn't SPI Nor
*** Warning - spi_flash_probe() failed, using default environment
Loading Environment from NAND... OK
In: serial
Out: serial
Err: serial
^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_
Net: gmac0
Error: gmac0 address not set.
bootshell = 1
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x100000, size 0x20000
131072 bytes read: OK
core0 start
NAANDT reaFd: .d.evic.e 0
offset 0x120000, size 0xf00000
NOTICE: BL31: v2.7(release):
NOTICE: BL31: Built : 10:39:48, Nov 9 2023
NOTICE: IPC: waiting for kernel 15728640 bytes read: OK
Run the smc command to switch to the GSL.
sram to npu!
Booting Linux on physical CPU 0x0000000000 [0x412fd050]
Принцип работы SPI. Когда вывод CS (SS) находится в состоянии логической единицы, SPI slave (в данном случае MX35LF1GE4AB) не может передавать и принимать данные. Когда SPI master (MCU) желает произвести чтение/запись - он переводит CS слэйва в состояние логического нуля.
Wiki: Прием и передача данных в SPI
Глупость, которую я собираюсь сделать.
Насколько безопасно будет сделать подтяжку CS# на VCC через резистор 10кОм?
По логике, можно подать питание на камеру с подтянутым CS# и через пару секунд отсоединить подтяжку. U-boot должен будет к этому моменту уже не найти nand с образом linux и отдать cli.
Чего я не учел? Не хочется покалечить девайс

