Embedded

使用“cat”複製塊設備

  • December 16, 2017

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

引用自:https://unix.stackexchange.com/questions/410885