国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于計算機取證的Linux文件系統(tǒng)解析與設(shè)計

2013-07-14 08:00:26劉春枚
中國測試 2013年2期
關(guān)鍵詞:描述符數(shù)據(jù)源解析

劉春枚

(昆明船舶設(shè)備研究試驗中心,云南 昆明 650051)

0 引 言

近年來,Linux操作系統(tǒng)以前所未有的速度迅速發(fā)展,它的高性能、高可靠性贏得了廣泛的好評和支持,取證技術(shù)在Linux上的應(yīng)用成為了計算機取證的一個重要方面。Ext2文件系統(tǒng)是Linux操作系統(tǒng)中應(yīng)用最為廣泛的基本文件系統(tǒng),保存和管理重要的文件信息,挖掘分析其中的有用數(shù)據(jù)已成為目前計算機調(diào)查取證的重要手段和研究方向[1]。

然而,目前國內(nèi)外缺乏開源的Linux文件系統(tǒng)解析軟件供計算機取證使用。因此,本文提出面向?qū)ο蟮乃枷雽inux文件系統(tǒng)解析軟件進(jìn)行開發(fā),通過類的多態(tài)性的思想實現(xiàn)了不同文件系統(tǒng)的解析,將提取到的文件信息轉(zhuǎn)換成友好的用戶界面形式,為計算機取證技術(shù)在Linux上的應(yīng)用提供有力工具。

1 Linux文件系統(tǒng)

Linux的文件系統(tǒng)是Linux操作系統(tǒng)最重要的組成部分之一,文件系統(tǒng)中的文件是數(shù)據(jù)的集合,它不僅包含著文件的數(shù)據(jù)而且還有文件系統(tǒng)的結(jié)構(gòu)。Ext2是Linux操作系統(tǒng)的基本文件系統(tǒng),它將所占用設(shè)備的邏輯分區(qū)分成了多個數(shù)據(jù)塊組,每一個數(shù)據(jù)塊組都包含一些有關(guān)整個文件系統(tǒng)的描述信息以及數(shù)據(jù)塊,圖1給出了Linux文件系統(tǒng)的物理結(jié)構(gòu)圖[2]。

圖1 Linux文件系統(tǒng)物理結(jié)構(gòu)圖

1.1 Linux的Ext2存儲模型

1.1.1 Ext2超級塊(super block)

