999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FAT32的文件隱藏方法及在Linux上的實現

2012-07-13 06:28:54江祖敏
電子設計工程 2012年13期
關鍵詞:結構方法

袁 杰,江祖敏

(武漢大學 計算機學院,湖北 武漢 430072)

為了使個人的重要文件對其他人具有透明、不可見的效果,人們往往使用文件隱藏來達到目的。針對文件隱藏,一個重要的技術衡量指標是文件的隱藏強度,即順利獲取被隱藏文件所需的時間復雜度。現有文件隱藏技術包括:利用回收站特性,將文件偽裝為回收站中的文件[1];修改注冊表,使得無法通過常規方法顯示隱藏文件[2];改變API執行流程,用自定義的文件相關函數入口地址替代原文件管理相關函數的入口地址,過濾掉待隱藏文件的有關內容后再重新調用原函數;直接修改底層驅動,對底層模塊返回的信息進行過濾來實現文件隱藏[3-4]等。

FAT32文件系統[5-6]是微軟公司發明并擁有部分專利的文件系統,是一種規定文件在磁盤上的具體存儲形式的“格式標準”,通過它可有效地對物理磁盤進行管理。由于它采用了以32位為一個表項的文件分配表 (File Allocation Table,FAT)來解決分區大小的局限,故稱之為FAT32。雖然微軟已經推出了新一代文件系統NTFS(New Technology File System,NTFS)來改善文件系統的性能、可靠性和磁盤利用率等指標,但FAT32仍然占據有極大的使用場合,目前眾多移動設備上的文件系統,如U盤、手機SD卡、PDA上的擴展存儲器大多采用FAT32文件格式,因此,研究基于FAT32文件系統的文件隱藏具有應用價值。

在詳細分析FAT32文件系統組織文件和Linux虛擬文件系統(Virtual File System,VFS)支持多種文件系統原理的基礎上,本文基于FAT32管理文件和操作系統顯示文件的相關機理,采用修改文件目錄項有關屬性和重構文件FAT表項序列排列結構等技術,在邏輯上改變文件簇的位置,提出了一種具有高隱藏強度的文件隱藏方法。同時,根據Linux操作系統對FAT32的支持,利用Linux內核提供的緩沖機制,在Linux系統上進行了實驗驗證。實驗結果和分析表明,本文提出的方法不僅能實現與操作系統無關的文件隱藏,且相比已有方法,具有更好的隱藏效果,文件隱藏方法實現簡單,沒有較大增加技術難度和系統消耗,對現實應用具有一定意義。

1 FAT32文件系統簡介

FAT32文件系統采用一種基于位示圖的方法來實現對磁盤文件的管理和檢索,并將簇(cluster)作為文件的分配計量單位,而一個具體文件也以磁盤簇的大小為單位,同樣地被劃分為若干個文件簇。在低于4 G的分區中,每簇一般包括8個扇區,共4 k字節。FAT32宏觀上由3部分組成,即:引導記錄區(Dos Boot Record,DBR)、FAT表和數據區,如圖 1所示。引導記錄區描述了FAT32文件系統總體的有關屬性,如每個扇區的大小、每個簇所占有的扇區數等。FAT表以4個字節為單位作為一個表項,記錄著簇的使用情況,按表項值的不同,可分為空簇未使用、已分配簇、壞簇、系統保留簇等類型。數據區是存放磁盤數據的具體區域,目錄項文件和文件的具體內容都存放在該區域內。

圖1 FAT32存儲結構Fig.1 Storage structure of FAT32

FAT32實現對文件的有效管理,依賴于兩個重要的元素:FAT表和目錄項。FAT表實質上是一張磁盤空間分配情況登記表,它以簇號的方式記錄了簇的分配情況。FAT表項和磁盤簇一一對應,由于一個文件在磁盤上不一定是連續存放,為了讓整個文件在邏輯上形成一個連續的磁盤簇鏈,FAT32文件系統通過在磁盤簇所對應的FAT表項中記錄下該簇的下一簇的磁盤簇號來達到上述目的。目錄項是一個以32字節為單位、有特定含義的數據結構,新建的目錄項被分配有一個磁盤簇。目錄項存放在上層目錄對應的磁盤簇中,記錄了對應文件的有關屬性,如文件的文件名、擴展名、文件創建時間等,其中與本文有關的重要屬性有:字節偏移量為0BH處的“文件屬性”、字節偏移量為14H~15H處的“文件起始簇號高16位”和字節偏移量為1AH~1BH的“文件起始簇號低16位”。

