我能够远程登录到运行定制的 linux 固件的路由器。它是使用“buildroot”编译的。
我能够挖掘出路由器的一些规格。我打算克隆路由器的固件以供进一步研究。'dd' 不可用,所以我尝试使用 cat 使用 netcat 将闪存驱动器(mtdblock0)的全部内容扔到我的电脑:
路由器:
cat /dev/mtdblock0 | nc ip port
个人电脑:
nc -lp port > routerFirmware
然后在我的电脑上,我使用“binwalk”来检查下载的文件。结果是:
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Squashfs filesystem, little endian, non-standard signature, version 4.0, compression:gzip, size: xxxxxxx bytes, xxx inodes, blocksize: xxxxxx bytes, created: xxxx-xx-xx xx:xx:xx
目前看来还不错。但是 '# unsquash routerFlash' 会导致:
Can't find a SQUASHFS superblock on routerFlash
我认为最可能的原因是“cat”和“nc”无法按照我的意图克隆整个闪存。我被困在这里。任何帮助,将不胜感激!
原来“克隆”步骤不是问题。我的路由器供应商使用非标准的“幻数”来创建 squashfs 系统。有人建议我给大脚野人一个机会。幸运的是,sasquatch 正确读取并理解了文件压缩和其他细节,而 unsquash 没有正确报告。
结果:我的 PC 上有一个路由器固件的副本,我可以按照我的意愿学习和分析它。到目前为止看起来不错。