在能够ssh进入路由器的前提下,可以不用拆机,直接获取路由器flash中的固件。
蒲公英X1路由器为例。
1、先重启路由器,然后等待正常启动(此处是为了清除历史的log);
2、ssh登陆路由器,输入readlog,读取系统启动的整个log。
log中可以看到flash为GD25Q128B,其大小为16Byte,地址范围为
0x000000000000-0x000001000000
3、输出mtd中保存的系统磁盘区信息
从上边的分区信息可以看到,共有9个,结合启动log,可以看到firmware会包括kernel、rootfs等。整理后有用的信息
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.530000] 0x000000000000-0x000000030000 : “u-boot”
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.540000] 0x000000030000-0x000000040000 : “kpanic”
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.550000] 0x000000040000-0x000000050000 : “factory”
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.570000] 0x000000050000-0x000000fe0000 : “firmware”
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.550000] 0x000000fe0000-0x000000ff0000 : “bdinfo”
Wed Mar 3 21:45:34 2021 kern.notice kernel: [ 1.560000] 0x000000ff0000-0x000001000000 : “reserve”
4、dd命令导出有用的分区
dd if=/dev/mtd0 of=/tmp/uboot.bin
dd if=/dev/mtd1 of=/tmp/kpanic.bin
dd if=/dev/mtd2 of=/tmp/factory.bin
dd if=/dev/mtd5 of=/tmp/firmware.bin
dd if=/dev/mtd3 of=/tmp/bdinfo.bin
dd if=/dev/mtd4 of=/tmp/reserve.bin
5、sctp取出文件到本地,合并文件