■ 河北 李云飛
編者按:在工作中,Office辦公軟件是必備之物,但有時(shí)也免不了某些軟件出現(xiàn)問題,導(dǎo)致工作效率受到制約,本文講解一些Word文件的修復(fù)方法。
Office 2007之后的Word文檔格式都采用了Open XML的文檔格式,Open XML格式上使用了標(biāo)準(zhǔn)的ZIP算法對(duì)文件內(nèi)部數(shù)據(jù)進(jìn)行了壓縮處理,可以通過ZIP解壓軟件對(duì)其進(jìn)行解壓操作。
現(xiàn)在大多數(shù)的Word文件都是docx格式的,在工作中也經(jīng)常會(huì)遇到docx文件的損壞,當(dāng)docx文件由于各種原因(例如藍(lán)屏等)損壞后,可以通過Office的自動(dòng)備份來找回,如果沒有備份就只有通過修復(fù)文件來找回?cái)?shù)據(jù)了。
標(biāo)準(zhǔn)zip文件格式由三部分組成:zip壓縮數(shù)據(jù)段、中央目錄區(qū)、中央目錄區(qū)尾部。
其中zip壓縮數(shù)據(jù)段又分為zip文件頭信息和壓縮數(shù)據(jù)。如圖1、2、3所示。表格中帶☆的是在文件修復(fù)中經(jīng)常用到的。
圖1 ZIP壓縮文件頭結(jié)構(gòu)
圖2 中央目錄區(qū)文件頭結(jié)構(gòu)
利用ZIP解壓軟件對(duì)docx文檔解壓之后,發(fā)現(xiàn)很多文件夾和XML文件。其中,“[Content_Types].xml”定義了各部分的內(nèi)容類型,“\_rals.rels”定義了部件之間的關(guān)聯(lián)關(guān)系,“/docProps”中是一些文檔的屬性信息,“/word”目錄里面存放著文檔的所有信息, “header.xml”和“footer.xml”存放著頁眉頁腳信息,“/word/image”中存放著Word中的嵌入的圖片信息,“/word/document.xml”存放著Word中的文本信息。
當(dāng)docx文件損壞之后可以通過WinHex提取document.xml文件來恢復(fù)docx中的文本信息。
通過WinHex中的搜索功能搜索關(guān)鍵字/Word/document.xml,找到該文件的起始位置,ZIP壓縮數(shù)據(jù)段的總長度L=30+壓縮后的大小+文件名的長度+擴(kuò)展區(qū)的大小,通過圖1可以算出ZIP壓縮數(shù)據(jù)段的總長度。
選中document.xml的壓縮數(shù)據(jù)段復(fù)制到WinHex新建文件中。document.xml對(duì)應(yīng)的中央目錄區(qū)數(shù)據(jù)可以通過WinHex搜索/Word/document.xml得到,中央目錄區(qū)是以0x02014B50開始的,由于數(shù)據(jù)存儲(chǔ)模式是Little-Endian模式,所以顯示504B0102,如圖4所示。
中央目錄尾區(qū)可以通過WinHex搜索0x06054B50找到,由于數(shù)據(jù)存儲(chǔ)模式是Little-Endian模式,所以這里用WinHex搜索十六進(jìn)制的504B0506,中央目錄區(qū)尾位于文件的最后,所以直接把WinHex拉到最后找就可以看到了,如圖5所示。
最后,把找到的document.xml的中央目錄區(qū)數(shù)據(jù)和最后的中央目錄區(qū)尾部數(shù)據(jù)依次復(fù)制到壓縮數(shù)據(jù)段后面。
圖3 中央目錄區(qū)尾部結(jié)構(gòu)
圖4 Little-Endian模式下顯示504B0102
圖5 中央目錄尾區(qū)顯示
由于中央目錄、中央目錄尾復(fù)制到了WinHex新建文件中,里面對(duì)應(yīng)的一些數(shù)值發(fā)生了變化,只有修改正確了才能把把document.xml正常解壓出來。
因?yàn)楫?dāng)document.xml的壓縮數(shù)據(jù)復(fù)制到WinHex新建文件中的時(shí)候相對(duì)位移就變成了0。所以要修改表2中央目錄區(qū)偏移量42中的局部文件相對(duì)位移的值為0x0000,圖3中央目錄區(qū)尾部偏移量8的核心目錄數(shù)量改為1,偏移量10的核心目錄的結(jié)構(gòu)總數(shù)改為1,偏移量12的核心目錄大小改為63(0x3F),偏移量16核心目錄開始位置改為0x532C,可以通過WinHex中的偏移量得到核心目錄開始位置是0x532C。
修改完中央目錄區(qū)和中央目錄區(qū)尾的數(shù)據(jù)后就可以把文件另存為ZIP格式,然后正常解壓出document.xml文件。
document.xml文件直接打開數(shù)據(jù)顯示的不是很直觀,可以通過新建一個(gè)docx文件然后替換document.xml,替換后打開docx文件會(huì)很直觀的顯示出恢復(fù)的文本數(shù)據(jù)。
通過WinHex手動(dòng)提取文本費(fèi)時(shí)費(fèi)力,一般Word文件修復(fù)可以通過一些現(xiàn)成的軟件來修復(fù)的,例如EasyRecovery、OfficeFIX等。
OfficeFIX可以修復(fù)Word、Excel、PPT等一些文件,使用也很簡(jiǎn)便,首先選擇要修復(fù)的文件類型,然后選擇要修復(fù)的文件,最后點(diǎn)擊Recover進(jìn)行修復(fù)。雖然工具修復(fù)效率比較高,但是有些時(shí)候利用工具修復(fù)的效果不是很理想,這時(shí)就要通過WinHex手動(dòng)修復(fù)文件了。