Linux
轉儲實時文件系統
我已經成功地根植了一個設備,我想轉儲它的整個文件系統,以便對其進行分析和逆向工程。
該設備聲稱是
Linux 2.6.31 mips GNU/Linux
。我可以通過網路訪問 shell 界面,只需遠端登錄到埠即可。如何將其整個文件系統轉儲到設備外?
我嘗試過的事情
- DD:有點不可能,
df -h
說文件系統使用了 48%,而dd
圖像會佔用 98%,可能會導致空間用完並變磚?- Rsync:這似乎是最好的選擇,但是 AFAIK,rsync 在內部使用 ssh,但是這個設備沒有 ssh,你只需打開一個埠,它就會把你丟到一個 shell 中。像這樣的參數似乎
root@192.168.1.1:23:/
只是忽略了埠(ssh: connect to host 192.168.3.10 port 22: Connection refused
)。rsync
設備中不存在二進製文件。需要考慮的事項
- 文件系統應該保持完全相同,這意味著即使是符號連結也應該指向它們現在指向的位置。
通過網路獲取數據的最簡單方法是使用
nc
. 根據您想要的複製的精確程度,此處的“數據”可能意味著以下任何一種:
- 整個塊設備(文件系統的完整塊級映像):
cat /dev/sda |
或cat /dev/mtdblocksomething |
(是的,這是對 cat 的無用使用,此處使用只是為了與其他選項保持一致。隨意將其替換為< /dev/sda
.)- 只是文件/目錄/連結/等
tar -c / |
:(可能帶有--one-file-system
)管道之後的內容取決於您是否可以從設備建立 TCP 連接到您的機器,反之亦然。例如:
nc -l -p someport > deviceimage.tar
在你的機器上tar -c / | nc yourmachine someport
在設備上如果您只能與設備建立連接而不能從它建立連接,只需交換
nc -l
和nc
左右。請注意,如果在複製過程中發生任何寫入,那麼在沒有先使文件系統靜默的情況下複製這樣的正在執行的系統可能會得到不一致的快照。複製整個塊設備時這可能會更糟(不一致可能會損壞複製中的文件系統)。如果設備有點忙,
kill -STOP
請考慮盡可能停止 ( )。