【易語言源碼分享】【數(shù)據(jù)恢復(fù)】文件誤刪除找回
????????相信很多小伙伴也會(huì)出現(xiàn)誤刪除文件的情況,終于有大佬在論壇里分享了源碼;

1.原理? ? ????
????????讀取NTFS設(shè)備的MFT表,然后根據(jù)表內(nèi)提供的信息找到相對應(yīng)的文件名,文件名長度,文件總大小,數(shù)據(jù)所在位置。
2.MFT表
????????MFT表(Master File Table,主文件表)是NTFS文件系統(tǒng)中的一個(gè)重要數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)NTFS分區(qū)中所有文件和目錄的元數(shù)據(jù)信息。在NTFS文件系統(tǒng)中,每個(gè)文件和目錄都對應(yīng)著MFT表中的一個(gè)條目,這個(gè)條目包含了文件或目錄的名稱、大小、創(chuàng)建時(shí)間、修改時(shí)間、權(quán)限等重要信息,同時(shí)還包含了指向文件數(shù)據(jù)的指針和指向其他相關(guān)MFT表項(xiàng)的指針。 MFT表是NTFS文件系統(tǒng)的核心之一,它的結(jié)構(gòu)和布局對于整個(gè)文件系統(tǒng)的性能和穩(wěn)定性都非常重要。MFT表通常會(huì)預(yù)留一定的空間,用于存儲(chǔ)新創(chuàng)建的文件和目錄的元數(shù)據(jù)信息,如果這個(gè)空間不足,系統(tǒng)就需要對MFT表進(jìn)行擴(kuò)展,這會(huì)降低文件系統(tǒng)的性能。此外,MFT表中的條目也可能會(huì)被刪除或者損壞,這會(huì)導(dǎo)致文件系統(tǒng)無法正確訪問文件和目錄,需要進(jìn)行數(shù)據(jù)恢復(fù)操作。 在進(jìn)行數(shù)據(jù)恢復(fù)或者磁盤分析時(shí),讀取MFT表可以幫助我們了解分區(qū)中的所有文件和目錄的信息,包括已刪除的文件和目錄。因此,MFT表是NTFS文件系統(tǒng)分析和數(shù)據(jù)恢復(fù)的重要工具。
3.讀取MFT表
打開NTFS分區(qū) 使用操作系統(tǒng)或者第三方工具打開NTFS分區(qū),可以通過掛載分區(qū)或者使用磁盤鏡像文件的方式打開分區(qū)。

定位MFT表 在NTFS分區(qū)的第一個(gè)扇區(qū)(即第0扇區(qū))中,包含了分區(qū)的引導(dǎo)扇區(qū)和NTFS引導(dǎo)扇區(qū)。NTFS引導(dǎo)扇區(qū)中包含了MFT表的位置和大小信息。具體來說,可以讀取引導(dǎo)扇區(qū)中的BPB(Bios Parameter Block)數(shù)據(jù)結(jié)構(gòu)中的BPB_MFT_LCN和BPB_MFTMirr_LCN字段,分別表示MFT表的第一個(gè)扇區(qū)的邏輯簇號(hào)和鏡像MFT表的邏輯簇號(hào)。

讀取MFT表 根據(jù)MFT表的位置和大小信息,可以讀取整個(gè)MFT表。MFT表中的每個(gè)條目都是一個(gè)記錄長度為1024字節(jié)的數(shù)據(jù)結(jié)構(gòu),其中包含了文件或目錄的元數(shù)據(jù)信息??梢园凑誐FT表中的順序讀取每個(gè)條目,并解析其中的元數(shù)據(jù)信息。 需要注意的是,MFT表中可能會(huì)存在未分配的條目或者損壞的條目,需要進(jìn)行錯(cuò)誤處理。同時(shí),MFT表的讀取需要特權(quán)訪問,需要使用管理員或超級(jí)用戶權(quán)限進(jìn)行操作。

????注意源碼中演示的搜索,其中讀取的后綴源碼中默認(rèn)為.jpg格式的圖像文件,修改為其他的也可以進(jìn)行過濾,如果全部恢復(fù)則不需要這個(gè)匹配規(guī)則。
最后還是得感謝大佬:By 美夜赤月
希望大家以后都能用上免費(fèi)的恢復(fù)軟件??
論壇帖子地址:https://bbs.125.la/thread-14726294-1-1.html