基于Windows的磁盤(pán)數據清除技術(shù)
摘要 在研究Windows操作系統中文件管理系統NTFS的基礎上,提出一種徹底清除磁盤(pán)數據的方法。NTFS對文件的訪(fǎng)問(wèn)操作,主要通過(guò)與文件相關(guān)的MFT表進(jìn)行,這與FAT系統存在較大差異。通過(guò)分析MFT表管理磁盤(pán)數據的方法,建立一種樹(shù)形目錄結構,并以該樹(shù)形目錄作為管理磁盤(pán)中所有MFT表的工具。采用遍歷之后立即釋放樹(shù)結點(diǎn)的方法,解決了內存過(guò)度占用的問(wèn)題。該技術(shù)可以在磁盤(pán)扇區直接清除數據,還可對數據進(jìn)行更加直接的管理,減少了對操作系統的依賴(lài),可操作性和安全性良好。
關(guān)鍵詞 磁盤(pán)數據;NTFS;MFT表;扇區;樹(shù)結構
安全的磁盤(pán)清理軟件可以很好地為數字化信息系統服務(wù)。目前大部分磁盤(pán)清理軟件未能徹底清除在磁盤(pán)中的數據,對于磁盤(pán)上已經(jīng)刪除的文件信息在未重新寫(xiě)入新的文件時(shí),Windows只是標記,并沒(méi)有進(jìn)行數據清理。這就使得可以通過(guò)數據恢復的手段獲取保密信息,大多數清理軟件只是采用重新填寫(xiě)無(wú)效文件的方式清除磁盤(pán)上的數據。而這樣會(huì )大大縮短磁盤(pán)的使用壽命。文中研究了Windows的文件系統NTFS清除磁盤(pán)數據的原理,采用直接訪(fǎng)問(wèn)NTFS的主文件列表找到文件具體存儲的位置,并解碼二進(jìn)制文件,從而徹底清除文件,減少了對操作系統的依賴(lài),避免了大量盲目填寫(xiě)無(wú)效文件的操作,并保護了磁盤(pán)使用壽命。
1 NTFS系統結構原理
1.1 基本原理
NTFS是Windows NT引入的新型文件系統,由于NTFS的結構復雜,內容繁多,這里僅對NTFS卷上的底層結構做分析。在NTFS格式中,文件以簇的形式分配。最小的單位為扇區,N個(gè)扇區為一簇。其中,N的值由引導扇區規定。NTFS格式磁盤(pán)的數據分為4大部分:引導區、主文件列表、系統文件和文件數據區。
引導區(Partition boot sector):所有磁盤(pán)格式都有這個(gè)區,占用了磁盤(pán)第一個(gè)扇區。
主文件列表(Master File List):記錄了卷上所有文件,每個(gè)文件對應了表上的一條記錄。
系統文件(System file):NTFS一共有16個(gè)系統文件,8個(gè)隱藏文件。
文件數據區(File Area):存放文件數據。
NTFS跟FAT16,FA332一樣都在引導扇區中有一些BPB參數,但與FAT32,FAT16并不完全相同。文獻對NTFS引導扇區一些重要數據的含義進(jìn)行了詳細介紹。
1.2 主控文件表與元數據文件
MFT是一個(gè)對應的數據庫,由一系列的文件記錄組成,卷中每一個(gè)文件都有一個(gè)文件記錄。主文件表本身也有自己的文件記錄。實(shí)際上,MFT自身也是一個(gè)文件,因此,主文件列表的第一個(gè)記錄就是它自身。MFT的每個(gè)記錄都有一個(gè)編號,這里稱(chēng)為ID號,這個(gè)ID從0開(kāi)始。MFT自身是NTFS系統的第一個(gè)文件,所以文件$MFT的ID號為0。
MFT和其他23個(gè)文件一起,用戶(hù)每添加一個(gè)文件ID號加1。MFT頭的長(cháng)度跟偏移處的數據含義不變,但屬性列表是可變的,其不同的屬性列表,有著(zhù)不同的含義,最后能看到MFT表以FFFFFFFFH結束。
MFT頭的標準信息見(jiàn)文獻,它對MFT表的結構進(jìn)行了全面的分析。MFT前16個(gè)文件屬于系統文件,也稱(chēng)為元文件,用于存放系統中的元數據,元數據文件及其作用見(jiàn)文獻。
1.3 文件的MFT記錄及其包含的屬性
一個(gè)文件通常占用一條文件記錄。然而當一個(gè)文件具有多項屬性值的時(shí)候,就可以占用一個(gè)以上的文件記錄。這樣的情況下,第一個(gè)文件記錄就是基本文件記錄。其中存儲了該文件需要其他文件記錄的位置。小文件和小的文件夾將全部存放在MFT記錄中。
文件記錄包含索引信息,小的文件夾記錄完全存儲在MFT結構里。然而大文件與文件夾被組織成為B+樹(shù)結構,一個(gè)指針指向一個(gè)外部簇,該簇用來(lái)存放那些MFT內存儲不了的文件夾屬性。
在MFT記錄中的每個(gè)屬性都有一個(gè)屬性頭,這個(gè)屬性頭包含一些該屬性的重要信息,如屬性類(lèi)型、大小、名字以及是否為常駐屬性等。
2 具體實(shí)現方法
具體實(shí)現分為兩個(gè)模塊:(1)索引磁盤(pán)中所有文件的數據段在磁盤(pán)中存放的起始簇號。(2)動(dòng)態(tài)建立一個(gè)與磁盤(pán)文件存放相對的文件樹(shù),對子樹(shù)進(jìn)行遍歷查找每個(gè)文件數據段的簇號,從而可以從扇區直接清除數據信息。最后刪除所建立的子樹(shù),釋放占據的內存空間。
2.1 索引磁盤(pán)中未刪除文件的簇號
在NTFS中,文件目錄僅是文件名的一個(gè)索引,NTFS使用了一種特殊的方式把文件名組織起來(lái),以便快速訪(fǎng)問(wèn)。當創(chuàng )建一個(gè)目錄時(shí),NTFS必須對目錄中的文件名屬性進(jìn)行索引。
評論