office文件是目前應用最廣泛的文件格式,但很多人都沒有為office檔案建立完善的安全防護措施,也沒有養成進行檔案備份的良好習慣,所以一旦出現操作失誤、病毒破壞、系統故障等情況,就有可能造成當前正在編輯的word、excel文件和access資料庫等受到損壞,下次無法開啟。那麼一旦遇到這類文件被破壞或者丟失我們是否就束手無策了呢,當然不是,我們可以借助專業知識和小工具進行受損文件修復。
office文件格式一直以來都是微軟公司的技術機密,至今未曾向外界公布。那麼我們現在要做的是修復受損的文件,如果真的對office檔案資料結構一無所知的話那麼最終也只能止步於「傻瓜式」的文件修復工具水平。想要提高自己的文件修復水平,在最大程度上挽救丟失的資料,那就必須對office文件二進位制格式有所了解,下面我們以word文件為例子,給大家介紹word檔案內部結構和office文件格式的部分秘密。為什麼說是部分呢,因為全部的office文件格式可能只有微軟自己才知道了。
國內最早分析「復合文件二進位制結構」的是反巨集病毒技術人員,但國際上在巨集病毒沒出現前針對微軟復合文件二進位制結構的分析就已經開始了。進行這種分析的根本目的是為了在其他作業系統下(這裡主要指的是linux和其他開源作業系統下)能夠開發出可讀寫微軟辦公軟體使用的文件。
「復合文件」是微軟引入的一種在檔案內部存放結構化資訊的方法。例如:我們寫一篇文章,如果這篇文章沒有任何格式資訊和嵌入影象,那麼使用沒有任何結構的文字格式就可以了,但是一篇完善的文章裡可能包含段落、格式、字型、顏色、插圖等,這樣簡單的無格式文字就無法滿足需要了。所以需要在檔案的內部存放很多結構,包括段落的文字、字型、甚至段落本身資訊等。針對這種需求、以及電子資料表、演示製作等軟體的需要,微軟開發了一種「檔案中的檔案系統」,也就是「復合文件」結構。
在復合文件中,可以有很多目錄,在每個目錄下可以有子目錄,目錄和子目錄包含了「儲存」,乙個儲存相當於磁碟上的乙個檔案,整個復合文件就形成了乙個類似於磁碟上的目錄和檔案所組成的樹狀結構。如果在視窗環境下使用復合路徑,可以利用作業系統提供的功能對復合檔案進行讀寫。
與硬碟劃分扇區的方法類似,所有使用laola檔案格式的檔案由512 b的資料塊組成(有興趣的可以驗證一下,所有的word、excel或其他office檔案大小都是512b的倍數),資料塊的序號從-1開始,如下圖所示。
序號為-1的塊是整個檔案的檔案頭塊,存放了復合檔案的一些整體資訊,結構見下圖:
在512 b的資料塊基礎上,復合檔案中包括了兩種最基本的結構:
第一種是由512 b的大塊連線起來的大塊鏈。如果對以檔案分配表「fat」為基礎的檔案系統熟悉的話,可以很容易的理解大塊鏈的概念,只要知道乙個大塊鏈的開始塊序號,通過大塊映像圖就可以找到這一條大塊鏈的所有內容。乙個典型的大塊映像圖如下圖所示:
從圖中可以看到,如果乙個大塊鏈的開始序號是0的話(該處的內容是5),那麼這個大塊鏈包括:序號為0的資料塊、序號為5的資料塊(該處的內容是7)、序號為7的資料塊(該處的內容是9)、序號為9的資料塊(該處的內容是0b)、序號為0b的資料塊(該處的內容是-1,表示這是該鏈的最後乙個資料塊)。
對於比較小的結構,如果以512 b為單位的話會造成比較大的空間浪費,所以專門使用乙個大塊鏈來存放比較小的資料塊,小於4096 b的資料結構使用小塊鏈來表示,小塊鏈的組成和定址方式和大塊鏈非常類似,唯一不同的是小塊鏈裡面對小塊的定址不是在整個復合檔案範圍內的,而是在某乙個特定的大塊鏈範圍內,這個大塊鏈的開始塊序號會在以後的更新中敘述。
目錄鏈:是復合檔案最基本的資料鏈,描述了復合檔案的目錄結構資訊。目錄鏈的開始在頭塊中可以找到。目錄鏈中包括了復合檔案的目錄資訊,每乙個目錄項的大小是128 b,所以 目錄鏈的乙個塊可以包括4個目錄項,第乙個目錄項是根目錄項,名字叫「根入口(root entry)」,任何復合檔案裡這都是第乙個目錄項。乙個典型的根目錄項如下圖所示:
下面是目錄項的結構說明:
由於上面的資料結構並不是**於微軟的官方文件,其中包含了很多猜測的成分,所以很多內容暫時無法判斷其意義,有些結構說明可能與微軟原意不同,不過我們利用這個結構對微軟的大量文件進行分析,至今尚未發現有明顯錯誤。
在基本的laola檔案結構基礎上,字處理文件、電子資料表文件具有不同的內部目錄結構,下面介紹乙個典型word檔案內部目錄結構
a.doc
—1 table:一些資料表
—compobj:通用的物件
—objectpool:物件池,是乙個目錄,包括word文件中嵌入的影象、聲音或者其他物件
—worddocument:實際的文字和格式化資訊就存放在這裡
—summaryinformation:摘要資訊
—documentsummaryinformation:其他的摘要資訊
Office文件,pdf文件轉swf
以下操作的環境,ubuntu server版本,64位 openoffice swftools 先檢視操作是多少位的,然後去相應的jdk,和tomcat,最少是jdk6以上的版本 將jdk和tomcat解壓 開啟 etc environment 檔案 在path後面新增配置資訊 在path最後加上乙...
Office 文件解析 文件格式和協議
本文討論的 office 文件指的是 office 2007 及以後的 pptx 和 xlsx 等格式的檔案。在 office 2007 之前使用的不公開標準的二進位制格式定義。在 office 2007 之後的文件格式使用 ooxml 國際標準定義,本文將告訴大家這個標準的協議和格式 在 offi...
文件損壞了怎麼修復?文件修復方法分享
本文章介紹的office文件的資料恢復的原理和程式設計方法,都 於對office文件結構的分析。如果對office文件的結構進行更深入的研究,將會發現更好的修復方法,從而挽救更多的資料,並有可能開發出能對各類受損office文件自動進行全面恢復的工具軟體。但是對於一些並不了解文件結構的人可以嘗試以下...