我能够远程登录到运行定制 Linux 固件的路由器。它是使用“buildroot”编译的。
我能够挖掘出路由器的一些规格。我打算克隆路由器的固件以供进一步研究。 “dd”不可用,因此我尝试使用 cat 将闪存驱动器 (mtdblock0) 的全部内容通过 netcat 扔到我的电脑上:
路由器:
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”无法按照我的意图克隆整个闪存。我被困在这里了。任何帮助,将不胜感激!
答案1
事实证明“克隆”步骤不是问题。我的路由器供应商使用非标准的“幻数”来创建 squashfs 系统。我被建议给大脚野人一枪。幸运的是,sasquatch 正确读取并理解了文件压缩和其他细节,而 unsquash 没有正确报告。
结果:我的电脑上有一个路由器固件的副本,我可以按照我的意愿研究和分析它。到目前为止看起来不错。