Ext2超級塊是用來描述文件系統(tǒng)整體信息的數(shù)據(jù)結(jié)構(gòu),它存儲著描述文件系統(tǒng)大小和形狀的基本信息,可以使用其中的信息來使用和維護(hù)文件系統(tǒng),是Ext2文件系統(tǒng)的核心所在。Ext2在磁盤上的超級塊存放在一個Ext2_super_block結(jié)構(gòu)中,主要包括Magic Number(幻數(shù))、Revision Level(修訂級別)、Mount count(掛接數(shù))、Block Group Number(塊組號)、Block Size(塊大?。?、Blocks per Group(每組塊數(shù))、Free Blocks(空閑塊)、Free Inodes(空閑索引節(jié)點)、First Inode(第一個索引節(jié)點)[3]。

1.1.2 Ext2組描述符(group descriptors)

每個數(shù)據(jù)塊組都有一個描述其數(shù)據(jù)結(jié)構(gòu)的組描述符,它和超級塊一樣,在每一個數(shù)據(jù)塊組中都要復(fù)制一份數(shù)據(jù)塊組描述符。組描述符放置在一起形成了組描述符表,每個數(shù)據(jù)塊組在超級塊拷貝后包含整個組描述符表。每個組的組描述符存放在Ext2_group_desc結(jié)構(gòu)中,數(shù)據(jù)塊組描述符包含的信息如表1所示。

表1 塊組描述符

1.1.3 Ext2 索引節(jié)點(inode)

在Ext2文件系統(tǒng)中索引節(jié)點是一切的基礎(chǔ),文件系統(tǒng)中的每一個文件和目錄都使用一個唯一的索引節(jié)點,每一個數(shù)據(jù)塊組中的索引節(jié)點都保存在索引節(jié)點表中。數(shù)據(jù)塊組中還有一個索引節(jié)點位圖,它用來記錄系統(tǒng)中已分配和未分配的索引節(jié)點。下面是Ext2索引節(jié)點的一些主要的字段:

(1)mode:保存兩個信息,一個是此索引節(jié)點的描述,另一個是用戶擁有的權(quán)限。對于Ext2,一個索引節(jié)點可以描述文件、目錄、符號連接、塊設(shè)備、字符設(shè)備以及FIFO結(jié)構(gòu)。

(2)Owner Information:所有者的用戶和組標(biāo)識符,使得文件系統(tǒng)可以正確地授權(quán)某種存取操作。

(3)Size:文件的字節(jié)大小。

(4)Timestemps:索引節(jié)點建立的時間和索引節(jié)點最后修改的時間。

(5)Datablocks:指向存儲此索引節(jié)點描述文件的數(shù)據(jù)塊的指針。前20個指針是指向存儲數(shù)據(jù)的物理數(shù)據(jù)塊的指針,而后3個指針則包括不同級別的間接指針。

1.1.4 Ext2目錄結(jié)構(gòu)

Ext2以一種特殊的結(jié)構(gòu)實現(xiàn)了目錄,這種文件的數(shù)據(jù)塊把文件名和相應(yīng)的索引節(jié)點號存放在一起。這種目錄結(jié)構(gòu)是存放在Ext2_dir_entry_2的結(jié)構(gòu),Ext2目錄項中主要有如下字段:

(1)inode:索引節(jié)點號。

(2)rec_len:目錄項長度。

(3)name_len:文件名長度。

(4)file_type:文件類型。

(5)name:文件名。

此結(jié)構(gòu)的長度是可變的。該結(jié)構(gòu)的最后一個name字段是Ext2_NAME_LEN個字符的變長數(shù)組,因此這個結(jié)構(gòu)是可變的。rec_len字段為指向下一個有效目錄項的指針:它是偏移量,與目錄項的起始地址相加就得到下一個有效目錄項的起始地址。刪除目錄項目時把它的inode字段置為0并適當(dāng)?shù)卦黾忧耙粋€有效目錄項rec_len字段。

2 面向?qū)ο蟮腖inux文件系統(tǒng)解析與設(shè)計

2.1 Ext2文件系統(tǒng)類框架設(shè)計

在Ext2文件系統(tǒng)的解析過程中,系統(tǒng)的目標(biāo)是根據(jù)Ext2文件系統(tǒng)的結(jié)構(gòu),從底層的二進(jìn)制流提取出所有存在的文件、目錄、分區(qū)等文件信息,并以樹形結(jié)構(gòu)的形式將解析出來的文件以友好的界面方式展現(xiàn)給用戶,同時提供功能豐富的文件操作接口,更好地對文件進(jìn)行分析和取證。

基于系統(tǒng)要實現(xiàn)的目標(biāo),本文提出了面向?qū)ο蟮奈募到y(tǒng)解析思想,即將所有的文件當(dāng)作一個對象,它封裝了對象的各個屬性以及對對象操作的各種接口函數(shù),每個對象之間是一個獨立的整體。在解析出來的整個文件列表中,工程,硬盤,分區(qū),目錄,文件都是從CMyFile繼承出來的,其中文件就是一個簡單的CMyFile對象。CMyFile根據(jù)對象作用的不同,又分別派生出CDevice類和CProject類,分別用來表示設(shè)備和工程,其中CProject類表示一個項目,有添加項目的函數(shù),和其他設(shè)備一樣被當(dāng)做一個文件放在文件列表中。CDevice類根據(jù)對象的不同,又分別派生出CLogicDisk類和CDisk類,分別用來表示分區(qū)和硬盤,從而得到整個文件系統(tǒng)的類框架如圖2所示[4]。

圖2 Ext2文件系統(tǒng)的總體類框架圖

