Embedded
使用“cat”複製塊設備
我能夠遠端登錄到執行定制的 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 上有一個路由器韌體的副本,我可以按照我的意願學習和分析它。到目前為止看起來不錯。