1. 程式人生 > >Linux系統資料恢復實戰案例

Linux系統資料恢復實戰案例

http://sec007.cc/3554.html
程式設計師的誤操作造成資料丟失,忙著一個星期的專案,就這樣付之東流了。老闆的痛斥、經理的訓斥接踵而來。接下來就是沒休息、加班,甚至忙到凌晨都不能離開那該死的電腦,都有種想屎的感覺呢?

為那些不喜歡備份資料的朋友帶來了福音,我們來談談資料恢復,這裡我們來手把手地教會你如何利用簡單的工具來恢復被你刪除的資料。

工具:

hexedit、fdisk

下文內容操作均在root環境下完成。

hexedit:
linux系統資料恢復,步驟1

在linux上,經常會使用hexedit來修改程式的16進位制程式碼。而fdisk這裡就不介紹了。

現在我們走進磁碟的世界,看看磁碟它對資料做點了什麼吧。

首先,在終端下使用root許可權,來執行下命令:

fdisk -l
linux系統資料恢復,步驟2

/dev/sdb1是今天的主角,從圖片很清晰地看到一些相關資料,比如磁碟的size,、sector、I/O size等等。
linux系統資料恢復,步驟3

磁碟格式為ext4,而非MS上的vfat32和NTFS格式,在文章的結尾貼上FAT32的圖片。

第一步:

執行fdisk,使用專家模式,來備份Partition table。
linux系統資料恢復,步驟4

ext4的partition table非常簡單,一般備份partition table為ext4.img。備份是為了避免資料恢復中被破壞。

第二步:

首先在target sdb1上執行剪下的命令操作,把sdb1上的檔案移動到電腦硬碟上,執行完成後,使用hexedit 來開啟sdb1。

被剪下的檔名:usb.png

Command : hexedit -s /dev/sdb1
linux系統資料恢復,步驟5

圖片中可以看到檔名和它所在的sector, 是不是發現了圖片的裝置是sdc1?由於磁碟的自動掛載發生了dev的改變,而資料是不會隨著磁碟的dev變化而變化的。這裡已經找到了檔名的所在,接下來,需要找到檔案header。

如何找到檔案頭呢? 可以利用hexedit進行hex search,如果是要著ASCII,可以按下TAB切換到ASCII區域。
linux系統資料恢復,步驟6

檔案的大小決定了檔案在磁碟中所佔用的sector 數,1 sector==512 bytes。在圖中,顯示了檔案header offset和sector。

提取hex值,寫入檔案。
linux系統資料恢復,步驟7

恢復後的圖片:
linux系統資料恢復,步驟8

上看著很簡單吧,它只是單檔案的剪下操作與資料恢復。這裡提醒下各位:磁碟中儲存的資料,不是刪除了可以恢復,被剪下掉的資料一樣可恢復。

下面我們來看看從磁碟刪除資料後,如何來操作呢?

在磁碟上執行delete命令來刪除一個名為1.gif的檔案,操作如下:
linux系統資料恢復,步驟9

linux系統資料恢復,步驟10

linux系統資料恢復,步驟11

上看著很簡單吧,它只是單檔案的剪下操作與資料恢復。這裡提醒下各位:磁碟中儲存的資料,不是刪除了可以恢復,被剪下掉的資料一樣可恢復。

下面我們來看看從磁碟刪除資料後,如何來操作呢?

在磁碟上執行delete命令來刪除一個名為1.gif的檔案,操作如下:
linux系統資料恢復,步驟12

linux系統資料恢復,步驟13

linux系統資料恢復,步驟14

檔案header sector : 264056, end sector: 264061 , 第一次執行刪除的檔案header sector: 264056 ,end sector : 264057, 這樣可以看到第一次刪除的資料被覆蓋掉,而保留了第二此刪除的資料。

這裡操作是對磁碟單一檔案進行資料恢復和其磁碟中的資料變化進行論證。接下來我們來看看雙檔案的操作。
linux系統資料恢復,步驟15

磁碟中存在兩個不同型別的檔案。

檔名:partition.zip

檔名:cab.ico
linux系統資料恢復,步驟16

linux系統資料恢復,步驟17

第一個檔案的header secotor:264056,end sector:264058
linux系統資料恢復,步驟18

linux系統資料恢復,步驟19

第二個檔案header sector:264064,end sector:264076。發現第一個檔案的end sector與第二個檔案的header sector相差多個sector,那麼中間的差值是什麼呢?
linux系統資料恢復,步驟20

可以看到中間的差值全部以00填充。到這裡我們來總結下這次在linux上的實踐操作:
ext4 file system
執行 剪貼
file name : usb.png sector 67120
file header : sector 264064 file end: sector 264076
執行 刪除
file name : 1.gif sector 67112 (覆蓋)
file header: start : sector 264056 end: sector 264057 (覆蓋)
file name: 56.jpg sector 67112
file header:start: sector 264056 end: sector 264061

當單檔案時,執行刪除時,覆蓋上一次被刪除的資料。

儲存檔案:

(1) file name : partition.zip sector 67112
file header: start sector 264056 end sector 264058

(2) file name : cab.ico sector 67112
file header: start sector 264064 end sector: 264068

剪下區:sector 264064
刪除區: sector 264056
儲存區:與刪除區共存
儲存區: 當單檔案時,儲存檔案覆蓋刪除區資料。
資料恢復:當多檔案時,執行刪除時,刪除區保留資料hex,如果建立新檔案資料時,將覆蓋被刪除資料hex。

附圖(FAT32磁碟格式圖):
linux系統資料恢復,步驟21

linux系統資料恢復,步驟22

23