亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于存儲特征的Oracle數(shù)據(jù)文件恢復軟件的設計

        2012-04-24 10:37:49徐國天
        中國刑警學院學報 2012年1期
        關鍵詞:數(shù)據(jù)文件狀態(tài)機空閑

        徐國天

        (中國刑警學院 計算機犯罪偵查系 遼寧 沈陽 110854)

        基于存儲特征的Oracle數(shù)據(jù)文件恢復軟件的設計

        徐國天

        (中國刑警學院 計算機犯罪偵查系 遼寧 沈陽 110854)

        本文研究了通過$Bitmap元文件確定NTFS硬盤分區(qū)空閑空間的方法,設計了可以統(tǒng)計硬盤分區(qū)空閑空間的狀態(tài)機。研究了根據(jù)存儲特征在硬盤分區(qū)空閑空間內搜索Oracle數(shù)據(jù)塊的方法,設計了可以識別Oracle數(shù)據(jù)塊的狀態(tài)機。研究了數(shù)據(jù)塊恢復模塊的設計方法,設計了數(shù)據(jù)塊恢復的鏈表存儲結構。本文設計的恢復軟件可以根據(jù)Oracle數(shù)據(jù)塊的存儲特征最大限度地提取分布在硬盤分區(qū)空閑空間上的數(shù)據(jù)塊碎片,將這些數(shù)據(jù)塊組合成一個數(shù)據(jù)文件,再利用自行開發(fā)的檢驗軟件從中檢驗出有效的數(shù)據(jù)記錄。

        OracleNTFS $Bitmap 數(shù)據(jù)塊 恢復

        目前Oracle數(shù)據(jù)庫以其強大的功能、穩(wěn)定的表現(xiàn)成為各大公司、企事業(yè)單位、大型網(wǎng)站的首選數(shù)據(jù)庫軟件。Oracle數(shù)據(jù)庫具備多個獨立的數(shù)據(jù)文件,例如system01.dbf文件,數(shù)據(jù)庫中所有的數(shù)據(jù)記錄均保存在這些數(shù)據(jù)文件中。犯罪分子為了逃避法律的制裁,可能會將數(shù)據(jù)文件刪除或直接格式化硬盤。由于被刪除的數(shù)據(jù)文件并沒有真正從硬盤消失,通常情況下可以使用恢復軟件 (如:Final Data、EasyRecovery)來恢復這些被刪除的數(shù)據(jù)文件。但是隨著嫌疑人計算機的使用,硬盤上“被刪除”數(shù)據(jù)文件的部分內容可能被“其它文件”覆蓋,同時某些恢復數(shù)據(jù)所必須的關鍵信息(如:$MFT元文件中的信息)也可能遭到破壞,這些因素將導致恢復操作失敗;即使恢復出部分數(shù)據(jù),也會因為數(shù)據(jù)文件內容的殘缺,而無法正常查看。因此最大限度地恢復“被刪除”的數(shù)據(jù)文件,從恢復出的殘缺數(shù)據(jù)文件中準確提取數(shù)據(jù)記錄對公安機關的電子數(shù)據(jù)檢驗工作至關重要。

        本文開發(fā)的Oralce數(shù)據(jù)文件恢復軟件可以根據(jù)Oracle數(shù)據(jù)塊的存儲特征最大限度地提取分布在硬盤分區(qū)上的數(shù)據(jù)塊碎片,然后將這些數(shù)據(jù)塊組合成一個文件,再利用自行開發(fā)的檢驗軟件從中檢驗出有效的數(shù)據(jù)記錄。

        1 根據(jù)$Bitmap元文件確定NTFS硬盤分區(qū)的空閑空間

        NTFS文件系統(tǒng)的元文件$Bitmap記錄了硬盤分區(qū)的使用情況,該元文件中每個二進制位代表硬盤分區(qū)中一個簇的使用情況,1表示占用、0表示空閑。課題的開發(fā)思路是首先通過BPB參數(shù)表定位$Bitmap元文件,通過掃描$Bitmap元文件可以快速標識出硬盤中的所有空閑空間。然后在硬盤分區(qū)空閑空間中根據(jù)存儲特征尋找被刪除的Oracle數(shù)據(jù)文件碎片,將它們重新整合成一個原始文件。下面分析通過BPB參數(shù)表定位$Bitmap元文件的方法。

        1.1 通過BPB參數(shù)表定位$Bitmap元文件記錄

        NTFS硬盤分區(qū)的BPB參數(shù)表位于硬盤分區(qū)的第一個扇區(qū),其中保存了重要的信息。圖1是某個NTFS硬盤分區(qū)的BPB參數(shù)表,0-10字節(jié)記錄了硬盤格式描述,3-6字節(jié)保存的是“NTFS”的ASCII碼,通過讀取這個數(shù)值可以確定硬盤分區(qū)類型為NTFS。11-12字節(jié)表示每扇區(qū)字節(jié)個數(shù),0x0200表示每扇區(qū)512字節(jié)。第13字節(jié)是每簇扇區(qū)個數(shù),本例為0x08,即每簇8個扇區(qū)、4096字節(jié)。40-47字節(jié)表示硬盤分區(qū)的扇區(qū)總數(shù),本例為0x0000000004E1E7FF,即共81913855個扇區(qū),可以計算出這個硬盤分區(qū)的大小約為39.06GB。48-55字節(jié)為$MFT元文件的起始邏輯簇號,本例為0x000C0000,即第786432簇。$MFT是NTFS文件系統(tǒng)第一個元文件記錄,其它14個元文件記錄在其后依次存放,$Bitmap是其中的第7個元文件記錄,每個元文件記錄占用1024字節(jié),因此$Bitmap元文件記 錄 的 存 儲 位 置 是 786432×4096+6× 1024=3221250048,在該位置可以定位$Bitmap元文件記錄。

        圖1 BPB參數(shù)表

        1.2 通過$Bitmap元文件記錄定位位圖數(shù)據(jù)

        $Bitmap元文件的位圖數(shù)據(jù)記錄了硬盤分區(qū)的占用情況,通過$Bitmap元文件記錄可以定位位圖數(shù)據(jù)。下面以圖2為例分析$Bitmap元文件記錄結構。$Bitmap元文件記錄由頭部結構(0-55字節(jié))、標準屬性(56-151字節(jié))、文件名屬性(152-255字節(jié))、數(shù)據(jù)流屬性(256-327字節(jié))組成,其中數(shù)據(jù)流屬性可以定位位圖數(shù)據(jù),下面詳細分析這個屬性。

        圖2 $Bitmap元文件記錄

        數(shù)據(jù)流屬性從第256字節(jié)位置開始,長度為72字節(jié)。1-4字節(jié)是屬性類型,0x80代表這是數(shù)據(jù)流屬性。5-8字節(jié)為屬性長度,本例為0x48,即72字節(jié)。第9字節(jié)是長駐標志,本例為0x01,表示數(shù)據(jù)流屬性非長駐。第17-24字節(jié)表示起始VCN,第25-32字節(jié)表示結束VCN,本例起始VCN是0,結束VCN是312,即這個$Bitmap元文件的位圖數(shù)據(jù)占用313簇,即313×4096=1282048字節(jié),每個字節(jié)含8個二進制位,一個二進制位記錄一簇的使用情況,因此位圖數(shù)據(jù)共可記錄1282048×8=10256384簇的使用情況,即可以表示39.125GB硬盤空間的使用情況。這個數(shù)值一定略大于BPB參數(shù)表看到的硬盤分區(qū)大小。第40-47字節(jié)是位圖數(shù)據(jù)占用空間大小,本例為0x139000,即1282048字節(jié),這個數(shù)值與我們之前的計算結果相同。

        第65-72字節(jié)是數(shù)據(jù)運行屬性,通過這個屬性可以定位位圖數(shù)據(jù),本例為0x32 39 01 C5 FE 0B。其中第一個字節(jié)0x32中的3表示后面5個字節(jié)中的后3個字節(jié)是數(shù)據(jù)運行的起始簇號,本例為0x 0B FE C5,即786117。第一個字節(jié)0x32中的2表示后面5個字節(jié)中的前2個字節(jié)是數(shù)據(jù)運行的大小,本例為0x 01 39,即313簇。從而可知位圖數(shù)據(jù)的起始簇號為 786117,結束簇號為786117+312=786429。這個$Bitmap元文件的位圖數(shù)據(jù)是連續(xù)存放的,因此只占用一個數(shù)據(jù)運行。

        如果文件數(shù)據(jù)是不連續(xù)存放的,則數(shù)據(jù)流屬性會包含多個數(shù)據(jù)運行。例如:0x 31 41 C5 BE 0B 21 01 33 18 31 01 55 79 37 00,其中包含3個數(shù)據(jù)運行,分別是:0x 31 41 C5 BE 0B、0x 21 01 33 18和0x 31 01 55 79 37。整個文件數(shù)據(jù)由三塊空間組成,每個數(shù)據(jù)運行標識一塊空間。第一塊空間的起始簇號是0x 0B BE C5=769733,空間大小為0x 41=65簇。第二塊空間的起始簇號是0x 18 33,但這是與第一個數(shù)據(jù)運行的相對地址,因此第二塊空間的起始簇號是0x 0B BE C5 + 0x 18 33 = 0x 0B D6 F8 = 775928,空間大小是0x 01 = 1簇。同理第三塊空間的起始簇號也是與第二個數(shù)據(jù)運行的相對地址,因此第三塊空間的起始簇號是0x 0B D6 F8 + 0x 37 79 55 = 0x 43 50 4D = 4411469,空間大小是0x01=1簇。

        通過$Bitmap元文件記錄定位了位圖數(shù)據(jù),接下來可以通過位圖數(shù)據(jù)確定硬盤分區(qū)的空閑空間。

        1.3 通過位圖數(shù)據(jù)確定硬盤分區(qū)的空閑空間

        $Bitmap元文件的位圖數(shù)據(jù)記錄了硬盤分區(qū)簇的占用情況,每一個二進制位代表一簇,字節(jié)的低位代表前面的簇。例如假設位圖數(shù)據(jù)的第一個字節(jié)為0x 9E=1001 1110,代表硬盤分區(qū)的0、5、6簇是空閑狀態(tài),1-4、7簇是占用狀態(tài)。

        為了計算硬盤分區(qū)的空閑空間,本文設計了如圖3所示的狀態(tài)機。我們將位圖數(shù)據(jù)作為一個二進制數(shù)據(jù)流輸入到狀態(tài)機。這里遇到一個如何確定二進制字節(jié)流大小的問題,我們最初想到利用$Bitmap元文件記錄中保存的位圖數(shù)據(jù)大小,以圖2為例,這個位圖數(shù)據(jù)大小是313簇,即313×4096×8=10256384個二進制位,即共可表示10256384個簇的占用情況。而根據(jù)BPB參數(shù)可知硬盤分區(qū)共81913855個扇區(qū),即81913855/8=10239231.875簇??梢钥闯鰞煞N計算方法相差10256384——10239231=17153個簇,這是由于位圖數(shù)據(jù)最后一簇中的空閑空間導致的。因此我們采用第二種計算方法,即根據(jù)BPB參數(shù)表中記錄的硬盤分區(qū)大小來計算二進制字節(jié)流長度,以圖2為例二進制數(shù)據(jù)流共包括(81913855 /8)/8 = 1279903個二進制位。

        圖3 計算空閑空間的狀態(tài)機

        我們將位圖數(shù)據(jù)作為一個二進制數(shù)據(jù)流輸入到狀態(tài)機,即可得出對應的空閑空間。

        2 根據(jù)存儲特征在硬盤分區(qū)空閑空間內搜索Oracle數(shù)據(jù)塊

        隨著計算機的使用,被刪除Oracle數(shù)據(jù)文件的MFT文件記錄可能被覆蓋,在這種情況下就不能通過MFT文件記錄來進行文件恢復。但由于Oracle數(shù)據(jù)文件通常容量較大,以GB為單位,被刪除的數(shù)據(jù)文件在短時間內不會從硬盤完全消失。本文提出一種不依靠MFT文件記錄、根據(jù)Oracle數(shù)據(jù)塊存儲特征在硬盤分區(qū)空閑空間內搜索、恢復Oracle數(shù)據(jù)文件的方法。

        2.1 Oracle數(shù)據(jù)文件的數(shù)據(jù)塊組成

        Oracle中數(shù)據(jù)存儲的基本單位是數(shù)據(jù)塊,數(shù)據(jù)文件(*.dbf)的磁盤空間可以從邏輯上劃分成若干個數(shù)據(jù)塊(從0到n連續(xù)編號),每個數(shù)據(jù)塊的默認大小是8KB。數(shù)據(jù)塊是磁盤IO操作的基本單位。

        數(shù)據(jù)塊的物理存儲結構如圖4所示,每個數(shù)據(jù)塊開頭20字節(jié)是緩沖區(qū)頭,用于存儲塊類型、塊格式和校驗和等信息。接下來48字節(jié)是事務頭,用于存儲塊編號、擁有該塊的對象的ID和事務ID等重要信息。再下面14字節(jié)是數(shù)據(jù)頭,用于存儲表個數(shù)、行個數(shù)、塊內空閑空間、塊內已用空間等信息。數(shù)據(jù)頭后面是長度可變的表目錄,其后是長度可變的行目錄,對于數(shù)據(jù)區(qū)域中的每一行記錄,行目錄都包含一個2字節(jié)的條目。每個條目記錄對應行的第一個字節(jié)與塊首的距離。行目錄中的條目的順序與數(shù)據(jù)區(qū)域中行記錄的存儲順序相反。行目錄之后是具體的數(shù)據(jù)區(qū)域。在每個數(shù)據(jù)塊的結尾都存放了四個字節(jié)的尾部校驗和,用于保證數(shù)據(jù)塊內數(shù)據(jù)的完整性。

        Oracle數(shù)據(jù)文件由一系列數(shù)據(jù)塊組成,保存實際數(shù)據(jù)的數(shù)據(jù)塊有明顯的特征值,根據(jù)這些特征值掃描整個磁盤的未使用空間,即可將所有未被覆蓋的數(shù)據(jù)塊一一提取出來。但這些數(shù)據(jù)塊組成的文件可能是殘缺不全的,不能利用Oracle數(shù)據(jù)庫管理系統(tǒng)正常查看,因此必須自行開發(fā)檢驗軟件,從恢復出的殘缺數(shù)據(jù)文件中檢驗出有效數(shù)據(jù)。

        圖4 數(shù)據(jù)塊的物理結構

        2.2 根據(jù)數(shù)據(jù)塊存儲特征在硬盤分區(qū)空閑空間內搜索Oracle數(shù)據(jù)塊

        通過$Bitmap元文件我們可以確定硬盤分區(qū)內的各個空閑空間,接下來就是在這些空閑空間內搜索、恢復Oracle數(shù)據(jù)塊。

        為了搜索Oracle數(shù)據(jù)塊我們設計了如圖5所示的狀態(tài)機。因為Oracle數(shù)據(jù)文件的基本存儲單位是數(shù)據(jù)塊,每個數(shù)據(jù)塊的默認大小是8K,因此將每個空閑空間劃分成若干個8K大小的數(shù)據(jù)塊,然后將這些數(shù)據(jù)塊流輸入到狀態(tài)機,即可自動識別出其中包含的Oracle數(shù)據(jù)塊。由于硬盤分區(qū)空閑空間內的數(shù)據(jù)量非常大,如果單存為數(shù)據(jù)塊指定一組特征值作為識別條件很容易導致誤報,為了防止出現(xiàn)錯誤識別的問題,本文設計的識別方法要求數(shù)據(jù)塊要滿足一組基本特征(basic feature),同時與其前后相臨數(shù)據(jù)塊要滿足一組關聯(lián)特征(related feature),這樣才能識別其為Oracle數(shù)據(jù)塊,該方法經過大量測試實際識別結果準確。

        圖5 識別Oracle數(shù)據(jù)塊的狀態(tài)機

        3 將在硬盤分區(qū)空閑空間內找到的Oracle數(shù)據(jù)塊恢復成數(shù)據(jù)文件

        3.1 數(shù)據(jù)塊恢復的鏈表存儲結構

        Oracle數(shù)據(jù)庫由一系列數(shù)據(jù)文件組成(例如:system01.dbf、example01.dbf、等等),數(shù)據(jù)庫中的所有對象(如數(shù)據(jù)表、索引、查詢、存儲過程、等等)都保存在這些數(shù)據(jù)文件中,每個數(shù)據(jù)文件都有唯一的FILE-ID(例如:system01.dbf是1、example01.dbf是5)。圖6是用于數(shù)據(jù)塊恢復的鏈表存儲結構,其中包含一個Oracle File List和多個Block List。Oracle File List中每個結點代表一個數(shù)據(jù)文件,F(xiàn)ILE-ID字段保存了這個數(shù)據(jù)文件的ID,block指針指向了一個Block List鏈表,LENGTH字段保存了Block List鏈表中結點的個數(shù)。有幾個數(shù)據(jù)文件,就有幾個對應的Block List,Block List中的每個結點記錄在硬盤分區(qū)空閑空間中找到的一組Oracle數(shù)據(jù)塊,begin sec是這組數(shù)據(jù)塊的起始扇區(qū),sec num是扇區(qū)個數(shù)。

        通過圖5所示的狀態(tài)機可以找出硬盤分區(qū)空閑空間中的Oracle數(shù)據(jù)塊,每找到一組Oracle數(shù)據(jù)塊,就將這組Oracle數(shù)據(jù)塊的存儲信息作為一個結點插入到某個Block List中,同時對應的LENGTH字段值加1。狀態(tài)機工作結束之后,圖6所示的鏈式存儲結構就形成了。接下來可以根據(jù)用戶的選擇恢復某個數(shù)據(jù)文件。

        圖6 用于數(shù)據(jù)塊恢復的鏈表存儲結構

        3.2 恢復模塊的執(zhí)行流程

        圖6所示的鏈式存儲結構形成之后,接下來可以根據(jù)FILE-ID來恢復某個數(shù)據(jù)文件?;謴湍K的執(zhí)行流程如圖7所示。首先讀取FILE-ID,如果Oracle File List中不存在對應的結點或對應結點的Block List鏈表為空,則模塊結束,否則將P指針指向Block List鏈表的頭結點,恢復該結點對應的Oracle數(shù)據(jù)塊,接下來將P指針沿著Block List向后移動,并恢復每個結點對應的Oracle數(shù)據(jù)塊,直至P指針為NULL,即到達Block List鏈表尾部。至此這個數(shù)據(jù)文件恢復結束。

        圖7 恢復模塊的執(zhí)行流程圖

        4 總結

        本文研究了通過Oracle數(shù)據(jù)塊存儲特征來恢復Oracle數(shù)據(jù)文件的方法。得到的結論是Oracle數(shù)據(jù)文件由一系列8K大小的數(shù)據(jù)塊組成,這些數(shù)據(jù)塊均有明顯的特征值,可以根據(jù)數(shù)據(jù)塊的存儲特征值將分布在硬盤分區(qū)空閑空間中的數(shù)據(jù)塊一一提取出來,并恢復成一個數(shù)據(jù)文件。但由于某些數(shù)據(jù)被覆蓋,因此恢復出的數(shù)據(jù)文件可能是殘缺不全的,不能利用Oracle數(shù)據(jù)庫管理系統(tǒng)正常查看,但大量的用戶數(shù)據(jù)仍然存在,接下來課題組計劃自行開發(fā)檢驗軟件,從恢復出的殘缺數(shù)據(jù)文件中檢驗出有效的數(shù)據(jù)記錄。

        1.戴士劍,涂彥暉.數(shù)據(jù)恢復技術(第二版).北京:電子工業(yè)出版社,2005

        2.汪中夏,劉偉.數(shù)據(jù)恢復高級技術.北京:電子工業(yè)出版社,2005

        3.嚴蔚敏.數(shù)據(jù)結構(C語言版).北京:清華大學出版社.2008

        4.薩師煊.數(shù)據(jù)庫系統(tǒng)概論.北京高等教育出版社.2003

        猜你喜歡
        數(shù)據(jù)文件狀態(tài)機空閑
        恩賜
        詩選刊(2023年7期)2023-07-21 07:03:38
        基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
        “鳥”字謎
        小讀者之友(2019年9期)2019-09-10 07:22:44
        數(shù)據(jù)文件恢復專題問答
        彪悍的“寵”生,不需要解釋
        數(shù)據(jù)文件安全管控技術的研究與實現(xiàn)
        SQL數(shù)據(jù)文件恢復工具
        WLAN和LTE交通規(guī)則
        CHIP新電腦(2016年3期)2016-03-10 14:09:48
        Tekla Structure數(shù)據(jù)文件交互格式分析
        FPGA設計中狀態(tài)機安全性研究
        黑龍江科學(2011年2期)2011-03-14 00:39:36
        人妻尤物娇呻雪白丰挺| 51久久国产露脸精品国产| 久久亚洲黄色| 人妻爽综合网| 精品久久人妻av中文字幕| 女人被男人爽到呻吟的视频| 欧美性狂猛xxxxx深喉| 日韩久久久黄色一级av| 国产精品老女人亚洲av无| 国内永久福利在线视频图片| 男女啪啪无遮挡免费网站| 国产精品流白浆喷水| 亚洲最大的av在线观看| 成人自慰女黄网站免费大全| 国产中文欧美日韩在线| 亚洲色大成在线观看| 亚洲精品在线观看自拍| 天堂网av一区二区三区在线观看| 久久精品国产网红主播| 亚洲日韩图片专区小说专区| 亚洲不卡毛片在线观看| 精品国产yw在线观看| 99国内精品久久久久久久| 国产精品综合久久久久久久免费 | 国产女人高潮的av毛片| 日韩乱码中文字幕在线| 精品人妻无码一区二区三区蜜桃一| 日韩亚洲制服丝袜中文字幕| 亚洲少妇一区二区三区老| 久久人人爽av亚洲精品| 国产精品无码不卡一区二区三区| 国产视频嗯啊啊啊| 亚洲乱妇熟女爽到高潮视频高清| 国产成人精品a视频一区| 99在线精品国产不卡在线观看| 国内自拍偷拍一区二区| 包皮上有一点一点白色的 | 欧美午夜刺激影院| 色青青女同性恋视频日本熟女| 在线视频观看国产色网| 中文字幕无码不卡一区二区三区 |