如圖2所示,操作系統對文件進行訪問時,總是先訪問文件的目錄項,得到文件的起始簇簇號,再找到該簇號對應的FAT表項,讀取出其中的內容來得到下一簇的簇號,再在下一簇對應的FAT表項中找到再下一簇的簇號,以此類推,直到在FAT表項中找到文件最后一簇的標志0FFFFFFFH,對該文件的查找才結束。

圖2 FAT32磁盤數據結構及進行文件隱藏后的結果Fig.2 Disk data structures of FAT32 and results of file hidden

2 一種基于FAT32的文件隱藏方法

文獻[7]申請了一項基于FAT32文件隱藏的專利,其利用操作系統不顯示卷標文件的基本原理,將待隱藏文件目錄項中的“文件屬性”字段修改為卷標屬性值而實現文件隱藏。如用戶想隱藏圖2中的HiddenData.txt文件,則只需將目錄項HiddenData.txt的第12個字節的第4位數據位置1(00001000)即可。該方法不受操作系統的限制,可實現永久隱藏,且隱藏速度不受文件大小影響,具有一定優勢。但由于該方法主要是利用操作系統顯示文件的有關原理,并沒有從根本上改變文件的存儲位置,因此,只要找出文件系統中多余的具有卷標屬性的目錄項,然后根據找到的目錄項和FAT表便可以找到所有隱藏文件。

2.1 新方法的提出

由上述FAT32文件系統的介紹可知,操作系統查找文件在磁盤上的具體位置時,以FAT表項值為查找索引,故每一個文件都存在一個FAT表項序列。文獻[7]存在的不足在于根據多余的具有卷標屬性的目錄項后便可以順利獲得隱藏文件,因此,若先將一個文件的FAT表項序列的排列結構保存起來,然后隨機打亂重排該結構后再寫回到FAT表中,那么即使找到了隱藏的目錄項,由此目錄項也無法順利獲得被隱藏的文件信息。基于此,本文提出了一種重構FAT表項序列的文件安全隱藏方法。

為了有效存儲文件的FAT表項序列,本文先定義如下的序列比較規則:

根據以上比較規則,每種FAT表項序列的排列方案對應一個整數編號 N,且 N∈[1,k!]。

2.2 重構FAT表項序列的文件安全隱藏方法

在得到待隱藏文件的路徑信息后,具體的隱藏步驟如下:1)根據路徑名分離出每一層目錄的名稱;

2)讀取DBR中有關屬性的信息,得到根目錄所在的磁盤簇號;

3)遍歷根目錄磁盤簇中的所有目錄項,找到待隱藏文件第一層目錄的目錄項;

4)根據找到的目錄項中的“文件起始簇號”找到該層目錄的磁盤簇號;

5)搜索該層目錄所對應的磁盤簇,得到下一層目錄的目錄項;

6)重復步驟4、5,直到找到待隱藏文件的最后一層目錄的目錄項;

7)在最后一層目錄對應的磁盤簇中找到待隱藏文件的目錄項,得到文件的起始簇號n1;

8)從FAT表中找到文件起始簇號對應的FAT表項,得到下一簇的磁盤簇號n2;

9)讀取出FAT表中第n2個表項的表項值,即n3。如此循環,直到讀取出來的FAT表項值為結束標記值0FFFFFFFH;

10)根據序列比較規則計算 n1、n2、n3…nm…對應的編號值N,修改待隱藏文件的目錄項,使其具有卷標屬性,同時,將目錄項的“起始簇號”由n1修改為nm;

11)隨機重排序列 n1、n2、n3…nm…,使其變為 nm、…,并將重排后的結果序列寫回到對應FAT表項中;

12)返回編號值N給用戶,作為用戶以后獲取隱藏文件的“訪問密碼”。文件隱藏結束。

例如,使用上述隱藏方案隱藏圖2中的HiddenData.txt文件后,磁盤結構如圖2右部所示。

當用戶訪問隱藏文件時,只需要輸入“訪問密碼”,程序便可根據“訪問密碼”恢復FAT表項序列的正確排列順序,從而正確訪問文件。

2.3 對新方法的分析

文中提出的文件隱藏方法不僅不依賴于具體的操作系統,而且隱藏強度高。

雖然新方法仍然是基于操作系統不顯示卷標文件的基本原理實現文件隱藏,但該方法通過修改目錄項中的起始簇號和FAT表項序列的排列結構,即使找到了多余的具有卷標屬性的目錄項,由該目錄項獲得被隱藏文件也無法實現,這是因為依賴于打亂的FAT表項序列,被隱藏文件在磁盤上的邏輯存儲位置被改變。

3 Linux對FAT32的支持

