OpenWrt 提取固件镜像

以下操作环境
16MByte FLash 的 WR703

经验

  • 在failsafe下也可以提取,但似乎dd没有反馈信息了

提取特定分区

  • 查看系统分区的实际配置
root@OpenWrt_SLBoat_Mod:/# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot" mtd1: 000dea50 00010000 "kernel" mtd2: 00ef15b0 00010000 "rootfs" mtd3: 00d20000 00010000 "rootfs_data" mtd4: 00010000 00010000 "art" mtd5: 00fd0000 00010000 "firmware" 
  • 提取u-boot,看起来是初始化的配置
root@OpenWrt_SLBoat_Mod:/# dd if=/dev/mtd0 of=/tmp/uboot.hex
256+0 records in
256+0 records out
  • 提取rootfs,看起来是初始化的配置
root@OpenWrt_SLBoat_Mod:/# dd if=/dev/mtd2 of=/tmp/rootfs.hex
30602+1 records in
30602+1 records out
  • 提取rootfs_data,这应该就是用户的文档了
root@OpenWrt_SLBoat_Mod:/# dd if=/dev/mtd3 of=/tmp/rootfs_data.hex
26880+0 records in
26880+0 records out
  • 提取art,这玩意为什么写着128呢
root@OpenWrt_SLBoat_Mod:/# dd if=/dev/mtd4 of=/tmp/art.hex
128+0 records in
128+0 records out

最终文件的大小

root@OpenWrt_SLBoat_Mod:/# ls -Alh /tmp/*.hex
-rw-r--r-- 1 root     root       14.9M Sep 8 16:07 /tmp/rootfs.hex
-rw-r--r-- 1 root     root       13.1M Sep 8 16:07 /tmp/rootfs_data.hex
-rw-r--r-- 1 root     root      128.0K Sep 8 16:06 /tmp/uboot.hex

想法

  • 看起来最终的文件可以进行组合成一个完整hex
  • 利用Openwrt的shell直接提取整个编程器的固件
  • 这样可以减少拿取flash


见识

OPENWRT 无线MAC地址修改 & bin 文件提取方法_Z_Live_百度空间

telnet进dd-wrt,然后执行 cat /proc/mtd,一般显示如下:
mtd0: 00040000 00020000 "cfe"
mtd1: 007a0000 00020000 "linux"
mtd2: 002be6f4 00020000 "rootfs"
mtd3: 00020000 00020000 "nvram"
mtd4: 00400000 00020000 "ddwrt"
可以看出我们需要的cfe在mtd0区, 先备份cfe.bin出来。
dd if=/dev/mtd/0 of=/tmp/cfe.bin.backup

本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt 提取固件镜像
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