為了方便對每個文件對象的數(shù)據(jù)源構(gòu)建和獲取,在每一個CDevice類中里面都定義了一個CSource的對象,CSource是表示這個設(shè)備的數(shù)據(jù)源。根據(jù)實際應(yīng)用中文件系統(tǒng)數(shù)據(jù)源的不同,又可以將數(shù)據(jù)源分為硬盤數(shù)據(jù)源和鏡像數(shù)據(jù)源,因此,從CSource基類中又派生出cDeviceSource和cFileSource兩個子類,一個是表示硬盤數(shù)據(jù)源,一個表示文件數(shù)據(jù)源,在它們內(nèi)部都實現(xiàn)了CREATEFILE、READFILE之類的函數(shù),方便在數(shù)據(jù)源中讀取數(shù)據(jù),從而得到文件系統(tǒng)資源類繼承框架圖如圖3所示。

圖3 Ext2文件系統(tǒng)的資源類框架圖

2.2 Ext2文件系統(tǒng)的解析技術(shù)

在Ext2文件系統(tǒng)中,所有文件都保存在塊組中,節(jié)點INODE是文件系統(tǒng)中重要的數(shù)據(jù)存儲結(jié)構(gòu),記錄文件的存儲空間和其他各種有用的信息。根據(jù)上節(jié)對Ext2文件系統(tǒng)原理的闡述,本文設(shè)計出Ext2文件系統(tǒng)解析的方法如下:

(1)讀取Ext2文件系統(tǒng)的超級塊SuperBlock,存儲到SuperBlock結(jié)構(gòu)體空間中,獲取描述文件系統(tǒng)大小和形狀的基本信息。

(2)初始化組描述信息,讀取第一個塊組的組描述,并存儲到內(nèi)存中。

(3)通過超級塊中sFirstInode來獲取整個EXT2文件系統(tǒng)的入口地址-根目錄的節(jié)點號,默認(rèn)為2。

(4)初始化根目錄所在的節(jié)點表,并根據(jù)節(jié)點號從節(jié)點表來獲取到根目錄數(shù)據(jù)存放的地址空間。

(5)讀取目錄下存放的文件目錄項,循環(huán)遞歸提取出每個文件的文件名等信息和文件的節(jié)點號。

(6)根據(jù)每個文件的inode號,來獲取文件存放的地址空間,并將地址空間用向量形式保存起來。

(7)如果當(dāng)前讀取的是文件,則需要進(jìn)行深入解析;如果當(dāng)前讀取的是目錄信息,而通過遞歸,繼續(xù)往下從步驟5開始深入解析,直到全部文件解析完成。

(8)根據(jù)每級文件存儲的父子節(jié)點信息,將所有解析出來的文件構(gòu)建成目錄樹的形式。

根據(jù)上述分析,設(shè)計出LINUX下Ext2文件系統(tǒng)解析的流程圖如圖4所示。

圖4 Ext2文件系統(tǒng)的解析技術(shù)流程圖

2.3 計算機自動取證模型的建立

根據(jù)目前計算機取證的基本需要,本文在獲取到證據(jù)文件的基礎(chǔ)上,構(gòu)建出計算機自動取證的模型,本模型主要實現(xiàn)的功能包括獲取用戶痕跡,如上網(wǎng)記錄、打印記錄、回收站刪除記錄等;即時通信地解析,如對 QQ、Skype、MSN、新浪 UC、淘寶旺旺、飛信等主流聊天工具的解析,獲取這些聊天工具的用戶信息和聊天記錄等信息,挖掘其中有用的數(shù)據(jù)供計算機取證調(diào)查分析;客戶端郵件解析,如outlook express、foxmail等郵件內(nèi)容的提取和分析;網(wǎng)頁郵件的解析,如網(wǎng)易郵箱、GMAIL、新浪郵箱、163等主流郵件的提取和分析;文件分析和關(guān)鍵字搜索,如對系統(tǒng)日志、注冊表等信息的獲取,以及對敏感關(guān)鍵字搜索等功能,挖掘分析其中的有用線索能為案件偵破提供有力依據(jù)。通過多線程技術(shù),實現(xiàn)多個功能模塊的同時取證,將大大提高計算機取證的工作效率,實現(xiàn)對計算機的自動取證[5]。

