Office文件结构解析

您所在的位置:网站首页 doc是一种什么格式 Office文件结构解析

Office文件结构解析

2024-07-13 08:35| 来源: 网络整理| 查看: 265

文章目录 Office文件Office2007之前的版本Office2007及之后的版本OOXML = OPC + \*MLOPC*ML docx文件的解析流程

Office文件

之前在项目开发过程中,进行文件类型判断时,发现doc和docx文件的结构是不同的,很是好奇,特来深究一番。

doc和docx、xls和xlsx、ppt和pptx的不同,其原理都是一样的。 doc是Office 2007之前的版本;docx是Office 2007之后的版本。下面详细介绍一下:

参考文档:

Office恶意文件解析与混淆研究 - 知乎 (zhihu.com) Office 文件解析入门 - 柯幽 - 博客园 (cnblogs.com)

Office2007之前的版本

可以看作二进制文件,文件前八个字节为 D0 CF 11 E0 A1 B1 1A E1。 在这里插入图片描述 这种文档格式是OLESS(OLE Structured Storage),微软采用的是OLE1.0的文档规范。可以用微软自带工具OffVis打开文档,直观地查看OLESS文档结构,可以发现它是由四部分组成。

OffVis下载地址: http://go.microsoft.com/fwlink/?LinkId=158791 在这里插入图片描述 在OLESSHeader中,有个clsidNull,它一般常用来区分各种CVE编号。注意OLESS中CLSID的存放位置和Rtf中的不同,Rtf中存放在\objdata控制字中。

CLSID:ClassID,类标识符,用作特定COM类的唯一标识符。是一个128位(16字节)的整数。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGC8zuhZ-1635845554490)(E:\Typora笔记\image\image-20211102153222318.png)]

Office2007及之后的版本

在原有Office文件格式的基础上加入了XML文件格式,这种新的文件格式称为OOXML(Office Open XML),相比于之前的Office文档结构更加清晰。

文件前四个字节为 50 4B 03 04,即PK…,PK代表ZIP算法的发明者(Phil Katz)。 在这里插入图片描述

OOXML = OPC + *ML OPC

OPC:一种基于zip+xml定义的文件存储格式。一个OPC文件,不管文件后缀是什么,本质上就是一个zip文件,可以用任何常见的解压软件进行解压。

XML:Extensible Markup Language,可扩展标记语言,和HTML很像。不过XML被用来传输和存储数据,而HTML是被用来显示数据。

上面的docx文件本质上就是一个OPC文件,我们将一个其后缀改成zip,然后解压,解压后的文档目录如下: 在这里插入图片描述 _rels下有一个文件:.rels

docProps下有两个文件:app.xml和core.xml

word下的文件如图: 在这里插入图片描述 OPC中有三个重要的概念:

Part:zip中的每一个文件都是一个Part,它可以是任何格式。在Office文件中,各种 Markup Language 定义的内容就作为 XML 存储在Part中。Relationship:一种特殊的Part,它描述了各个Part之间的依赖关系。OPC协议规定所有的Relationship都必须存储在名为 _rels 的文件夹中,且其中的文件名都必须以.rels为后缀。

​ 示例中_rels\\.rels的内容如下: 在这里插入图片描述 ​ 示例中word\\_rels\\document.xml.rels的内容如下: 在这里插入图片描述 每一个Relationship节点都代表一个依赖关系,各属性的意义如下:

属性名是否必须说明Id是唯一标识符,在当前文件中是唯一的,不同文件中可以重复Type是Target 的文件类型Target是目标 Part 的路径,可以用相对路径也可以用绝对路径TargetMode否目标的类型,值可以是 Internal 或者 External (默认是Internal),表示 Target 是OPC文件内部的还是外部的 ContentTypes:在zip解压后的根目录下,名为[Content_Types].xml,它记录了该OPC文件中除了它自己以外的所有文件的类型。示例中 [Content_Types].xml 的内容如下: 在这里插入图片描述

可以发现有两种标签:Default 和 Override。Default 指明了拥有文件后缀名和文件类型的对应关系,Override 指明了某一个文件的文件类型。

以第一句Default为例,它表示,所有后缀是png的文件都是image/png类型的文件。

在OPC中,不建议根据文件后缀名来判断一个文件的类型,而应该根据ContentTypes文件中记录的信息来判断。

*ML

*ML:* Markup Language,标记语言,是一种用XML来描述数据的语言。

*ML全名说明PMLPresentation Markup LanguagePPT 中各种数据的描述WMLWordprocessing Markup LanguageWord 中数据的描述SMLSpreadsheet Markup LanguageExcel 中数据的描述DMLDrawing Markup LanguageOffice 所有格式中都可以使用,用来描述矢量图形,图表等SharedMLShared Markup Language描述了文档属性,音视频,图片,文档主题等内容,它被所有Office文件使用 docx文件的解析流程 读取 [Content_Types].xml 文件,获得所有文件的类型;读取 _rels\.rels 这个Relationship 文件,获取 document.xml 文件的位置,即 word\document.xml;读取 word\document.xml 文件以及其关联的 Relationship 文件 wprd\_rels\document.xml.rels,得到该Word所有文件的存储位置,如word中插图所在文件夹为word\media。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3