1. 研究環(huán)境
ms-offcie 2010 Word
2. 研究工具
ms-office 2010 Word、vs code(含XMLTools)
3. 研究過程
3.1 創(chuàng)建文檔
創(chuàng)建內(nèi)容完全相同的兩個(gè)Word文檔
1.doc
和1.docx
铁蹈。
3.2 限制編輯
分別對文檔
1.doc
和1.docx
進(jìn)行限制編輯并設(shè)置密碼:123456
宽闲。
3.3 轉(zhuǎn)換為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
字段沿腰,可以明顯發(fā)現(xiàn)有<w:documentProtection w:edit="read-only" w:formatting="on" w:enforcement="on" w:unprotectPassword="2EF4C71F"/>
字段览徒,且可明顯看出密碼:123456已經(jīng)被加密為:2EF4C71F,而限制方式也可一看到為只讀且強(qiáng)制颂龙。如圖3.1所示:
同理习蓬,在1.xml
文件中搜索password
字段,卻查無結(jié)果措嵌,由此可分析躲叼,ms-office 2007之后對內(nèi)部存儲機(jī)制做出了調(diào)整,但其根本原理未改變企巢,因此押赊,可以打單假設(shè),改為搜索字段名w:documentProtection
包斑,為增加搜索成功率流礁,此處僅搜索Protection
,可以發(fā)現(xiàn)有明顯字段<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=="/>
罗丰,在其中任然可見其限制信息只讀與強(qiáng)制神帅,但標(biāo)記方式均有所改變,密碼也變?yōu)榧用芊绞礁鼜?qiáng)的Hash128萌抵,如圖3.2所示:
4. 猜測與驗(yàn)證
此時(shí)我們可以打單猜測找御,ms-office是以XML標(biāo)簽的方式存儲相關(guān)信息元镀,而刪除或者修改相關(guān)XML標(biāo)簽即可實(shí)現(xiàn)相關(guān)更改。
經(jīng)驗(yàn)證:文件
1-2003.xml
將w:unprotectPassword
標(biāo)簽的值置空霎桅,則在Word-審閱中無需輸入密碼即可取消編輯限制栖疑,而刪除或注釋該標(biāo)簽,則編輯限制功能為未開啟狀態(tài)滔驶;同理遇革,刪除或注釋文件1.xml
,也可使編輯限制功能為未開啟狀態(tài)揭糕。**
5. 結(jié)論
無論是 ms-office 2003及之前萝快,還是2007及之后,其存儲方式均以標(biāo)簽形式存儲著角,故可以通過修改標(biāo)簽值的方式實(shí)現(xiàn)某種正常情況下無法實(shí)現(xiàn)的功能揪漩,如:在無密碼情況下解除編輯限制。
6. 后記
在Word 2003 XML格式的XML文件中提取的
w:unprotectPassword
的值吏口,也可通過以二進(jìn)制的方式打開原*.doc
文件奄容,并反響搜索字段后置空也可實(shí)現(xiàn)清楚密碼的效果。例如:字段w:unprotectPassword="2EF4C71F"
产徊,則可在二進(jìn)制文件中搜索1FC7 F42E
昂勒,并將該8位字段替換為0000 0000
即可。