基于計算機取證系統(tǒng)要實現(xiàn)的功能,本文建立的計算機自動取證系統(tǒng)的模型如圖5所示。

圖5 計算機取證系統(tǒng)模型圖

2.4 軟件總體實現(xiàn)的流程圖

在進(jìn)行文件系統(tǒng)解析時,獲取到設(shè)備有可能是整塊硬盤,也有可能是分區(qū),因此要對設(shè)備類型進(jìn)行判斷,對分區(qū)和硬盤采取不同的方法進(jìn)行解析,具體軟件的實現(xiàn)流程見圖6[6]。

3 系統(tǒng)測試與驗證

本文研究中,采用Windows XP+SP2和Linux雙操作系統(tǒng),在Microsoft Visual C++2005開發(fā)環(huán)境下編程實現(xiàn)了上述方法。在對Linux操作系統(tǒng)下進(jìn)行多種文件系統(tǒng)的解析,包括Ext2、EXT3、SWAP等格式進(jìn)行分區(qū)格式化,用本軟件進(jìn)行解析,均能得到正確的解析結(jié)果。結(jié)果表明,面向?qū)ο蟮腅xt2文件系統(tǒng)解析是可行的,并且對Linux下其他文件系統(tǒng)解析具有一定的兼容性,解析結(jié)果具有友好的人機交互界面,為計算機取證在Linux上的進(jìn)行提供了可靠的數(shù)據(jù)來源,實現(xiàn)計算機的自動取證。

4 結(jié)束語

圖6 面向?qū)ο蟮腖inux文件系統(tǒng)解析流程圖

本文針對計算機取證在Linux中應(yīng)用對文件系統(tǒng)解析的需求,提出了面向?qū)ο蟮腖inux文件系統(tǒng)解析方法,即利用類之間的繼承關(guān)系以及類的封裝性,對不同數(shù)據(jù)源進(jìn)行深度解析,為計算機取證提供了對文件操作的各種接口,同時以友好的界面形式向用戶展示Linux文件信息,為計算機取證在Linux上的應(yīng)用提供可靠的數(shù)據(jù)保證,對調(diào)查分析軟件的研究開發(fā)具有較好的參考價值。

[1]張榮亮,余敏,余文斌.Linux文件系統(tǒng)內(nèi)核機制分析與研究[J].計算機與現(xiàn)代化,2007(12):14-21.

[2]陳莉君,康華,張波.Linux的內(nèi)核設(shè)計與實現(xiàn)[M].北京:機械工業(yè)出版社,2006.

[3]包懷忠.Ext2文件系統(tǒng)[J].計算機工程與設(shè)計,2005(4):1022-1024.

[4]梁金民.面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(UML版)[M].北京:清華大學(xué)出版社,2005.

[5]陳祖義,龔儉,徐曉琴.計算機取證的工具體系[J].計算機工程,2005,31(5):162-165.

[6]汪詩林.數(shù)據(jù)結(jié)構(gòu)算法與應(yīng)用C++語言描述[M].北京:機械工業(yè)出版社,2000.

猜你喜歡
描述符數(shù)據(jù)源解析
基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
三角函數(shù)解析式中ω的幾種求法
Linux單線程并發(fā)服務(wù)器探索
睡夢解析儀
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
電競初解析
商周刊(2017年12期)2017-06-22 12:02:01
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
利用CNN的無人機遙感影像特征描述符學(xué)習(xí)
相機解析
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
临漳县| 五峰| 府谷县| 东乡| 新绛县| 澄城县| 淮南市| 弥勒县| 上蔡县| 巨野县| 清苑县| 乐都县| 铁岭市| 丹江口市| 剑川县| 磐石市| 兴化市| 鹰潭市| 汝南县| 电白县| 屏南县| 宝应县| 恭城| 筠连县| 九江市| 财经| 沧源| 天等县| 穆棱市| 双柏县| 泉州市| 清河县| 博爱县| 疏附县| 京山县| 密山市| 广东省| 山西省| 襄垣县| 乌拉特中旗| 油尖旺区|