不依賴檔案系統的 Metadata,直接從原始資料中尋找檔案。
一般情況下,我們可以透過檔案系統知道:
檔案名稱
↓
MFT Record
↓
檔案資料的位置
↓
讀取檔案
但如果 MFT 已經損壞:
檔案名稱
↓
MFT
↓
❌ 找不到
這時候 File Carving 就是換一個方向:
不找「這個檔案在哪裡」
↓
直接掃描原始資料
↓
尋找檔案特有的結構
↓
嘗試把檔案找回來
這就會用到前面第 10 篇介紹過的:Magic Number。
很多檔案格式都有自己的檔案特徵。
例如:
| 檔案類型 | 常見檔案開頭 |
|---|---|
| JPEG | FF D8 FF |
25 50 44 46 |
|
| PNG | 89 50 4E 47 |
| ZIP | 50 4B 03 04 |
| GIF | 47 49 46 38 |
假設硬碟裡面出現:
00 00 00 00 00 00
FF D8 FF E0 00 10
48 65 6C 6C 6F ...
...
即使不知道這個檔案叫什麼,也可以發現:
FF D8 FF
這很像 JPEG 的開頭。
於是就可以從這個位置開始往後尋找:
JPEG Header
↓
開始讀取資料
↓
尋找 JPEG 結尾
↓
嘗試重建檔案
假設一個 JPEG 原本是:
[ JPEG ]
[ A ]
[ B ]
[ C ]
[ D ]
如果資料是連續的:
A → B → C → D
就比較容易直接把它們接起來。
但如果檔案被分散:
A → 其他資料 → B → 其他資料 → C → D
就會不知道哪些資料其實是這個檔案的?
因此:
找到 Header
≠
一定能成功恢復完整檔案
在傳統 HDD 上,刪除檔案後,資料可能還留在磁碟上,只是空間被標記為可以重新使用。
因此:
Delete
↓
Metadata 標記為刪除
↓
原始資料可能還存在
↓
File Carving
↓
有機會找回
但 SSD 就不一定。
如果 SSD 執行 TRIM,原本的資料區塊可能在之後被控制器處理或回收,因此等到鑑識時,原始資料可能已經不存在。
File Carving 可以在檔案系統 Metadata 不可用時,直接從原始資料尋找檔案。
Magic Number 可以幫助判斷檔案可能從哪裡開始。
找到檔案開頭不代表一定能完整恢復,Fragmentation、覆寫與 SSD/TRIM 都可能影響結果。