劉惠萍,羅文華
(1.西藏警官高等??茖W(xué)校,西藏 拉薩 850003;2.中國刑事警察學(xué)院,遼寧 沈陽 110854)
2012年3月,某市發(fā)生一起知識產(chǎn)權(quán)侵害案件。B公司涉嫌擅自使用A公司的Microsoft PowerPoint演示文稿進(jìn)行商業(yè)宣傳,令其多次投標(biāo)成功,使A公司蒙受了巨額經(jīng)濟(jì)損失。調(diào)查人員針對B公司技術(shù)負(fù)責(zé)人的筆記本電腦進(jìn)行了初查,在磁盤分區(qū)中發(fā)現(xiàn)一名為“公司介紹”的PPT演示文稿,內(nèi)容是B公司為申請民用核安全設(shè)備制造許可證所作的介紹說明。經(jīng)檢查,發(fā)現(xiàn)該演示文稿中的技術(shù)能力、質(zhì)量保證能力、申請活動(dòng)范圍等內(nèi)容與A公司相關(guān)文件中的對應(yīng)內(nèi)容較為類似,但該負(fù)責(zé)人聲稱編制文稿時(shí)并未借鑒A公司任何材料,完全是其智力勞動(dòng)的成果。為驗(yàn)證該負(fù)責(zé)人所述情況的真?zhèn)?,調(diào)查人員針對該演示文稿進(jìn)行了更為深入的分析。
調(diào)查人員決定首先通過Microsoft復(fù)合文檔頭部信息,解析出PowerPoint Document目錄流地址信息,進(jìn)而構(gòu)建該目錄流的扇區(qū)配置表與短扇區(qū)配置表[1]。圖1所示為“公司介紹”演示文稿復(fù)合文檔頭部信息,分析可知該復(fù)合文檔采用小字節(jié)序(偏移1CH處的0xFEFF);復(fù)合文檔扇區(qū)大小為29=512(200H)字節(jié)(偏移1EH處的0x0009),短扇區(qū)大小為26=64(40H)字節(jié)(偏移20H處的0x0006);扇區(qū)配置表所使用的扇區(qū)總數(shù)為1(偏移2CH處的0x00000001);由于存放主扇區(qū)配置表的第一個(gè)扇區(qū)SID為FEFFFFFFH(偏移0044處的0xFEFFFFFF),即表示主扇區(qū)配置表并未使用附加扇區(qū)進(jìn)行存儲(chǔ),而是全部存放于復(fù)合文檔頭部中;偏移4CH處存放的0x00000000表示扇區(qū)配置表僅占用SID為0的扇區(qū),所以扇區(qū)配置表的偏移為200H+200H*00H=200H字節(jié);用于存放短扇區(qū)配置表的第一個(gè)扇區(qū)SID為16H(偏移003C處的0x00000016),計(jì)算得出實(shí)際偏移為2E00H(200H+200H*16H);用于存放短扇區(qū)配置表的扇區(qū)總數(shù)為1(偏移0040處的0x00000001);存放目錄流第一個(gè)扇區(qū)的SID為01H(偏移30處的0x00000001),即十進(jìn)制的01,因此目錄流第一個(gè)扇區(qū)距離該復(fù)合文件頭的偏移為512(復(fù)合文件頭部長度,200H)+512(扇區(qū)大?。?01=1024(400H)字節(jié)[2]。
圖1 “公司介紹”演示文稿復(fù)合文檔頭部信息
依據(jù)偏移200H處的扇區(qū)配置表SID數(shù)組信息(圖2),構(gòu)建出如表1所示的扇區(qū)配置表;并根據(jù)偏移2E00H(圖3)處所示信息構(gòu)建出短扇區(qū)配置表(表2)。
圖3 短扇區(qū)配置表中的SSID數(shù)組信息
接下來轉(zhuǎn)移至偏移400H處的目錄流入口,解析Root Entry、PowerPoint Document目錄流信息(圖4)。從Root Entry入口中重點(diǎn)提取短扇區(qū)所占用的第一個(gè)扇區(qū)SID信息,獲知其為17H(偏移0474H處的0x00000017),結(jié)合表1與表2可知短扇區(qū)內(nèi)容實(shí)際占用SID為17H和22H的兩個(gè)扇區(qū)。解析Power-Point Document入口信息,可知該入口類型為User Stream(偏移04C2H處的0x02),目錄流具體內(nèi)容所處的第一個(gè)扇區(qū)SID為02H(偏移04F4H處的0x00000002),長度為3288H(偏移04F8H處的0x00003288),通過表1可知PowerPoint Document流內(nèi)容實(shí)際存放于SID為02H、03H、04H、05H、06H、
07H、08H、09H、0AH、0BH、0CH、0DH、0EH、0FH、10H、11H、12H、13H、14H、15H、24H、25H、26H、27H、28H和29H的扇區(qū)中[3]。
圖4 Root Entry與PowerPoint Document目錄流入口信息
繼續(xù)轉(zhuǎn)至4800H處解析Current User目錄入口信息。該入口主要用于定位CurrentUserAtom記錄所在的實(shí)際物理地址。從圖5可以看出CurrentUserAtom第一個(gè)(短)扇區(qū)的SID為0AH(偏移4874處的0x0000000A),長度為29H=41D(偏移4878處的0x00000029)。因?yàn)?1小于512,故CurrentUserAtom記錄內(nèi)容采用短扇區(qū)存放(從表2可知該記錄只占用了1個(gè)短扇區(qū)),因此該記錄的虛擬偏移距離為0AH*40H=280H。已知短扇區(qū)內(nèi)容使用17H和22H兩個(gè)扇區(qū)存放,依據(jù)計(jì)算所得偏移280H,可知該記錄存放在22H扇區(qū)中,偏移為80H,因此CurrentUser-Atom記錄實(shí)際物理地址為200H+22H*200H+80H=4680H。
圖5 Current User目錄入口信息
轉(zhuǎn)至4680H處,圖6所示即為CurrentUserAtom記錄的內(nèi)容信息??傻胦ffsetToCurrentEdit(UserEditAtom記錄距離PowerPoint Document的偏移)值為3264H(偏移4690處的0x00003264)。由于3264H=200H*19H+64H,結(jié)合前文推導(dǎo)出的PowerPoint Document流實(shí)際所占扇區(qū),可知偏移3264H在SID為29H扇區(qū)的偏移64處,而29H號扇區(qū)的偏移為200H+200H*29H=5400H。所以,UserEditAtom記錄實(shí)際距離文件頭的物理偏移為5400H+64H=5464H。
表1 扇區(qū)配置表
表2 短扇區(qū)配置表
圖6 CurrentUserAtom記錄信息
從圖7表示的UserEditAtom記錄內(nèi)容中可知,偏移5474H處的offsetLastEdit值為0x000026C3,用于指向前一個(gè)UserEditAtom記錄,換算可得實(shí)際物理偏移為2CC3H(200H+15H*200H+C3H);而偏移5478處的offsetPersistDirectory值為0x00003254,負(fù)責(zé)指向PersistDirectoryAtom記錄。
圖7 UserEditAtom記錄信息
根據(jù)當(dāng)前UserEditAtom記錄中offsetPersistDirectory所指向的PersistDirectoryAtom信息,可查找到演示文稿最終保存的標(biāo)題與文本信息,而并非殘余編輯信息。因此需要依據(jù)offsetLastEdit指向的前一個(gè)UserEditAtom記錄才能追溯至隱藏于演示文稿中的殘余編輯信息[4]。從2CC3H處的UserEditAtom記錄信息(圖8)可知,該記錄偏移2CD7H處的offsetPersist-Directory值為0x0000269B,指向PersistDirectoryAtom記錄,換算得到物理地址2C9BH(15H*200H+200H+9BH)。
圖8 前一個(gè)UserEditAtom記錄信息
圖9所示為PersistDirectoryAtom記錄信息,0x00007217為該記錄的頭部標(biāo)識,從2CA3H開始為PersistDirectoryEntry記錄(圖9)。PersistDirectoryEntry中含有persistId、cPersist、rgPersistOffset三項(xiàng)。其中5字節(jié)長度的persistId為該P(yáng)ersistDirectoryEntry記錄所描述的Object的起始ID,此處為0x 000001;3字節(jié)長度的cPersist表示被描述的Object個(gè)數(shù),此處為0x007;rgPersistOffset則為4字節(jié)長度的偏移指針(其個(gè)數(shù)由cPersist決定),表示具體Object距離Power-Point Document流的偏移。在PPT演示文稿中,DocumentContainer記錄的ObjectID為1,MainMasterContainer記錄的ObjectID為2,其余ObjectID通常情況下會(huì)分配給SlideContainer。因此可知DocumentContainer記錄距離PowerPoint Document頭部的偏移距離為0x00000000(2CA7處的0x00000000),即物理偏移0x00000600。
圖9 PersistDirectoryAtom記錄信息
從圖10可以看出,DocumentContainer中Record-Header項(xiàng)的頭4字節(jié)固定為0x0F00E803,后四字節(jié)為記錄長度11B3H;其后除了含有48字節(jié)的documentAtom外,其他所包含的記錄長度都是可變或可選的,因此很難通過偏移距離定位記錄選項(xiàng)。于是,調(diào)查人員在DocumentContainer記錄范圍內(nèi)使用SlideListWithTextContainer的記錄頭標(biāo)識“0F00F00F”作為關(guān)鍵字定位至該記錄。
圖10 DocumentContainer記錄信息
SlideListWithTextContainer負(fù)責(zé)指定一組SlideListWithTextSubContainerOrAtom記錄,其中每個(gè)記錄包含有對演示文稿幻燈片及其所含文本的記錄引用。SlideListWithTextContainer所包含的SlideListWithTextSubContainerOrAtom記錄主要分為三種類型:SlidePersistAtom、TextHeaderAtom和TextCharsAtom。 SlidePersistAtom頭四字節(jié)為0x0000F303,總長度為1CH字節(jié),其偏移14H處的slideId用于指定被描述幻燈片的內(nèi)部標(biāo)識號;TextHeader Atom頭四字節(jié)為0x00009F0F或0x10009F0F,偏移08H處的textType表示數(shù)據(jù)類型;TextCharsAtom頭四字節(jié)為0x0000A00F,偏移04H處的recLen用于說明該記錄中數(shù)據(jù)內(nèi)容的長度,偏移08H處的textBytes即為具體數(shù)據(jù)內(nèi)容[5]。從圖11可知,SlideListWithTextSubContainerOrAtom中第一條TextHeaderAtom記錄偏移08H處的textType值為0x00000000,說明對應(yīng)TextSpecailInfoAtom記錄中文本類型為“Title placeholder shape text”;第一條TextHeaderAtom記錄偏移08H處的textType值為0 x00000001,說明對應(yīng)TextCharsAtom記錄中文本類型為“Body placeholder shape text”。調(diào)查人員經(jīng)分析發(fā)現(xiàn),該組SlideListWithTextSubContainerOrAtom記錄所記載的內(nèi)容即為現(xiàn)有“公司介紹”演示文稿的第一張幻燈片內(nèi)容,于是將關(guān)注焦點(diǎn)移向第二組記錄。
圖11 第一組SlideListWithTextSubContainerOrAtom記錄信息
第二組(圖12)記錄中第一條TextHeaderAtom記錄偏移08H處的textType值為0x00000000,對應(yīng)TextCharsAtom記錄偏移04H處的recLen值為0x00000026,表明標(biāo)題內(nèi)容長度為38,偏移08H處的textBytes即為具體標(biāo)題內(nèi)容。而第二條TextHeader-Atom記錄的textType選項(xiàng)值為0x00000001,對應(yīng)TextCharsAtom記錄中的recLen值為0x000001B2,表明文本內(nèi)容長度為434,textBytes選項(xiàng)中即為具體文本內(nèi)容。
圖12 第二組SlideListWithTextSubContainerOrAtom記錄信息
由于Winhex無法正常顯示Unicode編碼,因此圖12中標(biāo)題與文本信息均為亂碼。將其解碼后,得出如圖13所示信息。其中標(biāo)題為“安徽某某集團(tuán)某某鑄造有限公司申請文件”,而“安徽某某集團(tuán)某某鑄造有限公司”正是A公司;文本內(nèi)容則為關(guān)于A公司技術(shù)人員與設(shè)備的介紹。依據(jù)此原理還可追溯至另一張已被刪除的幻燈片的殘余信息,內(nèi)容為A公司核級鑄鋼件制造質(zhì)量保證大綱。經(jīng)上述分析可知,B公司的“公司介紹”演示文稿中原有兩張A公司技術(shù)與質(zhì)量保證方面的幻燈片,均為申請民用核安全設(shè)備制造許可證資質(zhì)不可或缺的內(nèi)容,但在編輯過程中被刪除了。該演示文稿中現(xiàn)有的B公司相應(yīng)內(nèi)容與被刪除的A公司內(nèi)容極其類似,只是個(gè)別數(shù)據(jù)有所不同,因此可以判定B公司技術(shù)負(fù)責(zé)人在編制該文稿時(shí)借鑒了A公司相關(guān)材料,并非像其所聲稱的完全是其智力勞動(dòng)成果。
圖13 解碼后的標(biāo)題與文本內(nèi)容
需要指出的是,Winhex和Encase均無法正常顯示演示文稿中的中文殘余編輯信息(Encase能夠正常解碼未被刪除的幻燈片內(nèi)容),因此即使在已經(jīng)定位至TextCharsAtom記錄的情況下,也無法立即獲知具體內(nèi)容。此時(shí)可以采用Unicode編碼匹配等方法對殘余編輯信息進(jìn)行解析,從而獲取重要證據(jù)或線索。依據(jù)本文所述方法,除可挖掘標(biāo)題及大綱文本信息外,還可以分析出圖片、圖形、影音文件、表格、講義、備注和母版內(nèi)容,進(jìn)而還原演示文稿完整的編輯過程。整個(gè)調(diào)查分析過程依賴于對PowerPoint演示文稿記錄元素的深入了解,只有通過細(xì)致而全面的工作才能揭示隱藏其中的秘密。在PPT演示文稿已被徹底刪除,并且無法恢復(fù)出完整文件的情況下,可使用本文所述關(guān)鍵字(必要時(shí)還需結(jié)合復(fù)合文檔關(guān)鍵字)進(jìn)行搜索,以期命中記錄元素并實(shí)現(xiàn)碎片信息的關(guān)聯(lián)。
[1]Microsoft Corporation.Windows compound binary file format specification.Microsoft Corporation 2008[Z].
[2]Rentz D.OpenOffice.org’s documentation of the Microsoft compound document[Z].the spreadsheet project.Available online at:http://OpenOffice.org,http://sc.openoffice.org/compdocfileformat.pdf 2007.
[3]沙晶,錢偉.微軟復(fù)合文檔結(jié)構(gòu)分析及文件恢復(fù)[J].中國司法鑒定,2011,(6):59-61.
[4]Microsoft Corporation.Microsoft Office PowerPoint 97–2007 binary file format(.ppt)specification[Z].Microsoft Corporation 2008.
[5]Burch N,Kozlov Y.POI-HSLF Java API to access Microsoft PowerPoint format files[Z].The Apache Software Foundation.Available online at:http://poi.apache.org/slideshow/ppt-fileformat.pdf 2005.