office文档格式简要介绍
本文目的:理清office文档格式,学习何为OLE。
一、OpenXML (OOXML)
OpenXML(OOXML) 是微软在Office 2007中提出的一种新的文档格式,Office 2007中的Word、Excel、PowerPoint默认均采用OpenXML格式。OpenXML在2006年12月成为了ECMA规范的一部分,编号为ECMA376;并于2008年通过国际标准化组织的表决,并于两个月后公布为ISO/IEC 29500国际标准。
二、OLE(Object Linking and Embedding)
Office 97-2003的存储规范:OLE(Object Linking and Embedding,对象连接与嵌入),是一种面向对象的技术,利用这种技术可开发重复使用的软件组件(COM)。OLE是Windows的一组服务功能,提供了一种以源于不同应用软件的信息建立复合文档的强有力方法。在对象连接和嵌入系统中,对象可以是几乎所有的数据类型,例如文字、点阵图像和矢量图形,甚至于声音、注解和录像剪辑等均可。对象被赋予了只能属性,即参与连接和嵌入的对象本身带有计算机指令。目前,OLE有两种版本:OLE1.0和OLE2.0。
三、Docx(Open XML)
Docx这种新的Word格式有三个主要的组成部分:部件、内容类型和关系。
部件
部件就是对应于office文档解压后的一个个文件。这些文件都是包中的文档部件。
Word2007的文档部件大致有以下几种:
在word中,使用单独的文件(xml)来表示文档中的每个部分以及附加的内容。他们需要依赖于各部件之间的正确关系保证文件的完整和有效性,如果可以准确保持部件之间的关系,那么文件结构可以任意更改。
以docx文档为例,说明openxml文档内容的结构。新建一个docx文档(需随便输些内容,不然没法儿解析),docx和docm文件实际上都是压缩文件,使用zip解压到文件夹中,它的目录结构如下:
事实上,在word2007及以上的版本当中,一个文档则是由一个文件夹(或者说容器),由内部的部件各自定义属性和数据,并相互依赖而产生的。一个文档可能会包含这些目录和组件:
[Content_Types].xml
这个文件描述的是整个文档内容的类型,把各个xml文件组合成一个整体。
docProps文件夹
这个文件夹中的xml记录了docx文档的主要属性信息,
app.xml:描述文档的其它属性,文档类型,版本,只读信息,共享,安全属性等特定的文件属性;
core.xml:描述文件的创建时间,标题,主题和作者等给与openxml约定文档格式的通用文件属性。
rels文件夹
这个文件夹存放了所有指定的rels文件。
rels文件
这些文件描述了文档结构中的其实关系,可以叫做关系部件。
item1.xml
包含了一些文档中出现的数据。例如自定义XML数据部件。
内容类型
每个文档部件都有一个特定的内容类型。一个部件的内容类型描述了这种文件类型的内容。例如,XML部件包含了WordXML格式定义的标记,而内容类型可以用来分析文档的组成。
典型的内容类型是以word application开头,然后是厂商的名称。在内容类型中,word verder被简写为vnd。所有内容类型都被指定为以application/vnd.ms-word开头。如果内容类型是一个XML文件,那么它的URL将以xml结尾。其它的非XML内容的类型,例如图片,则没有这种结尾。下面是一些典型的内容类型:
1.application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes + xml
它是一个描述Word文档中的尾注文档部件的内容类型。其中,+xml 表示它是一个XML文件。
2.application/vnd.openxmlformats-package.core-properties+xml
它是一个描述核心文档属性部件的内容类型。其中,+xml表示它是一个XML文件。
3.image/png
图片的内容类型。其中没有+xml部分,表示内容类型不是XML文件。
部件关系
部件关系文档记录了文档部件之间的逻辑连接,比如根文档部件拥有一个http://schemas.openxmlformats.org/package/2006/relationships/header类型到application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml
内容类型部件的关系。这表示部件之间的关系是,目标部件是源部件的页眉。而这个页眉部件可能也有自己的关系。在包中,可以通过rels目录中的.rels文件进行关系定位。
Doc文档结构
Word 97-03的后缀是doc,doc文件本身是一个OLE类型文件。OLE(Object Linking and Embedding)文件主要由storages(仓库)和streams(流)组成,而ole本身其实是一种面向对象的技术,该技术允许程序之间链接和嵌入对象数据,建立复合文档。
【知识扩充:仓库与流】
复合文档的原理就像一个文件系统(文件系统:如FAT与NTFS)。复合文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。将复合文档想象成你的D盘,D盘用的是NTFS(NT File System)格式,流就相当于D盘里的文件,仓库就相当于D盘里的文件夹。
流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(root stroge)。
rtf文档结构
富文本格式(Rtf,rich text tormat)是微软的文本和图像信息交换指定的格式。Rtf文件可以划分为文件头和文档区两个部分组成。文件头和文档区由文本、控制字和控制符组成,同时利用{…}来表明层级关系。
Rtf文件内容 控制字 解释
文件头 rtfN 版本号
fonttbl 字体表
filetbl 文件表
listtable 便目表
文档区 info 信息组
pict 图片
object 对象
sv 绘图对象值
sn 绘图对象名称
objupdate 自动更新机制
(objupdate很重要,攻击样本中经常使用,确保OLE对象自动加载、更新)
三、关于doc、docx、docm
准备
1.工具:offvis(如下) + 010editor
链接: https://pan.baidu.com/s/1ivh3VgkkIn3oUnpUP-7C8Q 提取码: e6u2
2.doc、docx、docm文档
【小菜提醒】如何建立这三种文档?
注:要在文档中输入些许内容,不然后边没法儿解析。
新建一个word文档:点击【文件】——>【另存为】——>保存类型中可以选择文档类型:
现在才知道原来文件是这样来的!!不过文档建成功的那一瞬间好开心 ,享受从0到无穷的过程吧 ^~^ ~~~
关于doc、docx、docm
1.doc是一种普通的OLE文件(复合文件),可以包含宏代码,而.docx和.docm文件,实际上都是压缩文件。二进制文件头数据截取如下
》》Office 2007之前的版本可以看作二进制文件。其中十六进制文件头为 D0 CF 11 E0 A1 B1 1A E1,这是固定的 OLESS 文档格式文件头。
.doc文件本身是一个OLE类型的文件,使用工具offvis打开doc文件,可以解析出OLE数据格式。
》》Office 2007之后的样本,文件头为PK,是zip算法的发明者Phil Katz名字的缩写。Office 2007之后的文档本质上是一个压缩包。由于文档中包含ooxml文件,因此不能用offvis进行解析,按下offvis的Parser按钮确实无法解析文件,这类文档可以通过解析出.xml和.rels来获取内容和逻辑关系。
四、开始解析OLE文件数据格式
用offivis打开doc文件,可以看到清晰的文件结构。
烦移步学习,OLE详细分析:https://blog.csdn.net/Cody_Ren/article/details/103886098
参考:
https://www.anquanke.com/post/id/175548
https://blog.csdn.net/Cody_Ren/article/details/103886098
office文档格式简要介绍相关推荐
- 前端实现pdf,word,doc等Office文档格式在线预览
在做一些后台管理或者h5页面的时候 通常会遇到Office文档格式的在线预览功能.虽然看似简单,里面却隐藏着很大的坑.简单是因为现在有各种插件可以下载实现,坑是因为涉及到一些兼容性和安全性等各种千奇百 ...
- 恶意Office文档解析——1. Office文档格式解析
写在前面:这是我最近在做的一个小课题,按照研究进度不定期更新.主要是学习前人的研究思路,自己开发的内容会比较少. 复合文档的概念 复合文档不仅包含文本,而且包括图形.电子数据表格.声音.视频等其他信息 ...
- Android实现在线预览office文档(Word,Pdf,excel,PPT.txt等格式)
1.概述 我们都知道,Android原生并没有提供浏览office文档格式的相关Api,在安卓端想要实现在线预览office文档的功能显然很是复杂,我们手机安装QQ浏览器时,在手机打开office文档 ...
- Office 文档解析 文档格式和协议
本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件.在 Office 2007 之前使用的不公开标准的二进制格式定义.在 Office 200 ...
- NTKO OFFICE文档控件
目录 前言 什么是ntko 准备工作 实战演练 总结 一.前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便. ...
- html document怎么转换成word,Doxillion Document Converter – 将 DOC、DOCX、PDF、WPS、Word、HTML文档格式互相转换...
在办公领域经常会遇到各种各样的文件格式,因此常常有DOC.DOCX.PDF.WPS.Word.HTML 等各种不同格式的文档互相转换的需求.虽然网上有很多在线转换网站或 文档格式转换软件,不过今天推荐 ...
- Office Open XML 文档格式
Office Open XML文档格式的详细说明以及规格是在2006年欧洲计算机制造商协会批准的一项标准, 编号是Ecma376, 到发稿时为止已经通过了ISO国际标准化组织的评审成为了一项国际标准I ...
- office 里的链接如何显示成图片_微软Office文档 | Office小程序介绍(一)
微软中国Office 365 for WeChat团队开发了四款好用方便的小程序--「微软Office文档」「微软听听文档」「微软AI识图」「微软海报」.它们的受众已经十分庞大,但相信仍旧有不少人与其 ...
- [Office 2010 易宝典]怎样直接将Office文档保存为PDF格式?
大致内容 如何将Office文档保存问PDF格式: 通过菜单点击的方式把Microsoft Word文档另存为PDF文档. 操作步骤 1.点击"文件"菜单. 2.点击"另 ...
最新文章
- 2020年财富金字塔出炉,你距离高净值还有多远?
- CG CTF WEB /x00
- C语言两班平均成绩,用C语言编程平均分数
- MainActivity向子Fragment传值
- DotNetCore跨平台~配置文件与配置代码如何共存
- golang 读取本机唯一码_UDI医疗器械唯一标识系统,您身边的UDI专家
- PLSQL_案例优化系列_明白索引是如何让SQL运行飞快(案例5)
- hdu5354 Bipartite Graph
- 华信mysql数据恢复_华信Mysql数据库修复工具1.0
- Oracle 学习之RMAN(四)增量备份
- ios移动端 FullScreen
- c语言的二维数组的指针访问,用指针访问二维数组
- mysql mpm_部署zabbix监控mysql (三) MPM插件介绍和部署
- 幼儿园调查过程怎么写_幼儿园家长的调查问卷话术
- Centos6.3 安装rhythmbox播放器
- 一文看完计算机基础知识总结
- Cisco IPCC概述
- JavaScript进阶(二)
- 文件改日期 电梯卡dump_小区的电梯卡,PM3把卡信息读取出来了,看了下。不知道怎么修改。请教大神。如何修改时间。谢谢...
- mysql 鼠标右键无法使用_笔记本电脑鼠标右键无反应怎么办