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