我從一台舊電腦上複製了很多照片到外部硬碟上,該舊電腦是一位老人使用的,可能被惡意軟體感染了。我已將照片放在另一個硬碟上。現在我的外部硬碟完全是空的,但我很偏執,我想確保驅動器上沒有留下任何惡意軟體或惡意程式碼。
所以我想用零填充它,但不破壞檔案系統或分區表。在某種程度上,我想拿回我的磁碟,就像我剛買它一樣。
是否可以做到這一點?
我的硬碟採用 NTFS 格式,帶有 msdos(mbr) 分割區表。
答案1
簡單回答:
mount /dev/your/disk /some/free/mountpoint
dd if=/dev/zero of=/some/free/mountpoint/zero bs=512
sync # See edit below
rm /some/free/mountpoint/zero
umount /some/free/mountpoint
這將完全滿足您的要求:用零覆蓋檔案系統中檔案可用的所有空間。
更複雜的答案:
- 如果不破壞 MBR,您就無法確定您是否感染了 MBR 病毒
- 空檔案系統沒有價值
所以我建議你只需核對設備(即將設備清零,包括 MBR 和檔案系統),然後重新建立分區表並mkfs.ntfs -f -L LABEL -I
編輯
正如@Nyos 在評論中指出的那樣,如果 NTFS 驅動程式沒有安裝同步(我不知道預設值),那麼最好sync
在rm
.目前版本(從 Ubuntu 18.04 開始,已完全修補到 2020-05-02)沒有分配延遲區塊,因此sync
並不是嚴格必要的,因為所有分配的區塊都將在 上寫出umount
,但我們也不知道未來,我也不知道閱讀完整的原始碼。
同樣的注意事項:如果 NTFS 驅動程式一旦獲得稀疏文件支持,我們可能需要使用/dev/urandom
而不是/dev/zero
避免(幾乎)無休止的寫入。
答案2
雖然這根本不能回答你的問題...但是:
首先,將磁碟歸零是一個非常非常糟糕的主意。對於「傳統」磁碟來說是如此,對於固態磁碟來說更是如此。將磁碟清除是一件微不足道的事情(只需建立一個檔案並填充它,Eugen Rieck 給出了確切的方法),但它需要很長時間並且會磨損磁碟。在任何類型的硬碟上,寫入週期都不是無限的。
另請注意,您甚至無法保證覆蓋實際上按預期工作。對於您的目的而言,差異不會明顯,但對於其他目的(例如安全刪除機密資料),該方法完全不可靠。這是因為,由於磨損均衡和重新分配,您完全無法知道當您覆蓋某些內容時會發生什麼。驅動器在沒有任何人(包括作業系統!)知道甚至沒有辦法告訴的情況下完成很多事情,更不用說改變了。例如,如果由於控制器對重試次數或 CRC 等不滿意而重新分配了一個扇區,那麼您可以執行任何您想要的操作,但您將無法再訪問該扇區。再也不。儘管如此,資料或其中剩餘的內容(你無法知道)仍保留在那裡,潛在的竊賊可以將其讀出。
其次,當在完全偏執模式下運行時,保留檔案系統(和 MBR)是一個非常非常糟糕的主意,尤其是當磁碟「空」時。除了檔案系統的 UUID 之外,僅建立一個新檔案系統(可以說是可在某些情況下有點麻煩,但這也很容易修復)。但是,您確實可以確定在您不想要的地方(例如 MBR)沒有留下任何內容。
第三,將「空」檔案系統歸零並重複使用實際上根本不空,這是一個壞主意。當您可以從頭開始創建一個新的 FS(沒有過時的更改日誌條目、不可見的項目、被遺忘的流、屬性、碎片化的 MFT...)時,這在性能方面很糟糕。從頭開始重新創建所有內容不僅更加安全,而且速度也更快,並且可能會帶來更好的整體性能。
太長了;博士
大多數裝置都有專用的安全擦除或「恢復原廠設定」選項(相同),該選項由隨附的管理工具或透過標準 ATA 命令使用其他一些工具支援。驅動器將使用最有效、破壞性最小的方法(某些驅動器確實會覆蓋整個磁碟,但缺乏真正支援該功能,但大多數驅動器只會轉儲加密或位元加擾密鑰,無論磁碟大小如何,它幾乎立即起作用)。
hdparm
幾乎每個開箱即用的 Linux 發行版上都有一個--security-erase
用於此目的的選項。
這會給你一個磁碟“就像剛買的一樣”除了已經使用了一段時間之外。它將以最快(在技術上可行的範圍內)和最少的磁碟破壞的方式做到這一點。接下來,對其進行分區並創建文件系統,完成。