Linux通過VFS機制支持多種文件系統[8]。每個掛載到Linux系統下的文件系統都由一個super_block描述,其中的一個成員變量s_fs_info指向一個特定文件系統定義的super_block,對FAT32文件系統來說,這個結構就是msdos_sb_info。該結構體描述了FAT32文件系統的特有屬性,當FAT32文件系統被掛載 (mount)時,內核通過調用fat_fill_super函數讀取磁盤上的第一個扇區,并將相應參數填充到已分配的super_block,如此,便在內存中建立了該FAT32文件系統的所有描述信息,直到該文件系統被卸載(unmount)時,該 super_block 才會被銷毀。

Linux操作系統中的每個文件都使用一個被定義為inode的結構體描述。FAT32文件系統的目錄項在Linux中被定義為一個msdos_dir_entry結構體。為了與VFS接合,Linux內核根據從磁盤上讀取的目錄項信息,利用函數fat_fill_inode動態構建inode,而FAT32下的inode結構——msdos_inode_info,可通過函數 MSDOS_I(inode)得到。 其中,msdos_inode_info的成員域i_start指出了文件起始簇對應的磁盤簇號。

為保持從目錄訪問inode的高效率,Linux維護了表達路徑與inode對應關系的目錄項對象dentry,被操作系統訪問過的目錄項有關信息會被存入dentry結構中。每個文件或目錄項都至少有一個dentry結構,操作系統通過dentry在內存中逐漸構建一棵描述物理磁盤上文件層次關系的樹型目錄。當同一目錄被再次訪問時,操作系統不需要重復訪問磁盤進行逐級查找,而是先在內存中查找dentry組成的目錄樹,找到目標文件對應的dentry后,就可以根據結構體成員d_inode找到該文件對應的inode,進而進行與文件有關的各種操作。這種機制有效地減少了系統訪問磁盤的次數,提高了系統的整體性能。

若想獲得一個文件簇在磁盤中的具體位置,Linux內核并不是把整個FAT表讀到內存中,然后從文件起始簇開始逐個查找FAT表。為了避免頻繁讀磁盤,它通過一個cache_lru鏈表來加快查找速度。cache_lru是msdos_inode_info的一個成員變量,它記錄最近訪問過的FAT表表項,每個鏈表元素為結構體fat_cache,fat_cache描述了一個文件簇在磁盤上的實際位置。內核調用函數fat_get_cluster查找一個文件簇在磁盤中的實際位置時,先通過fat_cache_lookup函數從cache_lru鏈表中查找,當鏈表中不存在時,才從磁盤FAT表中進行查找。因此,通過每個inode的fat_cache隊列,系統可以快速獲得文件在磁盤上的實際位置。

4 實驗過程

文中提出的文件隱藏方法需要對FAT表項進行重構,故首先必須找到FAT表在磁盤中的具體位置,這通過采用sb_bread函數讀取磁盤第一個扇區得到實現。DBR中的具體信息在Linxu中被定義為結構體fat_boot_sector,根據fat_boot_sector中的相關成員可獲得FAT表的起始位置及其占有的磁盤扇區的大小。

獲得一個路徑對應的inode時,文中使用了函數open_namei,該函數可由路徑得到相應的nameidata結構,進而可得到待隱藏文件的 inode; 根據 inode獲得對應msdos_inode_info后,由它的成員i_start可得到文件的起始簇號,最后使用函數fat_ent_read可找到待隱藏文件的所有磁盤簇號序列。在Linux系統中,卷標屬性被定義為一個宏:#define ATTR_VOLUME 8,為了修改目錄項中的有關屬性,文中使用了函數fat_notify_change,程序部分源代碼如下所示。

為了驗證上述方法的可行性,文中在Ubuntu10.04.4操作系統中掛載一個文件系統為FAT32的4G U盤后,執行上述程序,成功實現了文件隱藏,故上述方法具有實際可行性。

5 結束語

文中分析了FAT32文件系統基本原理和現有基于FAT32的文件隱藏方法,研究了Linux內核中有關FAT32的重要數據結構和函數,討論了Linux通過VFS支持多種文件系統的機制。在此基礎上,提出了一種新的文件隱藏方法,并在Linux操作系統上進行了具體實現。實驗結果和分析表明,該方法不僅能實現高強度的文件隱藏,而且隱藏方法簡單、輕量,只需修改部分FAT表項便能實現。將文中提出的文件隱藏方法與其他文件安全技術結合,運用到Android智能手機等資源有限的設備上的SD卡的文檔保護中,是將來進一步的研究內容。

[1]劉安潔,崔廣潤.在Dos下恢復Windows回收站中的文件[J].科技情報開發與經濟,2006,16(23):250-251.

