ZTE ZXA10 F411 UART 固件提取

新发布ubootuart
2026-07-14 08:47
772

ZTE ZXA10 F411 UART 固件提取

简介

本文记录一次通过 UART 串口、临时网络和 BusyBox 工具链提取 ZTE ZXA10 F411 整片 Flash 固件的过程。目标设备是一台中兴 EPON/ONU 光猫类设备,串口日志显示其运行 U-Boot 1.1.3,Linux 内核为 2.6.21.5,Flash 总容量为 8 MB。这类设备通常系统较旧,工具被厂商裁剪得很厉害,不能默认拥有完整的 ddchmodnctftp 等命令,因此提取固件的重点不是简单执行一条 dump 命令,而是先确认设备信息、判断 CPU 架构和 Flash 布局,再补充可用工具,最后把完整 Flash 镜像稳定传回电脑。

UART

UART 是嵌入式设备最常见的调试入口。通过 USB-TTL 模块连接主板上的串口引脚后,可以看到完整启动日志,也可以在启动倒计时阶段进入 U-Boot,或者等待系统启动完成后进入 Linux shell。

  • U-Boot 阶段:启动早期,提示符通常是 =>,可用 printenvmd.btftpbootm 等命令。
  • Linux shell 阶段:系统启动完成后,提示符通常是 / #,可用 catifconfigwgetbusybox 等命令。

两者处于不同阶段,网络参数也不是同一套,Linux 里设置了 br0 并不代表 U-Boot 的 ipaddrserverip 已经配置好。

U-Boot

U-Boot 是嵌入式设备常见 bootloader。它负责初始化硬件、加载内核,并将控制权交给 Linux。进入 U-Boot 后,可以查看启动参数、网络参数、Flash 映射地址,也可以通过 md.b 直接显示内存或 Flash 映射区域的数据。本设备 U-Boot 帮助命令如下:

image.png

设备识别

串口参数使用常见的 115200 8N1。设备上电后,启动日志可以确认型号和硬件信息:

U-Boot 1.1.3 (Jan 18 2012 - 10:08:14)
Board: ZXA10 F411 V2.0
CPU : 300 MHz
DRAM: 64 MB
Flash: 8 MB

进入 Linux shell 后,通过 /proc/cpuinfo 进一步确认 CPU 架构:

image.png

关键字段如下:

system type : ZXA10 F411(V2.0)
cpu model   : MIPS 24K V5.5
BogoMIPS    : 199.88

这说明设备是 MIPS 架构,后续下载外部 BusyBox 时应选择 MIPS 版本。

Flash 在 Linux 中通常通过 MTD 设备暴露。/dev/mtd0 往往表示整片 Flash,其他 mtd1mtd2 等是按用途划分出的分区。本设备的布局可以整理为:

mtd0: 00800000 00010000 "whole flash"
mtd1: 00020000 00010000 "bootloader"
mtd2: 00010000 00010000 "env"
mtd3: 003b0000 00010000 "kernel_ramfs0"
mtd4: 00060000 00010000 "userconfig"
mtd5: 00010000 00010000 "parameter tags"
mtd6: 003b0000 00010000 "kernel_ramfs1"

其中 mtd0 大小是 0x00800000,也就是 8 MB。如果目标是完整备份固件,最直接的读取对象就是 /dev/mtd0。单独读取 mtd3mtd6 只能拿到某一个 kernel/rootfs 分区,无法覆盖 bootloader、环境变量、配置区和备用镜像。

初始尝试与限制

最开始直接使用原系统命令时会遇到很多限制。原厂 BusyBox 被裁剪过,缺少 ddchmodnctftpftpput 等关键工具。比如直接执行:

dd if=/dev/mtd0 of=/tmp/whole_flash.bin bs=64k

会失败,因为系统里没有 dd。不过原系统里有 cat,所以可以先用下面方式验证 /dev/mtd0 是否可读:

cat /dev/mtd0 > /tmp/whole_flash.bin
ls -l /tmp/whole_flash.bin

如果得到 8388608 字节,说明整片 Flash 可以从 Linux shell 里读出来。但后续还要稳定地把文件传回电脑,原系统自带的网络工具不够完整,所以更稳妥的做法是传入一个功能完整的静态 BusyBox。

这里还需要区分 U-Boot 阶段和 Linux 阶段的传输逻辑。U-Boot 里的 tftp 通常是把文件下载到某个 RAM 地址,例如 tftp a0800000 test.bin,它不是把文件保存到 /tmp。Linux shel

试读结束,发布七天后转为公开

公开时间:2026年7月21日 08:47:47

提前解锁全文,需花费 50 积分

登录解锁全文
分享到

参与评论

0 / 200

全部评论 0

暂无人评论
投稿
签到
联系我们
关于我们