1. 研究环境
ms-offcie 2010 Word
2. 研究工具
ms-office 2010 Word、vs code(含XMLTools)
3. 研究过程
3.1 创建文档
创建内容完全相同的两个Word文档
1.doc
和1.docx
。
3.2 限制编辑
分别对文档
1.doc
和1.docx
进行限制编辑并设置密码:123456
。
3.3 转换为XML文件
将
1.docx
分别另存为1.xml
文件和1-2003.xml
文件,其中1.xml
文件为Word XML格式,1-2003.xml
文件是Word 2003 XML格式。
3.4研究XML文件
使用vs code分别打开
1.xml
文件和1-2003.xml
文件,在1-2003.xml
文件中搜索password
字段,可以明显发现有<w:documentProtection w:edit="read-only" w:formatting="on" w:enforcement="on" w:unprotectPassword="2EF4C71F"/>
字段,且可明显看出密码:123456已经被加密为:2EF4C71F,而限制方式也可一看到为只读且强制。如图3.1所示:
同理,在1.xml
文件中搜索password
字段,却查无结果,由此可分析,ms-office 2007之后对内部存储机制做出了调整,但其根本原理未改变,因此,可以打单假设,改为搜索字段名w:documentProtection
,为增加搜索成功率,此处仅搜索Protection
,可以发现有明显字段<w:documentProtection w:edit="readOnly" w:formatting="1" w:enforcement="1" w:cryptProviderType="rsaFull" w:cryptAlgorithmClass="hash" w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="4" w:cryptSpinCount="100000" w:hash="drnTzQx3Q5lB7S2C5wR7rZ5dIFM=" w:salt="aiNkLZAzg84e7DT4XpBqMQ=="/>
,在其中任然可见其限制信息只读与强制,但标记方式均有所改变,密码也变为加密方式更强的Hash128,如图3.2所示:
4. 猜测与验证
此时我们可以打单猜测,ms-office是以XML标签的方式存储相关信息,而删除或者修改相关XML标签即可实现相关更改。
经验证:文件
1-2003.xml
将w:unprotectPassword
标签的值置空,则在Word-审阅中无需输入密码即可取消编辑限制,而删除或注释该标签,则编辑限制功能为未开启状态;同理,删除或注释文件1.xml
,也可使编辑限制功能为未开启状态。**
5. 结论
无论是 ms-office 2003及之前,还是2007及之后,其存储方式均以标签形式存储,故可以通过修改标签值的方式实现某种正常情况下无法实现的功能,如:在无密码情况下解除编辑限制。
6. 后记
在Word 2003 XML格式的XML文件中提取的
w:unprotectPassword
的值,也可通过以二进制的方式打开原*.doc
文件,并反响搜索字段后置空也可实现清楚密码的效果。例如:字段w:unprotectPassword="2EF4C71F"
,则可在二进制文件中搜索1FC7 F42E
,并将该8位字段替换为0000 0000
即可。