前言
NTFS 刪除檔案時,MFT(主檔案表)記錄不會立即清除,只標記為「已刪除」。若檔案碎片少、未被覆寫,可透過手工分析 MFT 找回資料。本文以恢復 D 槽 photo\penquan.jpg 為例,示範完整流程。
工具準備
- WinHex(十六進位編輯器,支援磁碟/分區層級操作)。
- 目標分區未被寫入新資料(關鍵前提)。
步驟 1:開啟目標邏輯分區
WinHex →「工具」→「開啟磁碟」→ 選擇邏輯磁碟(如 D:)→ 確定。畫面顯示分區內容。
步驟 2:定位 $MFT 起始位置
選單「位置」→「轉到位移」→ 輸入 $MFT 或已知 MFT 起始叢集位址(通常在分區前段)。圖示顯示 MFT 區域。
步驟 3:搜尋目標檔案的 MFT 記錄
選單「搜尋」→「尋找文字」→ 輸入檔名 penquan.jpg(Unicode/UTF-16LE)。找到對應的 MFT 記錄(每筆 1024 位元組)。
步驟 4:分析 MFT 記錄關鍵欄位
- 位移 0x15~0x16:Flags = 0x0000 表示已刪除(正常為 0x0001 或 0x0003)。
- 屬性 0x80($DATA):包含資料運行描述。
- 位移 0xC12DD160:檔案實際大小 = 0x506E 位元組(20,590 bytes)。
- 位移 0xC12DD170:資料運行描述 =
41 06 83 0B 90 00。
41:後續 1 位元組為叢集計數,4 位元組為起始邏輯叢集號(LCN)。
06:佔用 6 個叢集。
83 0B 90(小端序)→ LCN = 0x900B83 = 9,440,131。
步驟 5:跳轉至資料起始位置並提取
- 選單「位置」→「轉到磁區」→ 「叢集」輸入 9,440,131 → 確定。畫面顯示該叢集內容,開頭
FF D8 FF 為 JPEG 檔頭標記。
- 滑鼠右鍵該位置 →「選塊開始」。
- 根據檔案大小(20,590 bytes)計算結束位移,或直接選塊至檔案結尾標記
FF D9。
- 選單「編輯」→「複製塊到新檔案」→ 存為
penquan_recovered.jpg。
驗證與補充
- 雙擊恢復檔案,以圖片檢視器開啟確認內容完整。
- 若檔案有碎片(多段資料運行),需依序追蹤每段 LCN 與計數,合併提取。
- 若 MFT 記錄已被覆寫,此法失效,需改用掃描檔案特徵碼的資料救援軟體(PhotoRec、FinalData)。
核心觀念回顧
- NTFS 刪除 = MFT 標記刪除 + 位圖釋放叢集,資料實體暫存。
- MFT $DATA 屬性記錄「起始 LCN、叢集數、實際大小」是恢復關鍵。
- WinHex 讓我們直接在十六進位層級追蹤並提取原始資料。