LIU An-jie,CUI Guang-run.Recovering the files in windows recycle bin in DOS[J].Sci-Tech Information Development&Economy,2006,16(23):250-251.

[2]郭建偉.簡單操作讓文件隱藏更徹底[J].電腦迷,2010(20):61.

GUO Jian-wei.Simple operation makes files hidden more completely[J].PC Fan,2010(20):61.

[3]王全民,王淞,金華鋒,等.基于Windows NT平臺文件隱藏和檢測系統的設計[J].計算機安全,2010(6):27-29.

WANG Quan-min,WANG Song,JIN Hua-feng,et al.The design of file hiding and detection system based on the windows NT platform [J].Network and Computer Security,2010(6):27-29.

[4]何耀彬,李祥和,孫巖.基于驅動堆棧單元的文件隱藏方法[J].計算機工程,2011,37(13):9-12.

HE Yao-bin,LI Xiang-he,SUN Yan.File hide method based on drive Stack unit[J].Computer Engineering,2011, 37(13):9-12.

[5]Microsoft Corporation.Microsoft extensible firmware initiative FAT32 file system specification:FAT:general overview of ondisk format[S].Version 1.03,December 6,2000.

[6]黨瀟瑜.一種輕量化FAT文件系統 [J].電子科技,2011(5):91-93.

DANG Xiao-yu.A lightweight FAT file system[J].Electronic Science and Technology,2011(5):91-93.

[7]華中科技大學.基于 FAT32磁盤文件系統結構的文件隱藏方法:中國,ZL03118544.4[P].2003:1-9.

[8]敖青云.存儲技術原理分析:基于Linux 2.6內核源代碼[M].北京:電子工業出版社,2011.

猜你喜歡
結構方法
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
新型平衡塊結構的應用
模具制造(2019年3期)2019-06-06 02:10:54
學習方法
論《日出》的結構
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
創新治理結構促進中小企業持續成長
現代企業(2015年9期)2015-02-28 18:56:50
主站蜘蛛池模板: 精品亚洲欧美中文字幕在线看| 91探花在线观看国产最新| 精品伊人久久久香线蕉| lhav亚洲精品| 免费看a级毛片| 国产欧美日韩视频一区二区三区| 国产制服丝袜91在线| 青青操视频在线| 亚洲系列无码专区偷窥无码| 特黄日韩免费一区二区三区| 中文毛片无遮挡播放免费| 久久午夜影院| 999精品视频在线| 午夜视频www| 国产不卡一级毛片视频| 少妇人妻无码首页| 欧美一道本| 日本亚洲欧美在线| 久久久波多野结衣av一区二区| 91成人在线观看| 九九视频免费在线观看| 中日韩一区二区三区中文免费视频 | 日本国产在线| 国产欧美日韩精品第二区| 色男人的天堂久久综合| 国产va在线| 黄色网页在线观看| 在线国产欧美| 又大又硬又爽免费视频| 久久精品一卡日本电影| 久久精品这里只有精99品| 国产成人区在线观看视频| 久久国产拍爱| 国产综合欧美| 亚洲αv毛片| 2020精品极品国产色在线观看| 黄色网址免费在线| 亚洲欧洲日韩综合色天使| 国产91特黄特色A级毛片| 色婷婷在线播放| 欧美综合在线观看| 国产福利一区视频| 日韩欧美色综合| 色香蕉影院| 国产91视频观看| 波多野结衣一区二区三区四区| 国产剧情国内精品原创| 成年午夜精品久久精品| 成人第一页| 久久久亚洲国产美女国产盗摄| 久久伊伊香蕉综合精品| 精品丝袜美腿国产一区| 2048国产精品原创综合在线| 五月婷婷综合在线视频| 国产成人亚洲无码淙合青草| 国产精品男人的天堂| 在线观看无码a∨| 又爽又大又黄a级毛片在线视频 | 国产成人亚洲毛片| 国产成人三级| 日韩视频福利| 国产成人一区在线播放| 久久亚洲精少妇毛片午夜无码| 日本不卡在线播放| 国产成人h在线观看网站站| 久久国产V一级毛多内射| 欧美一区二区三区不卡免费| 成人va亚洲va欧美天堂| 一级香蕉视频在线观看| 欧美三级视频在线播放| 制服无码网站| 久久99蜜桃精品久久久久小说| 91青青草视频在线观看的| 国产九九精品视频| 1024国产在线| 中国一级特黄大片在线观看| 国产爽爽视频| 亚洲无码高清一区二区| 国产黄在线观看| 亚洲国产中文精品va在线播放| 亚洲av无码久久无遮挡| 欧美在线综合视频|