从知识产权侵害案件看Microsoft PowerPoint演示文稿鉴定实践
2013-09-12刘惠萍罗文华
刘惠萍,罗文华
(1.西藏警官高等专科学校,西藏 拉萨 850003;2.中国刑事警察学院,辽宁 沈阳 110854)
1 案件背景
2012年3月,某市发生一起知识产权侵害案件。B公司涉嫌擅自使用A公司的Microsoft PowerPoint演示文稿进行商业宣传,令其多次投标成功,使A公司蒙受了巨额经济损失。调查人员针对B公司技术负责人的笔记本电脑进行了初查,在磁盘分区中发现一名为“公司介绍”的PPT演示文稿,内容是B公司为申请民用核安全设备制造许可证所作的介绍说明。经检查,发现该演示文稿中的技术能力、质量保证能力、申请活动范围等内容与A公司相关文件中的对应内容较为类似,但该负责人声称编制文稿时并未借鉴A公司任何材料,完全是其智力劳动的成果。为验证该负责人所述情况的真伪,调查人员针对该演示文稿进行了更为深入的分析。
2 鉴定实践
2.1 通过解析复合文档头部与目录入口信息定位CurrentUserAtom记录
调查人员决定首先通过Microsoft复合文档头部信息,解析出PowerPoint Document目录流地址信息,进而构建该目录流的扇区配置表与短扇区配置表[1]。图1所示为“公司介绍”演示文稿复合文档头部信息,分析可知该复合文档采用小字节序(偏移1CH处的0xFEFF);复合文档扇区大小为29=512(200H)字节(偏移1EH处的0x0009),短扇区大小为26=64(40H)字节(偏移20H处的0x0006);扇区配置表所使用的扇区总数为1(偏移2CH处的0x00000001);由于存放主扇区配置表的第一个扇区SID为FEFFFFFFH(偏移0044处的0xFEFFFFFF),即表示主扇区配置表并未使用附加扇区进行存储,而是全部存放于复合文档头部中;偏移4CH处存放的0x00000000表示扇区配置表仅占用SID为0的扇区,所以扇区配置表的偏移为200H+200H*00H=200H字节;用于存放短扇区配置表的第一个扇区SID为16H(偏移003C处的0x00000016),计算得出实际偏移为2E00H(200H+200H*16H);用于存放短扇区配置表的扇区总数为1(偏移0040处的0x00000001);存放目录流第一个扇区的SID为01H(偏移30处的0x00000001),即十进制的01,因此目录流第一个扇区距离该复合文件头的偏移为512(复合文件头部长度,200H)+512(扇区大小)*01=1024(400H)字节[2]。
图1 “公司介绍”演示文稿复合文档头部信息
依据偏移200H处的扇区配置表SID数组信息(图2),构建出如表1所示的扇区配置表;并根据偏移2E00H(图3)处所示信息构建出短扇区配置表(表2)。
图3 短扇区配置表中的SSID数组信息
接下来转移至偏移400H处的目录流入口,解析Root Entry、PowerPoint Document目录流信息(图4)。从Root Entry入口中重点提取短扇区所占用的第一个扇区SID信息,获知其为17H(偏移0474H处的0x00000017),结合表1与表2可知短扇区内容实际占用SID为17H和22H的两个扇区。解析Power-Point Document入口信息,可知该入口类型为User Stream(偏移04C2H处的0x02),目录流具体内容所处的第一个扇区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的扇区中[3]。
图4 Root Entry与PowerPoint Document目录流入口信息
继续转至4800H处解析Current User目录入口信息。该入口主要用于定位CurrentUserAtom记录所在的实际物理地址。从图5可以看出CurrentUserAtom第一个(短)扇区的SID为0AH(偏移4874处的0x0000000A),长度为29H=41D(偏移4878处的0x00000029)。因为41小于512,故CurrentUserAtom记录内容采用短扇区存放(从表2可知该记录只占用了1个短扇区),因此该记录的虚拟偏移距离为0AH*40H=280H。已知短扇区内容使用17H和22H两个扇区存放,依据计算所得偏移280H,可知该记录存放在22H扇区中,偏移为80H,因此CurrentUser-Atom记录实际物理地址为200H+22H*200H+80H=4680H。
图5 Current User目录入口信息
2.2 由CurrentUserAtom、UserEditAtom等记录追溯至DocumentContainer记录
转至4680H处,图6所示即为CurrentUserAtom记录的内容信息。可得offsetToCurrentEdit(UserEditAtom记录距离PowerPoint Document的偏移)值为3264H(偏移4690处的0x00003264)。由于3264H=200H*19H+64H,结合前文推导出的PowerPoint Document流实际所占扇区,可知偏移3264H在SID为29H扇区的偏移64处,而29H号扇区的偏移为200H+200H*29H=5400H。所以,UserEditAtom记录实际距离文件头的物理偏移为5400H+64H=5464H。
表1 扇区配置表
表2 短扇区配置表
图6 CurrentUserAtom记录信息
从图7表示的UserEditAtom记录内容中可知,偏移5474H处的offsetLastEdit值为0x000026C3,用于指向前一个UserEditAtom记录,换算可得实际物理偏移为2CC3H(200H+15H*200H+C3H);而偏移5478处的offsetPersistDirectory值为0x00003254,负责指向PersistDirectoryAtom记录。
图7 UserEditAtom记录信息
根据当前UserEditAtom记录中offsetPersistDirectory所指向的PersistDirectoryAtom信息,可查找到演示文稿最终保存的标题与文本信息,而并非残余编辑信息。因此需要依据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字节长度的persistId为该PersistDirectoryEntry记录所描述的Object的起始ID,此处为0x 000001;3字节长度的cPersist表示被描述的Object个数,此处为0x007;rgPersistOffset则为4字节长度的偏移指针(其个数由cPersist决定),表示具体Object距离Power-Point Document流的偏移。在PPT演示文稿中,DocumentContainer记录的ObjectID为1,MainMasterContainer记录的ObjectID为2,其余ObjectID通常情况下会分配给SlideContainer。因此可知DocumentContainer记录距离PowerPoint Document头部的偏移距离为0x00000000(2CA7处的0x00000000),即物理偏移0x00000600。
图9 PersistDirectoryAtom记录信息
2.3 基于SlideListWithTextSubContainerOrAtom记录解析出残余编辑信息
从图10可以看出,DocumentContainer中Record-Header项的头4字节固定为0x0F00E803,后四字节为记录长度11B3H;其后除了含有48字节的documentAtom外,其他所包含的记录长度都是可变或可选的,因此很难通过偏移距离定位记录选项。于是,调查人员在DocumentContainer记录范围内使用SlideListWithTextContainer的记录头标识“0F00F00F”作为关键字定位至该记录。
图10 DocumentContainer记录信息
SlideListWithTextContainer负责指定一组SlideListWithTextSubContainerOrAtom记录,其中每个记录包含有对演示文稿幻灯片及其所含文本的记录引用。SlideListWithTextContainer所包含的SlideListWithTextSubContainerOrAtom记录主要分为三种类型:SlidePersistAtom、TextHeaderAtom和TextCharsAtom。 SlidePersistAtom头四字节为0x0000F303,总长度为1CH字节,其偏移14H处的slideId用于指定被描述幻灯片的内部标识号;TextHeader Atom头四字节为0x00009F0F或0x10009F0F,偏移08H处的textType表示数据类型;TextCharsAtom头四字节为0x0000A00F,偏移04H处的recLen用于说明该记录中数据内容的长度,偏移08H处的textBytes即为具体数据内容[5]。从图11可知,SlideListWithTextSubContainerOrAtom中第一条TextHeaderAtom记录偏移08H处的textType值为0x00000000,说明对应TextSpecailInfoAtom记录中文本类型为“Title placeholder shape text”;第一条TextHeaderAtom记录偏移08H处的textType值为0 x00000001,说明对应TextCharsAtom记录中文本类型为“Body placeholder shape text”。调查人员经分析发现,该组SlideListWithTextSubContainerOrAtom记录所记载的内容即为现有“公司介绍”演示文稿的第一张幻灯片内容,于是将关注焦点移向第二组记录。
图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公司技术人员与设备的介绍。依据此原理还可追溯至另一张已被删除的幻灯片的残余信息,内容为A公司核级铸钢件制造质量保证大纲。经上述分析可知,B公司的“公司介绍”演示文稿中原有两张A公司技术与质量保证方面的幻灯片,均为申请民用核安全设备制造许可证资质不可或缺的内容,但在编辑过程中被删除了。该演示文稿中现有的B公司相应内容与被删除的A公司内容极其类似,只是个别数据有所不同,因此可以判定B公司技术负责人在编制该文稿时借鉴了A公司相关材料,并非像其所声称的完全是其智力劳动成果。
图13 解码后的标题与文本内容
3 结语
需要指出的是,Winhex和Encase均无法正常显示演示文稿中的中文残余编辑信息(Encase能够正常解码未被删除的幻灯片内容),因此即使在已经定位至TextCharsAtom记录的情况下,也无法立即获知具体内容。此时可以采用Unicode编码匹配等方法对残余编辑信息进行解析,从而获取重要证据或线索。依据本文所述方法,除可挖掘标题及大纲文本信息外,还可以分析出图片、图形、影音文件、表格、讲义、备注和母版内容,进而还原演示文稿完整的编辑过程。整个调查分析过程依赖于对PowerPoint演示文稿记录元素的深入了解,只有通过细致而全面的工作才能揭示隐藏其中的秘密。在PPT演示文稿已被彻底删除,并且无法恢复出完整文件的情况下,可使用本文所述关键字(必要时还需结合复合文档关键字)进行搜索,以期命中记录元素并实现碎片信息的关联。
[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.