GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

硬件黑客 --- U-Boot UART 提取固件

 前置条件

  • 已焊接UART接口(TX、RX、GND)
  • USB串口适配器已连接电脑
  • 已确定正确的波特率

步骤1:连接串口

picocom -b 115200 /dev/ttyUSB0
  • -b 115200:波特率(根据实际设备调整)
  • /dev/ttyUSB0:串口设备路径

步骤2:进入U-Boot命令行

  1. 关闭设备电源
  2. 按住Enter键不放
  3. 打开设备电源
  4. 看到 Hit any key to stop autoboot 时自动中断
  5. 出现U-Boot提示符,输入 h 查看帮助

步骤3:获取Flash信息

bdinfo

输出示例:

Flash Start    = 0xBF000000
Flash Size     = 0x800000

记录这两个值:

  • 起始地址:0xBF000000
  • Flash大小:0x800000

步骤4:计算读取字数

打开另一个终端,用Python计算:

python3
>>> 0x800000 / 4
2097152.0

结果:需要读取2097152个字(word)


步骤5:退出当前picocom

Ctrl+A, Ctrl+X

步骤6:重新连接并开启日志记录

picocom -b 115200 --log-file output.txt /dev/ttyUSB0

步骤7:重新进入U-Boot

重复步骤2(关机 → 按住Enter → 开机)


步骤8:执行固件转储

md 0xBF000000 2097152

格式:md <起始地址> <字数>

⚠️ 注意:此过程需要数小时,建议过夜运行


步骤9:完成后退出picocom

Ctrl+A, Ctrl+X

步骤10:清理日志文件

用文本编辑器打开 output.txt

vim output.txt

删除:

  • 文件开头的命令和杂项内容
  • 文件末尾的多余内容
  • 只保留十六进制转储数据

步骤11:转换为二进制文件

使用作者的Python脚本:

python3 parse_uboot_dump.py output.txt firmware.bin

步骤12:验证和分析固件

查看二进制文件:

xxd firmware.bin | head

使用binwalk分析:

binwalk firmware.bin

提取固件内容:

binwalk -e firmware.bin

命令速查表

步骤命令
连接串口 picocom -b 115200 /dev/ttyUSB0
带日志连接 picocom -b 115200 --log-file output.txt /dev/ttyUSB0
查看帮助 h
查看系统信息 bdinfo
内存转储 md <地址> <字数>
退出picocom Ctrl+A, Ctrl+X
分析固件 binwalk firmware.bin

posted on 2026-01-01 15:39  GKLBB  阅读(0)  评论(0)    收藏  举报