Linux

轉儲實時文件系統

  • June 1, 2020

我已經成功地根植了一個設備,我想轉儲它的整個文件系統,以便對其進行分析和逆向工程。

該設備聲稱是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 -lnc左右。

請注意,如果在複製過程中發生任何寫入,那麼在沒有先使文件系統靜默的情況下複製這樣的正在執行的系統可能會得到不一致的快照。複製整個塊設備時這可能會更糟(不一致可能會損壞複製中的文件系統)。如果設備有點忙,kill -STOP請考慮盡可能停止 ( )。

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