Ano ang DOC file?
Ang mga file na may extension na .doc ay kumakatawan sa mga dokumentong nabuo ng Microsoft Word o iba pang mga dokumento sa pagpoproseso ng salita sa binary file format. Ang extension ay unang ginamit para sa plain text na dokumentasyon sa ilang iba’t ibang mga operating system. Maaari itong maglaman ng ilang iba’t ibang uri ng data gaya ng mga larawan, naka-format pati na rin ang plain text, mga graph, mga chart, mga naka-embed na bagay, mga link, mga pahina, pag-format ng pahina, mga setting ng pag-print at marami pang iba. Ang format ay popular para sa lahat ng uri ng dokumentasyon dahil sa iba’t ibang opsyon na inaalok nito sa mga user para sa pagsusulat ng mga manwal, panukala, detalye, resume, artikulo o anumang katulad na dokumento. Ang na-update na bersyon ng DOC ay DOCX na nakabatay sa Office OpenXML na ang mga detalye ay bukas na available.
Maikling Kasaysayan
Ginamit ng WordPerfect, isang produkto ng Corel, ang DOC bilang extension ng kanilang proprietary format. Noong 1980s, nanatiling pinili ng WordPerfect ang paggamit sa karamihan ng mga computer dahil sa madaling pagkakaroon nito, pagsunod sa karamihan ng mga computer machine at Operating system. Gayunpaman, nakita ng WordPerfect ang pagbagsak nito sa Windows OS noong ipinakilala ng Microsoft ang Microsoft Word bilang produkto nito para sa format ng file ng mga dokumento at pinili ang extension ng DOC para sa kanilang proprietary format. Habang lalong naging popular ang Microsoft Word, ang format ng DOC file ay sumailalim sa ilang mga rebisyon mula sa Microsoft Word 97 - 2003. Taong 2007 nang ang default na DOC file format ay pinalitan ng Office Open XML format (kilala bilang DOCX) at ang mga bagong bersyon ng Ginagamit na ngayon ng Microsoft Word ang bagong extension na ito bilang default na format ng file.
Mga Detalye ng Format ng DOC File - Higit pang Impormasyon
Hindi inilabas ng Microsoft ang mga detalye ng format ng DOC file sa loob ng mahabang panahon hanggang 2008. Noong Peb 2008, inilabas ang mga detalye ng format para sa format ng .doc file sa ilalim ng Microsoft Open Specification Promise. Bagama’t hindi inilalarawan ng detalye ang lahat ng feature na ginagamit ng DOC format, nagbibigay ito ng sapat na impormasyon tungkol sa kaalamang kinakailangan para gumana sa format ng file na ito. Gayunpaman, kinakailangan ang reverse engineering upang magamit ang magagamit na impormasyon. Ilang beses nang na-update ang mga detalye at ang pinakabagong rebisyon ay 8.0 na na-update noong Agosto 2018 .
Ilang Pangunahing Konsepto
Bago tayo pumunta sa anumang mga detalye tungkol sa mga detalye ng format ng file para sa DOC, ilang pangunahing konsepto ang kailangang maunawaan upang gumana sa format ng file na ito.
File Information Base (Fib): Ang Fib structure ay naglalaman ng impormasyon tungkol sa dokumento at tinutukoy ang mga file pointer sa iba’t ibang bahagi na bumubuo sa dokumento. Ang Fib ay isang variable na istraktura ng haba. Maliban sa base na bahagi na naayos sa laki, ang bawat seksyon ay nauuna sa isang field ng bilang na tumutukoy sa laki ng susunod na seksyon.
Posisyon ng Character: Kinatawan ng CP o Character Position ang isang unsigned 32-bit integer na nagsisilbing zero-based na index ng isang character sa text ng dokumento. Ang lokasyon at laki ng bawat character sa file ay hindi maaaring makuha nang direkta at kailangang kalkulahin gamit ang paunang tinukoy na algorithm. Kasama sa mga karakter ang:
- Teksto ng dokumento
- Mga anchor ng mga bagay tulad ng mga footnote o textbox
- Kontrolin ang mga character tulad ng mga marka ng talata at mga marka ng cell ng talahanayan
PLC: Ang istruktura ng PLC ay isang hanay ng mga CP na sinusundan ng isang hanay ng mga elemento ng data. Ang mga elemento ng data para sa anumang PLC ay dapat na parehong laki ng zero o higit pang mga byte, at para sa kadahilanang ito, ang bilang ng mga CP ay dapat na higit sa isa kaysa sa bilang ng mga elemento ng data. Ang mga istruktura ng PLC ay may iba’t ibang uri kung saan ang bawat uri ay tumutukoy kung ang mga duplicate na CP ay pinapayagan para sa ganoong uri o hindi. Ang istraktura ng PLC ay binubuo ng:
- aCP (variable length): Isang hanay ng mga elemento ng CP. Ang bawat uri ng PLC istruktura ay tumutukoy sa kahulugan ng mga elemento ng CP at ang pinapayagang hanay.
- aData (variable length): Ang bawat uri ng PLC istruktura ay tumutukoy sa istraktura at kahulugan ng mga elemento ng data, anumang mga paghihigpit sa bilang ng mga elemento ng data, at anumang mga paghihigpit sa data na nakapaloob dito. Tinutukoy din nito ang kaugnayan sa pagitan ng mga elemento ng data at ng kaukulang mga CP.
Valid na Pagpili: Ang mga .DOC file construct ay pangunahing inilalarawan ng isang hanay ng mga CP. Mayroong ilang mga panuntunan na tinukoy ng Microsoft na dapat sundin sa ganoong sitwasyon.
STTB: Ang STTB ay isang string table na binubuo ng isang header na sinusundan ng hanay ng mga elemento. Tinutukoy ng cData value ang bilang ng mga elementong nakapaloob sa array.
Property Storage: Ang isang word file ay maaaring may iba’t ibang elemento gaya ng text, mga talata, mga talahanayan, mga larawan at mga seksyon kung saan ang bawat isa ay maaaring magkaroon ng sarili nitong mga katangian. Ang mga katangian ng mga ito ay naka-imbak sa Word file bilang mga pagkakaiba mula sa default. Ang ganitong mga pagkakaiba ay tinukoy ng PRl na binubuo ng isang Single Property Modifier (Sprm) at ang operand nito.Maaaring matukoy ng isang application ang panghuling hanay ng mga property sa pamamagitan ng aplikasyon ng mga listahan ng Prls.
Password Protection: Maaaring protektahan ng password ang mga file ng salita, kung saan maaaring gamitin ang isa sa mga sumusunod na mekanismo.
- XOR Obfuscation
- Office binary document RC4 encryption
- Office binary document RC4 CryptoAPI encryption
Kung ang FibBase.fEncrypted at FibBase.fObfuscation ay parehong 1, ang file ay na-obfuscate sa pamamagitan ng paggamit ng XOR obfuscation.
Kung ang FibBase.fEncrypted ay 1 at ang FibBase.fObfuscation ay 0, ang file ay naka-encrypt sa pamamagitan ng paggamit ng alinman sa Office Binary Document RC4 Encryption o Office Binary Document RC4 CryptoAPI Encryption, na may EncryptionHeader na nakaimbak sa unang FibBase.lKey bytes ng Table stream. Tinutukoy ng EncryptionHeader.EncryptionVersionInfo kung aling mekanismo ng pag-encrypt ang ginamit upang i-encrypt ang file.
Istraktura ng File
Ang binary Word file sa orihinal nito ay isang OLE compound file na binubuo ng ilang storage at stream. Ang mga storage at stream na ito ay may sariling istraktura at sukat, na tumutukoy sa mga parameter para sa pagsusulat at pagbabasa. Ito ay:
WordDocument Stream
Ang stream na ito ay naglalaman ng text ng dokumento at iba pang impormasyong na-reference mula sa iba pang bahagi ng file. Ang stream ay walang paunang natukoy na istraktura maliban sa FIB sa simula na sapilitan at dapat ay nasa offset 0. Ang stream na ito ay hindi dapat mas malaki sa 2147 MB.
1TableStream o 0TableStream
Ang binary Word file ay maaaring maglaman ng Table Stream na kilala bilang 1Table stream o 0Table stream. Hindi bababa sa isa sa mga ito ang dapat na naroroon sa dokumento. Gayunpaman, kung ang isang dokumento ay naglalaman ng parehong 1Table at 0Table stream, tanging ang stream na nire-reference ng base.fWhichTblStm ang ginagamit. DAPAT balewalain ang hindi na-reference na stream. HINDI DAPAT mas malaki sa 2147 MB ang Table Stream.
Data Stream
Ang stream ng Data ay walang paunang natukoy na istraktura. Naglalaman ito ng data na isinangguni mula sa FIB o mula sa iba pang bahagi ng file. Ang stream na ito ay hindi kailangang naroroon kung walang mga sanggunian dito. HINDI DAPAT mas malaki sa 2147 MB ang stream ng Data.
Object Pool Storage
Ang storage ng Object Pool ay naglalaman ng mga storage para sa mga naka-embed na OLE object. Ang storage na ito ay hindi kailangang naroroon kung walang naka-embed na OLE object sa dokumento.
Custom XML Data Storage
Ang Custom XML Data storage ay isang opsyonal na storage na ang pangalan ay DAPAT na “MsoDataStore”.
Stream ng Impormasyon ng Buod
Ang stream ng Summary Information ay isang opsyonal na stream na ang pangalan ay DAPAT na “\005SummaryInformation”, kung saan ang \005 ay ang character na may value na 0x0005, at hindi ang string literal na “\005”.
Stream ng Impormasyon ng Buod ng Dokumento
Ang stream ng Impormasyon ng Buod ng Dokumento ay isang opsyonal na stream na ang pangalan ay DAPAT na “\005DocumentSummaryInformation”, kung saan ang \005 ay ang character na may value na 0x0005, hindi ang string literal na “\005”.
Stream ng Encryption
Ang Encryption stream ay isang opsyonal na stream na ang pangalan ay DAPAT na “encryption”.HINDI DAPAT naroroon ang stream na ito maliban kung ang parehong mga sumusunod na kundisyon ay natutugunan:
- Ang dokumento ay naka-encrypt gamit ang Office Binary Document RC4 CryptoAPI Encryption.
- Ang halaga ng fDocProps ay nakatakda sa EncryptionHeader.Flags.
Imbakan ng Macros
Ang Macros storage ay isang opsyonal na storage na naglalaman ng mga macro para sa file. Kung mayroon, DAPAT itong Project Root Storage.
Imbakan ng Mga Lagda ng XML
Ang XML signature storage ay isang opsyonal na storage na ang pangalan ay DAPAT na “_xmlsignatures”.
Signature Stream
Ang signature stream ay isang opsyonal na stream na ang pangalan ay DAPAT na “_signatures”. Ang stream na ito ay naglalaman ng mga digital na lagda.
Imbakan ng Data Space sa Pamamahala ng Mga Karapatan sa Impormasyon
Ang storage ng Data Space sa Pamamahala ng Mga Karapatan sa Impormasyon ay isang opsyonal na storage na ang pangalan ay DAPAT na “\006DataSpaces”, kung saan ang \006 ay ang character na may value na 0x0006, at hindi ang literal na string na “\006”. Kung naroroon ang storage na ito, DAPAT ding naroroon ang Protected Content Stream. Kung naroroon ang storage na ito, DAPAT basahin ang lahat ng tinukoy na stream at storage maliban sa storage na ito at ang Protektadong Content Stream mula sa Protektadong Content Stream gaya ng tinukoy sa [MS-OFFCRYPTO] at kung mayroon sa mga stream at storage na iyon sa labas ng Protektadong Content Stream, DAPAT ipagwalang-bahala ang mga ito.
Protektadong Content Stream
Ang Protected Content Stream ay isang opsyonal na stream na ang pangalan ay DAPAT na “\009DRMCContent”, kung saan ang \009 ay ang character na may value na 0x0009, at hindi ang string literal na “\009”. Kung naroroon ang stream na ito, DAPAT ding naroroon ang Information Rights Management Data Space Storage.