黃步根,伏 娟
(1.江蘇警官學(xué)院計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,江蘇 南京210012;2.淮安市公安局,江蘇 淮安 223005)
MS-DOC文件文本提取研究*
黃步根1,伏 娟2
(1.江蘇警官學(xué)院計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,江蘇 南京210012;2.淮安市公安局,江蘇 淮安 223005)
關(guān)鍵詞搜索廣泛應(yīng)用于情報(bào)分析、搜索引擎和計(jì)算機(jī)取證,對(duì)MS-DOC文件進(jìn)行關(guān)鍵詞搜索可能漏判,明明存在的關(guān)鍵詞卻找不到。微軟復(fù)合文檔結(jié)構(gòu)由一系列流組成,流以扇區(qū)為單位存儲(chǔ),通過(guò)目錄結(jié)構(gòu)和扇區(qū)分配表對(duì)流及其存儲(chǔ)空間進(jìn)行管理。MS-DOC文件中的文本存儲(chǔ)在WordDocument流中,文本存儲(chǔ)不一定連續(xù),通過(guò)Table流記錄分塊情況。關(guān)鍵詞可能跨越不相鄰扇區(qū),即使在相鄰扇區(qū),一個(gè)關(guān)鍵詞可能一部分是壓縮存儲(chǔ),另一部分是非壓縮存儲(chǔ),這些都是關(guān)鍵詞搜索漏判的原因。根據(jù)Table流中的分塊信息提取WordDocument流中的文本,并統(tǒng)一編碼格式,進(jìn)而進(jìn)行關(guān)鍵詞搜索,就可以避免漏判。
復(fù)合文檔;文本提?。魂P(guān)鍵詞;搜索;計(jì)算機(jī)取證
對(duì)MS-DOC文件進(jìn)行關(guān)鍵詞搜索可能漏判,明明存在的關(guān)鍵詞卻找不到。原因是MS-DOC文件文本分塊存儲(chǔ),且有快速保存的complex格式和非快速保存的non-complex格式。根據(jù)分塊信息提取文本,并統(tǒng)一編碼格式,就可以解決漏判。
MS-DOC文件采用復(fù)合文檔結(jié)構(gòu)[1]。復(fù)合文檔的存儲(chǔ)空間以扇區(qū)(Sector)為單位進(jìn)行管理。復(fù)合文檔包括多種信息,是由文字、圖片、聲音、視頻等信息復(fù)合而成的,仿照FAT32文件系統(tǒng)管理存儲(chǔ)內(nèi)容,存儲(chǔ)的內(nèi)容為一系列流(Stream),流的管理對(duì)應(yīng)FAT32系統(tǒng)中的目錄管理,流的存儲(chǔ)不要求連續(xù),用扇區(qū)分配表來(lái)存儲(chǔ)鏈接關(guān)系,相當(dāng)于FAT32系統(tǒng)的FAT表。對(duì)于長(zhǎng)度較小的流,集中存儲(chǔ)在短扇區(qū)中,建立短扇區(qū)分配表,存儲(chǔ)“短流”鏈接關(guān)系。
MS-DOC文件的常見(jiàn)流[2]有:數(shù)據(jù)流Data(主要是圖片信息)、表(Table)、WordDocument、摘要信息(SummaryInformation)、其他摘要信息(DocumentSummaryInformation)、通用對(duì)象(CompObj)等,主流是WordDocument,存儲(chǔ)文本信息。Word 2007開(kāi)始增加X(jué)ML倉(cāng)庫(kù)。
2.1 扇區(qū)及其分配表
正常情況下,復(fù)合文檔的文件長(zhǎng)度是512字節(jié)的整數(shù)倍,因?yàn)閺?fù)合文件的存儲(chǔ)以扇區(qū)(Sector,也稱(chēng)為頁(yè)P(yáng)age)為單位進(jìn)行管理,一個(gè)扇區(qū)512個(gè)字節(jié)。根據(jù)文件操作過(guò)程,各個(gè)流得到分配的存儲(chǔ)空間不一定是連續(xù)的,用扇區(qū)分配表SAT(Sector Allocation Table,又稱(chēng)“扇區(qū)配置表”)來(lái)記錄鏈接關(guān)系,為區(qū)別于后面的短扇區(qū)分配表,使用“主扇區(qū)分配表MSAT(Main SAT)”表示。文件頭信息占用512個(gè)字節(jié),不計(jì)入扇區(qū)分配表,頭扇區(qū)后的第1個(gè)扇區(qū)記為0扇區(qū),此后依次為1、2、3、…扇區(qū),扇區(qū)號(hào)記為SID(Sector IDentifier),用雙字(32 bit,4字節(jié))存儲(chǔ)。
在SAT表中,有幾個(gè)特殊的數(shù)值記號(hào),含義見(jiàn)表1。尤其注意,SAT表中的-1表示未分配扇區(qū),而不是文件頭扇區(qū)。
Table 1 Special values in SAT表1 SAT表中的特殊數(shù)值
關(guān)于SAT擴(kuò)展扇區(qū),需要作進(jìn)一步說(shuō)明。在文件頭中記錄了一些基礎(chǔ)信息(詳見(jiàn)2.4復(fù)合文檔頭格式),空出109個(gè)雙字單元用于存儲(chǔ)SAT表,如此可以計(jì)算:
一個(gè)扇區(qū)512字節(jié),一個(gè)鏈表項(xiàng)需要4字節(jié),512/4=128,即一個(gè)扇區(qū)可以記錄128個(gè)SID。
109個(gè)扇區(qū)放SAT表,128*109個(gè)SID,一個(gè)SID對(duì)應(yīng)一個(gè)扇區(qū),512字節(jié),加上文件頭扇區(qū),文件的最大長(zhǎng)度=512+512*128*109 =7143936=6976 KB≈7 MB,當(dāng)文件超過(guò)此長(zhǎng)度時(shí),Microsoft Office系統(tǒng)另外占用扇區(qū)(稱(chēng)為SAT擴(kuò)展扇區(qū))來(lái)記錄SAT表,在SAT表中,這些扇區(qū)用-4表示。SAT擴(kuò)展扇區(qū)的第1個(gè)扇區(qū)在文件頭中記錄,1個(gè)扇區(qū)512字節(jié),一個(gè)鏈表數(shù)據(jù)項(xiàng)4字節(jié),512/4=128,多個(gè)SAT擴(kuò)展扇區(qū)也需要相互鏈接,這個(gè)鏈表不在SAT表中,而是自維護(hù),在128個(gè)數(shù)據(jù)項(xiàng)的最后一項(xiàng),不是SAT表的鏈接數(shù)據(jù),而是擴(kuò)展鏈表的下一個(gè)擴(kuò)展扇區(qū)。
2.2 短流和短扇區(qū)
一般地,設(shè)定數(shù)值4 096作為標(biāo)準(zhǔn)流的長(zhǎng)度,當(dāng)流的長(zhǎng)度小于該數(shù)值時(shí),稱(chēng)為短流(Mini-stream),使用短扇區(qū)(Short Sector)來(lái)存放,短流有單獨(dú)的扇區(qū)分配表,記為SSAT(Short Sector Allocation Table)。短流的存儲(chǔ)空間實(shí)際占用的是標(biāo)準(zhǔn)扇區(qū),短扇區(qū)的長(zhǎng)度一般為64字節(jié),512/64=8,即八個(gè)短扇區(qū)占用一個(gè)標(biāo)準(zhǔn)扇區(qū)。
目錄的第一個(gè)流記錄了短流的存儲(chǔ)空間首扇區(qū),結(jié)合SAT就可以得到短流的全部扇區(qū)占用情況。
2.3 目錄結(jié)構(gòu)
Microsoft Office 二進(jìn)制文件格式的所有文件數(shù)據(jù)存在于一個(gè)或多個(gè)流中。每個(gè)流均包含用于存儲(chǔ)元數(shù)據(jù)(如用戶和系統(tǒng)信息、文件屬性、格式信息、文本內(nèi)容和媒體內(nèi)容)的數(shù)據(jù)結(jié)構(gòu),存于目錄區(qū)。
一個(gè)目錄項(xiàng)的大小嚴(yán)格地為128個(gè)字節(jié):
typedef struct {
charName[64]; /*0,此流的名字,一般為16位的Unicode字符,以0結(jié)束*/
WORDsize; /*0x40,用于存放名字的區(qū)域的大小,包括結(jié)尾的0*/
charEntry_type; //0x42,目錄項(xiàng)類(lèi)型
charrgb; /*0x43,此目錄項(xiàng)的節(jié)點(diǎn)顏色:00=Red,01=Black*/
intLeft_did; //0x44,其左節(jié)點(diǎn)的DID
intRight_did; //0x48,其右節(jié)點(diǎn)的DID
intChild_did; /*0x4c,其成員紅黑樹(shù)的根節(jié)點(diǎn)的DID*/
charreserved1[16+4+8+8]; /*0x50,16,可能全為0*/
//0x60,4,用戶標(biāo)記(可能全為0)
//0x64,8,創(chuàng)建此目錄項(xiàng)的時(shí)間標(biāo)記
//0x6c,8,最后修改此目錄項(xiàng)的時(shí)間標(biāo)記
DWORDstreamroot_Sid; /*0x74,4,若此為流的入口,指定流的第一個(gè)Sector或Short Sector的SID,若此為根倉(cāng)庫(kù)入口,指定短流存放流的第一個(gè)Sector的SID,其他情況為0*/ DWORDstreamrootSid_size; /*0x78,4,若此為流的入口,指定流的大小,若此為根倉(cāng)庫(kù)入口,指定短流存放流的大小,其他情況為0*/
charreserved2[4]; //0x7c,4,保留
}DIRENTRY;
注:DID(DirectoryIDentifier)是目錄項(xiàng)序號(hào)。若子女為空,DID=-2。
復(fù)合文檔的內(nèi)容以流的形式存在,用目錄結(jié)構(gòu)進(jìn)行管理。含有子目錄的流稱(chēng)為倉(cāng)庫(kù)(Storage),相當(dāng)于文件夾。
目錄樹(shù)按照流名稱(chēng)的長(zhǎng)度(長(zhǎng)度相同的根據(jù)名稱(chēng)的字典序)構(gòu)成變型的二叉排序樹(shù),規(guī)定:左節(jié)點(diǎn)<根節(jié)點(diǎn)<右節(jié)點(diǎn)。目錄項(xiàng)中記錄左右子女的序號(hào),“變型”之處在于對(duì)于倉(cāng)庫(kù),給出子目錄流的根節(jié)點(diǎn)序號(hào)。
2.4 復(fù)合文檔頭格式
前面所敘述的MSAT、SSAT、根目錄、SAT擴(kuò)展扇區(qū)等記錄在文件的開(kāi)始扇區(qū),以八個(gè)字節(jié)十六進(jìn)制數(shù)據(jù){D0,CF, 11,E0,A1,B1, 1A,E1}為特征開(kāi)頭,其后包含了有關(guān)扇區(qū)分配和目錄的基礎(chǔ)數(shù)據(jù),主要數(shù)據(jù)項(xiàng)如表2所示。
Table 2 Main data in the first sector of file表2 文件頭扇區(qū)主要數(shù)據(jù)
文件頭中還包括標(biāo)準(zhǔn)流的大小和短扇區(qū)的大小,以2的冪形式存儲(chǔ),例如存儲(chǔ)6表示26=64。
對(duì)MS-DOC文件進(jìn)行關(guān)鍵詞搜索可能漏判,需要研究其存儲(chǔ)規(guī)律,尋求解決辦法。
3.1 文件信息塊
文件信息塊FIB(File Information Block)位于WordDocument 流開(kāi)始,記錄了文本的開(kāi)始位置(FIB.fcMin)、文本的長(zhǎng)度和文件狀態(tài)等信息。FIB存儲(chǔ)的信息與MS-DOC版本有關(guān)。
FIB由四部分組成:頭和三個(gè)數(shù)組。前32個(gè)字節(jié)為“頭”,記錄基本信息(FibBase),各版本沒(méi)有變化。第一個(gè)數(shù)組是字(short,2字節(jié))數(shù)組;第二個(gè)數(shù)組是雙字(int 或DWORD,4字節(jié))數(shù)組;第三個(gè)數(shù)組是8字節(jié)的雙雙字?jǐn)?shù)組,是一系列屬性數(shù)據(jù),包括兩部分,一部分是文件字符位置FC(File Character position)值,另一部分是長(zhǎng)度。三個(gè)數(shù)組的開(kāi)始處總是兩字節(jié)的數(shù)組項(xiàng)目數(shù)。基本信息的主要內(nèi)容見(jiàn)表3。
Table 3 Main data in FibBase表3 FibBase主要內(nèi)容(表中數(shù)據(jù)為十六進(jìn)制數(shù),下同)
未加密文檔的口令校驗(yàn)和和種子為0,加密機(jī)制與版本有關(guān),Office文檔采用對(duì)稱(chēng)密碼體制,李小波等[3]對(duì)Office文件加密機(jī)制進(jìn)行了整體分析。
0A處的字單元option是各種選項(xiàng)設(shè)置的匯總,二進(jìn)制位b8(option&0x0100)為fEncrypted,1表示文件是加密的;二進(jìn)制位b10(option & 0x0400)為fReadOnly,1表示文件是只讀的,等等。
關(guān)于三個(gè)數(shù)組,前兩個(gè)比較固定,變化主要在第三個(gè)。通常情況如表4所示。
Table 4 Example of FIB layout表4 FIB分布舉例
0x152處的雙雙字?jǐn)?shù)組是關(guān)于文本分塊情況的信息,第一個(gè)雙字是分塊表的位置,第二個(gè)雙字是分塊表的長(zhǎng)度,在3.3節(jié)中敘述。
3.2 文本編碼
計(jì)算機(jī)中最早處理的文字是英文符號(hào)(鍵盤(pán)字符、控制符號(hào)等),編碼是ASCII碼,一個(gè)字符占一個(gè)字節(jié),20世紀(jì)90年代,微軟針對(duì)全球文字引入了雙字節(jié)的Unicode編碼,對(duì)于原來(lái)的ASCII字符編碼,簡(jiǎn)單地將高字節(jié)置0(一般地,高字節(jié)存于高地址)。西文字符編碼如表5所示。
Table 5 Example for encoding the English characters表5 西文符號(hào)編碼舉例
中國(guó)大陸計(jì)算機(jī)漢字編碼始于GB2312-1980,只有6 000多個(gè)漢字字符,機(jī)內(nèi)碼一個(gè)漢字占兩字節(jié),GB18030-2005擴(kuò)充到2.7萬(wàn)漢字;臺(tái)灣地區(qū)的標(biāo)準(zhǔn)漢字是字符集CNS 11643(BIG 5,俗稱(chēng)“大五碼”);日本工業(yè)標(biāo)準(zhǔn)漢字是字符集JIS X 0208-90;韓國(guó)國(guó)家標(biāo)準(zhǔn)漢字是字符集KSC 5601-87。同一漢字的不同編碼方案得到不同編碼,比如“中國(guó)”的GB機(jī)內(nèi)碼是“d6 d0 b9 fa”,Unicode編碼是“2d 4e fd 56”。在簡(jiǎn)體中文系統(tǒng)下的記事本編輯的是文本文件,漢字采用GB碼,西文字符采用ASCII碼。GB碼中也包含西文字符,即所謂全角字符。
MS-DOC的WordDocument流中的文本信息的存儲(chǔ)有兩種形式:壓縮存儲(chǔ)和非壓縮存儲(chǔ)。所謂壓縮存儲(chǔ),是針對(duì)連續(xù)的純英文符號(hào),采用ASCII編碼,一個(gè)字符占一個(gè)字節(jié)。在一個(gè)扇區(qū)內(nèi)中西文混合編排的內(nèi)容,非壓縮存儲(chǔ),采用Unicode編碼,不論是中文還是西文符號(hào),都是兩個(gè)字節(jié),西文的兩個(gè)字節(jié)中,高字節(jié)總是0。可見(jiàn),ASCII編碼存儲(chǔ)節(jié)省了存儲(chǔ)空間。在一個(gè)MS-DOC文件中,兩種形式是可以并存的,即混合存儲(chǔ),在一個(gè)扇區(qū)內(nèi)只采用一種形式,具體采用的是哪種存儲(chǔ)形式,在存儲(chǔ)描述塊中予以說(shuō)明。一個(gè)扇區(qū)512個(gè)字節(jié),對(duì)于連續(xù)超過(guò)其一半長(zhǎng)度(256個(gè))字符的,優(yōu)先采用ASCII編碼存儲(chǔ),不足512的,補(bǔ)0存儲(chǔ)。
文本信息中還有一些特殊的符號(hào),如頁(yè)號(hào)、腳注、分隔符等。
3.3 MS-DOC文件文本信息的存儲(chǔ)
文檔中的相鄰字符在二進(jìn)制文件中不一定相鄰。MS-DOC文件的保存方式有快速保存的complex格式(壓縮存儲(chǔ))和非快速保存的non-complex格式。non-complex格式保存的文本物理順序與邏輯順序一致,其文本流能夠通過(guò)FC來(lái)描述,它不需要修改屬性PRM(PRoperty Modifier)。
文本信息包括正文的文本、腳注、尾注、文本框內(nèi)文本等,在WordDocument流的FIB中有所記錄,如表6所示。
Table 6 Description of the text in the header of word file表6 Word文件頭部關(guān)于文本的描述
注:字符位置CP (Character Position)表示文件中字符在文本流中的邏輯坐標(biāo)。CcpText表示字的個(gè)數(shù)(“中國(guó)086”是5個(gè)字符,ANSI存儲(chǔ)占7個(gè)字節(jié),Unicode存儲(chǔ)占10個(gè)字節(jié))。
FIB的0A處字單元option二進(jìn)制位B2(option&0x004)為fComplex,1 表示文件是快速保存的complex格式,0表示non-complex格式。
對(duì)于使用non-complex方式保存的文檔,字符的物理順序和邏輯順序一致,通過(guò)表7中的變量可以很方便地確定每種文本的存儲(chǔ)位置。
Table 7 Position of segment in word file表7 Word文件格式中各個(gè)段落的起始位置
對(duì)于使用complex方式保存的文檔,在WordDocument流存儲(chǔ)文本,在表流存儲(chǔ)修改屬性和分塊信息,記錄各個(gè)存儲(chǔ)塊。表流有“1Table” 和 “0Table”,一般MS-DOC文件只有前者,在文件異常關(guān)閉等情況下可能有后者,此時(shí)實(shí)際使用哪個(gè),在FIB中有專(zhuān)門(mén)標(biāo)注,0a處的字單元option二進(jìn)制位b9(option&0x0200)為fWhichTblStm,1表示“1Table”,0表示“0Table”。
在表流中記錄各個(gè)存儲(chǔ)塊,其記錄數(shù)據(jù)包括位置、長(zhǎng)度、是否壓縮等,如表8所示。
Table 8 Block information for the text表8 文本分塊信息
表中長(zhǎng)度是字符數(shù)。對(duì)于壓縮存儲(chǔ)(壓縮否=1),就是實(shí)際占用的字節(jié)數(shù),對(duì)于非壓縮存儲(chǔ)(壓縮否=0),一個(gè)字符占用兩字節(jié),所以實(shí)際占用的字節(jié)數(shù)要加倍。
實(shí)際存儲(chǔ)要比表8更為復(fù)雜,如果分塊數(shù)是n,則“長(zhǎng)度”是用n+1項(xiàng)升序排列的四字節(jié)整數(shù)aCP數(shù)組表達(dá)的,長(zhǎng)度是相鄰兩項(xiàng)的差值,即len[i]=len[i+1]-len[i],如表9所示。
Table 9 Calculate the length for aCP表9 aCP(用相鄰差值計(jì)算出長(zhǎng)度)
分塊的位置和壓縮狀況的存儲(chǔ)則更加復(fù)雜。8字節(jié)的aPcd變量指定文本位置和附加屬性,具體存儲(chǔ)格式[4]如圖1所示。
Figure 1 aPcd structure圖1 aPcd結(jié)構(gòu)
文本修改屬性PRM等與本課題關(guān)系不大,不作討論,只有FC還要細(xì)化,高位表示壓縮與否,如圖2所示。
Figure 2 Compression flags for the FC圖2 FC壓縮標(biāo)志
其中,B必須為0;A=1表示壓縮存儲(chǔ),ASCII編碼,存儲(chǔ)位置在FC/2;A=0表示非壓縮存儲(chǔ),Unicode編碼,F(xiàn)C為存儲(chǔ)位置。
FIB中0x152處的雙字clx指向Table流中的clx結(jié)構(gòu)。clx結(jié)構(gòu)先看一個(gè)字節(jié)clxt,取值1或2。
clxt=1,grpprl屬性。后跟兩個(gè)字節(jié)的grpprl計(jì)數(shù)器,再跟一系列g(shù)rpprl屬性,在此略去。clxt=2,分塊屬性,后跟四個(gè)字節(jié)分塊表計(jì)數(shù)器,再跟分塊表Plcfpcd,如圖3所示。
Figure 3 Plcfpcd structure圖3 Plcfpcd結(jié)構(gòu)
3.4 文本存儲(chǔ)實(shí)例
選取一MS-DOC文件,分析文本存儲(chǔ)情況如下:
(1) WordDocument流如圖4所示。
Figure 4 WordDocument stream圖4 WordDocument流
0A處的字單元option選項(xiàng)值=0x5 2f8,fWhichTblStm=option&0x0200=1,表示“1Table”。01A2處雙字,值為0x00 097 2C4。
(2) 在1Table流中0x00 097 2C4處提取clx結(jié)構(gòu),如圖5所示。
Figure 5 Clx structure in table stream圖5 Table流中Clx結(jié)構(gòu)
000972C4:02,00001300,得到:clx=02,len=0x1300。n=(0x1300-4)/(4+8)=0x195。
aCp從000972C9開(kāi)始存放,計(jì)算分塊長(zhǎng)度,如表9所示。
aPcd從000972C9+(195+1)*4=097921開(kāi)始存放,如圖6所示。
Figure 6 Clx structure in table stream(aPcd)圖6 Table流中Clx結(jié)構(gòu)(aPcd)
參照?qǐng)D1,劃分aPcd,得到:【0040 00000400 0000】,【0040 00000600 0000】,【0040 00000800 0000】,【0040 00000a00 0000】,【0040 40001c00 0000】,【0040 00001600 0000】,…
參照?qǐng)D2,解析分塊,以【0040 40001C00 0000】為例,40001C00的最高2 bit=01,=>B=0,A=1,F(xiàn)cCompressed=1,壓縮方式,F(xiàn)C=1c00/2=e00。
得到分塊的位置和壓縮情況:
FC/fCompressed:400/0,600/0,800/0,A00/0,E00/1,1600/0,…
綜合上述分析,得到文本數(shù)據(jù)分塊情況,如表8所示。
檢查2個(gè)分塊,如圖7和圖8,分別是非壓縮存儲(chǔ)的文本和壓縮存儲(chǔ)的文本。非壓縮存儲(chǔ)的文本每個(gè)ASCII字符占用兩個(gè)字節(jié),而壓縮存儲(chǔ)的文本每個(gè)ASCII字符占用一個(gè)字節(jié)。
Figure 7 Text in non-compressed圖7 非壓縮存儲(chǔ)的文本
Figure 8 Text in compressed圖8 壓縮存儲(chǔ)的文本
微軟復(fù)合文檔是結(jié)構(gòu)化的存儲(chǔ)文件,這種文件由微軟的OLE Structured Storage API來(lái)創(chuàng)建和管理。Storage有關(guān)函數(shù)(IStorage接口)可以用于文本信息提取,操作流程如圖9所示。
Figure 9 Flowchart of extracting the text圖9 文本信息提取流程圖
對(duì)Table流的處理關(guān)鍵是Plcfpcd結(jié)構(gòu)信息的處理。
在VC6開(kāi)發(fā)環(huán)境中,利用MFC,設(shè)計(jì)了一個(gè)復(fù)合文檔檢查工具,可以顯現(xiàn)復(fù)合文檔的結(jié)構(gòu)信息和結(jié)構(gòu)內(nèi)容,并能提取MS-DOC文件文本信息,如圖10所示。
Figure 10 Compound checker圖10 復(fù)合文檔結(jié)構(gòu)檢查工具
實(shí)驗(yàn)表明,該工具工作正常,提取的文本信息以文本形式保存,解決了MS-DOC文本跨塊斷裂和編碼格式不統(tǒng)一等問(wèn)題,對(duì)保存的文本文件進(jìn)行關(guān)鍵詞搜索,就不會(huì)出現(xiàn)漏判問(wèn)題。
關(guān)鍵詞搜索在搜索引擎、計(jì)算機(jī)取證等領(lǐng)域有著廣泛的應(yīng)用,但是可能出現(xiàn)漏判,明明存在的關(guān)鍵詞卻找不到。本文分析微軟復(fù)合文檔結(jié)構(gòu),研究MS-DOC文本存儲(chǔ)方式,根據(jù)分塊信息提取文本,并統(tǒng)一編碼格式,進(jìn)而進(jìn)行關(guān)鍵詞搜索,有效解決了對(duì)MS-DOC文件進(jìn)行關(guān)鍵詞搜索“漏判”的問(wèn)題。有關(guān)搜索引擎和計(jì)算機(jī)取證工具應(yīng)該作相應(yīng)改進(jìn)。
根據(jù)文件結(jié)構(gòu)特征,逐個(gè)突破,是解決關(guān)鍵詞搜索漏判的有效途徑。
[1] Microsoft.Windows compound binary file format specification[EB/OL].[2012-12-01].http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7A-D886/WindowsCompoundBinaryFileFormatSpecification.pdf.2010.4.
[2] Microsoft.Word97-2007 binary file format(doc) specification[EB/OL].[2012-12-01].http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7A-
D886/WindowsCompoundBinaryFileFormatSpecification.pdf.2008.4.
[3] Li Xiao-bo,Guan Hai-bing,Li Xiao-yong,et al.Security performance of file encryption mechanism in office[J]. Journal of Computer Applications, 2010,30(Suppl 1):126-129.(in Chinese)
[4] Microsoft.[MS-DOC]:Word (.doc) binary file format[EB/OL].[2012-12-01].http://msdn.microsoft.com/en-us/library/cc313153(v=office.12).aspx.2012.10.
附中文參考文獻(xiàn):
[3] 李小波,管海兵,李小勇,等. Office文件加密機(jī)制的安全性[J]. 計(jì)算機(jī)應(yīng)用, 2010,30(Suppl 1):126-129.
HUANGBu-gen,born in 1958,professor,his research interests include information security,and computer forensics.
伏娟(1979-),女,江蘇連云港人,研究方向?yàn)橛?jì)算機(jī)取證。E-mail:hafujuan@126.com
FUJuan,born in 1979,her research interest includes computer forensics.
ResearchonextractingtextfromMS-DOCfiles
HUANG Bu-gen1,FU Juan2
(1.Department of Computer Information and Cyber Security,Jiangsu Police Institute,Nanjing 210012;2.Huaian Municipal Public Security Bureau,Huaian 223005,China)
Keyword search is widely used in intelligence analysis, search engine and computer forensics. However, sometimes searching key words in MS-DOC files may fail to find out some matches, which are usually called false negatives. Microsoft compound document is composed by a series of stream stored in sectors. The streams and the sectors are managed through the directory and the sector allocation table. The text is stored in the MS-DOC fileWordDocumentstream, text storage is not necessarily continuous, and theTablestream records the block information. Keyword may be stored in different sectors that are not adjacent. Even the sectors are adjacent, the part of the keyword may be compressed, but the other part is not compressed. These cause the false negatives. Firstly, texts are extracted from theWordDocumentstream based on the block information in theTablestream, and they are encoded uniformly. Secondly, a keyword search is carried out. These two steps can avoid the false negative.
compound document;text extraction;keyword;search;computer forensics
1007-130X(2014)08-1505-07
2012-12-11;
:2013-03-05
國(guó)家社會(huì)科學(xué)基金資助項(xiàng)目(13BTQ046);公安技術(shù),江蘇省高等學(xué)?!笆濉敝攸c(diǎn)學(xué)科建設(shè)專(zhuān)項(xiàng)資金資助
TP391
:A
10.3969/j.issn.1007-130X.2014.08.014
黃步根(1958-),男,江蘇揚(yáng)中人,教授,研究方向?yàn)樾畔踩陀?jì)算機(jī)取證。E-mail:bghuang@sina.com
通信地址:210012 江蘇省南京市江蘇警官學(xué)院計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系
Address:Department of Computer Information and Cyber Security,Jiangsu Police Institute,Nanjing 210012,Jiangsu,P.R.China