一種磁盤讀取方法
【技術領域】
[0001]本發明涉及磁盤數據管理,特別涉及一種磁盤讀取方法。
【背景技術】
[0002]隨著互聯網與黑客技術的發展,針對計算機用戶敏感數據的攻擊事件頻繁發生,造成了難以估量的損失。除了可能被遠程惡意用戶攻擊,計算機用戶存儲在磁盤中敏感數據也有被其他本地用戶窺探、竊取甚至破壞的危險。為了保證敏感數據的安全,人們對數據進行加密來隱藏數據本身所蘊含的信息,然而隨著取證技術的發展,加密數據很容易被取證工具所發現,很難保證加密數據不被破解和修改。相比加密技術,信息隱藏技術把數據存儲在介質的空閑區域內,使得被隱藏數據很難被發現,從而保證了數據的安全。現有技術中的隱藏方法,需要修改已有文件系統的某些數據結構,會改變宿主文件在磁盤中的位置,并產生一定數量的文件碎片,這顯然影響了原有的直接數據的存儲和讀取。
[0003]因此,針對相關技術中所存在的上述問題,目前尚未提出有效的解決方案。
【發明內容】
[0004]為解決上述現有技術所存在的問題,本發明提出了一種磁盤讀取方法,包括:
[0005]a)獲取原始隱藏數據R,利用128位的MD5算法加密R生成R*,再利用LZ77壓縮算法對R*進行無損壓縮生成新的隱藏數據F,大小為Sf字節,F所占用的扇區數為N F,Nf =Sf/512;通過查找主引導記錄及擴展引導記錄的分區表,定位到文件系統對應的分區空閑區C,其大小為S。字節;
[0006]b)存在簇空閑區的宿主文件的空閑扇區數量分為3類,表示為A、B、C類,分別能夠隱藏512字節、1024字節、1536字節的數據,對于文件系統中大小為的文件R:
[0007]若Sk mod 2048 = O或SKmod 2048>1536,則該文件不屬于存在簇空閑區的宿主文件;
[0008]若0〈SK mod 2048 ( 512,則該文件屬于C類宿主文件;
[0009]若512〈SK mod 2048 ( 1024,則該文件屬于B類宿主文件;
[0010]若1024〈SK mod 2048 ( 1536,則該文件屬于A類宿主文件;
[0011]通過以上判定條件,獲得文件系統中的三類存在簇空閑區的宿主文件的數量分別為 NA、NB、Nc;
[0012]c)由A、B、C這三類文件共同隱藏上述加密之后的數據F,根據如下條件可確定所需的三類宿主文件數量Na、Nb、Nc:
[0013]O ^ Na^ N A, O ^ Nb^ N B, O ^ Nc^ N c
[0014]min (Na+2Nb+3N。)多 Nf
[0015]24+4min (Nc+Nb+Na) ^ Sc
[0016]d)在文件系統中,分別選取凡個A類文件、Nb個B類文件、N。個C類文件,利用文件目錄表得到三類文件的起始簇號,然后再利用文件分配表得到對應的文件空閑簇的簇號,分別將選取的三類文件空閑簇的簇號按順序組成隊列S[nJ、S[nb]和S[n。],其中0^na^Na,0^nb^Nb,0^nc^Nc;
[0017]e)建立數據F的文件空閑簇目錄表TF,該表中各項數據均采用16進制,在最后一項存儲該表前[20+4(凡+\+凡)]字節的冗余校驗值;
[0018]f)利用128位的MD5算法加密Tf生成T F*,再利用LZ77算法對Tf*進行無損壓縮生成TF**,然后從已定位的分區空閑區C的首地址開始,寫入Tf** ;
[0019]g)緊挨著F的末尾添加m個OxFF位,其中m= 512Na+1024Nb+1536Ne-SF,生成新的數據F*,將F*從前往后依次劃分為N。個大小為1536字節數據塊、Nb個大小為1024字節數據塊和凡個大小為512字節數據塊;
[0020]h)分別按照S[na]、S[nb]和S[n。]的順序,將相應大小的數據塊寫入到選定的三類文件空閑簇的簇文件空閑區中。
[0021]本發明相比現有技術,具有以下優點:
[0022]提出了一種磁盤讀取方法,利用相對于操作系統透明的磁盤空閑空間進行數據隱藏,具有較高的安全性和時間效率,不受主機和宿主文件類型的影響。
【附圖說明】
[0023]圖1是根據本發明實施例的磁盤讀取方法的流程圖。
【具體實施方式】
[0024]下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發明,但是本發明不限于任何實施例。本發明的范圍僅由權利要求書限定,并且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節以便提供對本發明的透徹理解。出于示例的目的而提供這些細節,并且無這些具體細節中的一些或者所有細節也可以根據權利要求書實現本發明。
[0025]本發明的一方面提供了一種磁盤讀取方法,在解析磁盤分區及簇文件系統的基礎上,尋找相對于操作系統透明的磁盤空閑區,然后利用該空閑區來隱藏數據。圖1是根據本發明實施例的磁盤讀取方法流程圖。
[0026]磁盤中包含著大量的扇區,其中大部分被磁盤管理數據結構(如磁盤分區表)、文件系統所使用。除此之外,在磁盤中仍存在一定數量的空閑扇區由于某些原因未被使用,將這些扇區所組成的空間為磁盤空閑區,并根據產生原因將磁盤空閑區分為分區空閑區和簇文件空閑區。
[0027]本發明采用主引導記錄進行磁盤分區。磁盤由主引導記錄、主分區和擴展分區組成。其中,主引導記錄位于磁盤的第一個扇區,存儲著啟動代碼和磁盤分區表,記錄著磁盤本身的相關信息。啟動代碼作用是檢查磁盤分區表是否正確,并且在B1S工作完成以后負責操作系統的引導工作。磁盤分區表的作用是記錄主分區和擴展分區的起始扇區位置、分區大小等基本信息。
[0028]擴展分區和主分區均由主引導記錄結構管理。與主分區不同的是,擴展分區在理論上可以劃分為無數個邏輯分區,每一個邏輯分區都有一個和主引導記錄類似的擴展引導記錄,擴展引導記錄中的分區表記錄了自身分區信息以及下一個邏輯分區的擴展引導記錄的位置,而最后一個邏輯分區的分區表只記錄了自身分區信息,這樣就通過單向鏈表的形式組成了邏輯分區鏈。通過使用擴展分區來替換某一個主分區,再將擴展分區分成若干個邏輯分區,就能解決主引導記錄分區中分區數量擴展的問題。
[0029]通過分析磁盤分區表,可以獲取包括分區大小、分區位置等分區信息,從而掌握磁盤的整體組織結構。對于磁盤來說,分區是其組成部分,占據著大部分扇區,操作系統可直接通過文件系統訪問分區內部扇區。除分區所占扇區外,磁盤內部還存在著一定數量的可用扇區,這些扇區一部分被主引導記錄或擴展引導記錄所占用,記錄著磁盤關鍵信息,不可輕易改動;另一部分則由于分區策略的特殊規定等原因而處于空閑狀態,將這些扇區稱為分區空閑扇區,將這些扇區組成的空間稱為分區空閑區。
[0030]在主引導記錄分區中,主引導記錄與擴展引導記錄都只占用單獨一個磁道的某一個扇區,而該磁道的其他扇區通常處于空閑狀態,形成分區空閑區。通過查找主引導記錄或者擴展引導記錄所形成的邏輯分區鏈表,就可以定位到相應的分區空閑區。此外,在主引導記錄分區中,存在邏輯塊尋址與磁頭扇區尋址兩種方式,而在磁盤分區時遵循柱面對齊的規則,因此在兩種方式轉換過程中,在磁盤的末端產生分區空閑區,該空閑區的起始扇區通常位于最后一個分區之后的第一個扇區,終止地址就是磁盤的最后一個扇區,因此通過查找磁盤分區表就可以定位到該分區空閑區。
[0031]操作系統通過文件系統來組織和管理磁盤中的大量數據。本發明的文件系統由分區引導記錄區、文件分配表、文件目錄表和數據區構成。每個邏輯分區都有一個分區引導記錄區,該區域負責系統引導、記錄分區信息及文件分配表信息。文件分配表是文件系統管理磁盤空間和文件的重要組成部分,它保存著數據區各簇的使用情況信息,管理著文件占用空間及空閑區。文件系統中的文件目錄表無固定位置,把文件目錄表當做文件處理,在分區引導記錄區中指出文件目錄表起始簇地址。文件目錄表包含了每一個文件的目錄項,記錄了對應文件的名字、屬性、建立或最后修改的時間以及文件在磁盤上存儲的起始位置等信息。數據區用于存儲不同文件類型的數據,為了提高數據訪問效率,數據區被劃分為以簇為單位的邏輯結構,每個簇都與文件分配表內的一個簇項對應。
[0032]文件系統通過簇鏈來管理文件。需要