ไฟล์ DOC คืออะไร??
ไฟล์ที่มีนามสกุล .doc แสดงถึงเอกสารที่สร้างโดย Microsoft Word หรือเอกสารประมวลผลคำอื่นๆ ในรูปแบบไฟล์ไบนารี เดิมส่วนขยายนี้ใช้สำหรับเอกสารข้อความล้วนบนระบบปฏิบัติการที่แตกต่างกันหลายระบบ สามารถบรรจุข้อมูลหลายประเภท เช่น รูปภาพ จัดรูปแบบเช่นเดียวกับข้อความธรรมดา กราฟ แผนภูมิ วัตถุฝังตัว ลิงก์ หน้า การจัดรูปแบบหน้า การตั้งค่าการพิมพ์ และอื่นๆ อีกมากมาย รูปแบบนี้เป็นที่นิยมสำหรับเอกสารทุกประเภทเนื่องจากมีตัวเลือกที่หลากหลายสำหรับผู้ใช้ในการเขียนคู่มือ ข้อเสนอ ข้อมูลจำเพาะ ประวัติย่อ บทความ หรือเอกสารอื่น ๆ ที่คล้ายคลึงกัน DOC เวอร์ชันอัปเดตคือ DOCX ซึ่งใช้ Office OpenXML ซึ่งมีข้อกำหนดเฉพาะที่เปิดเผยได้
ประวัติย่อ
WordPerfect ซึ่งเป็นผลิตภัณฑ์ของ Corel ใช้ DOC เป็นส่วนขยายของรูปแบบที่เป็นกรรมสิทธิ์ของตน ในปี 1980 WordPerfect ยังคงเป็นทางเลือกในการใช้งานบนคอมพิวเตอร์ส่วนใหญ่ เนื่องจากความพร้อมใช้งานที่ง่ายดาย สอดคล้องกับเครื่องคอมพิวเตอร์และระบบปฏิบัติการส่วนใหญ่ อย่างไรก็ตาม WordPerfect มองเห็นการล่มสลายบน Windows OS เมื่อ Microsoft แนะนำ Microsoft Word เป็นผลิตภัณฑ์สำหรับรูปแบบไฟล์เอกสาร และเลือกนามสกุล DOC สำหรับรูปแบบที่เป็นกรรมสิทธิ์ของตน เนื่องจาก Microsoft Word ได้รับความนิยมมากขึ้นเรื่อยๆ รูปแบบไฟล์ DOC จึงได้รับการแก้ไขหลายครั้งจาก Microsoft Word 97 - 2003 ในปี 2007 รูปแบบไฟล์ DOC เริ่มต้นถูกแทนที่ด้วยรูปแบบ Office Open XML (รู้จักกันในชื่อ DOCX) และเวอร์ชันใหม่ของ Microsoft Word ใช้ส่วนขยายใหม่นี้เป็นรูปแบบไฟล์เริ่มต้น
ข้อมูลจำเพาะรูปแบบไฟล์ DOC - ข้อมูลเพิ่มเติม
Microsoft ไม่ได้เผยแพร่ข้อกำหนดรูปแบบไฟล์ DOC เป็นเวลานานจนถึงปี 2008 ในเดือนกุมภาพันธ์ 2008 ข้อกำหนดรูปแบบได้รับการเผยแพร่สำหรับรูปแบบไฟล์ .doc ภายใต้ Microsoft Open Specification Promise แม้ว่าข้อมูลจำเพาะจะไม่ได้อธิบายคุณลักษณะทั้งหมดที่ใช้โดยรูปแบบ DOC แต่ก็ให้ข้อมูลที่เพียงพอเกี่ยวกับความรู้ที่จำเป็นในการทำงานกับรูปแบบไฟล์นี้ ยังคงต้องทำวิศวกรรมย้อนรอยเพื่อใช้ประโยชน์จากข้อมูลที่มีอยู่ ข้อมูลจำเพาะได้รับการปรับปรุงหลายครั้ง และล่าสุด การแก้ไข คือ 8.0 ซึ่งอัปเดตเมื่อเดือนสิงหาคม 2018 .
แนวคิดพื้นฐานบางประการ
ก่อนที่เราจะลงรายละเอียดใดๆ เกี่ยวกับข้อกำหนดรูปแบบไฟล์สำหรับ DOC แนวคิดพื้นฐานบางอย่างจำเป็นต้องเข้าใจเพื่อให้สามารถทำงานกับรูปแบบไฟล์นี้ได้
ฐานข้อมูลไฟล์ (Fib): โครงสร้าง Fib ประกอบด้วยข้อมูลเกี่ยวกับเอกสารและระบุตัวชี้ไฟล์ไปยังส่วนต่างๆ ที่ประกอบกันเป็นเอกสาร Fib เป็นโครงสร้างความยาวผันแปร ยกเว้นส่วนฐานซึ่งมีขนาดคงที่ ทุกส่วนจะนำหน้าด้วยช่องนับที่ระบุขนาดของส่วนถัดไป
ตำแหน่งอักขระ: CP หรือตำแหน่งอักขระแสดงถึงจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม ซึ่งทำหน้าที่เป็นดัชนีฐานศูนย์ของอักขระในข้อความเอกสาร ไม่สามารถดึงตำแหน่งและขนาดของอักขระแต่ละตัวในไฟล์ได้โดยตรง และจำเป็นต้องคำนวณโดยใช้อัลกอริทึมที่กำหนดไว้ล่วงหน้า ตัวละครประกอบด้วย:
- ข้อความของเอกสาร
- จุดยึดของวัตถุ เช่น เชิงอรรถหรือกล่องข้อความ
- ควบคุมอักขระ เช่น เครื่องหมายย่อหน้าและเครื่องหมายเซลล์ตาราง
PLC: โครงสร้าง PLC เป็นอาร์เรย์ของ CP ตามด้วยอาร์เรย์ขององค์ประกอบข้อมูล องค์ประกอบข้อมูลสำหรับ PLC ใดๆ จะต้องมีขนาดเท่ากับศูนย์หรือมากกว่า และด้วยเหตุนี้ จำนวนของ CP จึงต้องมากกว่าจำนวนขององค์ประกอบข้อมูลหนึ่งเท่า โครงสร้าง PLC มีประเภทต่างๆ กัน โดยแต่ละประเภทจะระบุว่าอนุญาตให้ใช้ CP ที่ซ้ำกันสำหรับประเภทนั้นหรือไม่ โครงสร้าง PLC ประกอบด้วย:
- aCP (ความยาวผันแปร): อาร์เรย์ขององค์ประกอบ CP โครงสร้าง PLC แต่ละประเภทจะระบุความหมายขององค์ประกอบ CP และช่วงที่อนุญาต
- aData (ความยาวผันแปร): โครงสร้าง PLC แต่ละประเภทจะระบุโครงสร้างและความหมายขององค์ประกอบข้อมูล ข้อจำกัดใดๆ เกี่ยวกับจำนวนองค์ประกอบข้อมูล และข้อจำกัดใดๆ เกี่ยวกับข้อมูลที่อยู่ในนั้น นอกจากนี้ยังระบุความสัมพันธ์ระหว่างองค์ประกอบข้อมูลและ CP ที่สอดคล้องกัน
การเลือกที่ถูกต้อง: โครงสร้างไฟล์ .DOC อธิบายโดยช่วงของ CPs เป็นหลัก มีกฎจำนวนหนึ่งที่ระบุโดย Microsoft เพื่อให้ปฏิบัติตามในกรณีดังกล่าว
STTB: STTB คือตารางสตริงที่ประกอบด้วยส่วนหัวที่ตามด้วยอาร์เรย์ขององค์ประกอบ ค่า cData ระบุจำนวนองค์ประกอบที่มีอยู่ในอาร์เรย์
ที่เก็บคุณสมบัติ: ไฟล์ word อาจมีองค์ประกอบต่างๆ กัน เช่น ข้อความ ย่อหน้า ตาราง รูปภาพ และส่วนที่แต่ละองค์ประกอบสามารถมีคุณสมบัติของตัวเองได้ คุณสมบัติของสิ่งเหล่านี้จะถูกเก็บไว้ในไฟล์ Word ซึ่งแตกต่างจากค่าเริ่มต้น ความแตกต่างดังกล่าวระบุโดย PRl ที่ประกอบด้วย Single Property Modifier (Sprm) และตัวถูกดำเนินการ แอปพลิเคชันสามารถกำหนดคุณสมบัติชุดสุดท้ายได้โดยใช้รายการของ Prls
การป้องกันด้วยรหัสผ่าน: ไฟล์ Word สามารถป้องกันด้วยรหัสผ่านได้เช่นกัน ซึ่งสามารถใช้หนึ่งในกลไกต่อไปนี้ได้
- XOR ทำให้งงงวย
- การเข้ารหัสเอกสารไบนารี RC4 ของ Office
- เอกสารไบนารีของ Office การเข้ารหัส RC4 CryptoAPI
ถ้า FibBase.fEncrypted และ FibBase.fObfuscation เป็น 1 ทั้งคู่ ไฟล์จะถูกทำให้ยุ่งเหยิงโดยใช้ XOR ทำให้ยุ่งเหยิง
ถ้า FibBase.fEncrypted เป็น 1 และ FibBase.fObfuscation เป็น 0 ไฟล์จะถูกเข้ารหัสโดยใช้การเข้ารหัส Office Binary Document RC4 หรือ Office Binary Document RC4 CryptoAPI Encryption โดยมี EncryptionHeader เก็บไว้ใน FibBase.lKey ไบต์แรกของสตรีมตาราง EncryptionHeader.EncryptionVersionInfo ระบุว่ากลไกการเข้ารหัสใดที่ใช้ในการเข้ารหัสไฟล์
โครงสร้างไฟล์
ไฟล์ Word ไบนารีในต้นฉบับคือไฟล์ผสม OLE ที่ประกอบด้วยที่เก็บข้อมูลและสตรีมจำนวนมาก ที่เก็บข้อมูลและสตรีมเหล่านี้มีโครงสร้างและขนาดของตัวเอง ซึ่งระบุพารามิเตอร์สำหรับการเขียนและการอ่าน เหล่านี้คือ:
สตรีมเอกสาร Word
สตรีมนี้มีข้อความในเอกสารและข้อมูลอื่นๆ ที่อ้างอิงจากส่วนอื่นๆ ของไฟล์ สตรีมไม่มีโครงสร้างที่กำหนดไว้ล่วงหน้านอกเหนือจาก FIB ในตอนเริ่มต้นซึ่งเป็นข้อบังคับและควรอยู่ที่ออฟเซ็ต 0 สตรีมนี้ต้องมีขนาดไม่เกิน 2147 MB
1TableStream หรือ 0TableStream
ไฟล์ Word แบบไบนารีสามารถมี Table Streams ที่เรียกว่า 1Table stream หรือ 0Table stream ควรมีอย่างน้อยหนึ่งรายการในเอกสาร อย่างไรก็ตาม หากเอกสารมีทั้งสตรีม 1Table และ 0Table จะใช้เฉพาะสตรีมที่อ้างอิงโดย base.fThatTblStm เท่านั้น ต้องละเว้นสตรีมที่ไม่ได้อ้างอิง Table Stream ต้องมีขนาดไม่เกิน 2147 MB
กระแสข้อมูล
สตรีมข้อมูลไม่มีโครงสร้างที่กำหนดไว้ล่วงหน้า ประกอบด้วยข้อมูลที่อ้างอิงจาก FIB หรือจากส่วนอื่นของไฟล์ สตรีมนี้ไม่จำเป็นต้องมีอยู่หากไม่มีการอ้างอิงถึงสตรีมนี้ สตรีมข้อมูลต้องมีขนาดไม่เกิน 2147 MB
ที่เก็บข้อมูลกลุ่มวัตถุ
ที่เก็บข้อมูล Object Pool ประกอบด้วยที่เก็บข้อมูลสำหรับออบเจกต์ OLE ที่ฝังอยู่ ไม่จำเป็นต้องมีที่เก็บข้อมูลนี้หากไม่มีวัตถุ OLE ที่ฝังอยู่ในเอกสาร
การจัดเก็บข้อมูล XML แบบกำหนดเอง
ที่เก็บข้อมูล XML แบบกำหนดเองเป็นที่เก็บข้อมูลเสริมซึ่งชื่อต้องเป็น “MsoDataStore”
สตรีมข้อมูลสรุป
สตรีมข้อมูลสรุปเป็นสตรีมทางเลือกที่มีชื่อต้องเป็น “\005SummaryInformation” โดยที่ \005 เป็นอักขระที่มีค่า 0x0005 ไม่ใช่สตริงตามตัวอักษร “\005”
สตรีมข้อมูลสรุปเอกสาร
สตรีมข้อมูลสรุปเอกสารเป็นสตรีมทางเลือกที่มีชื่อต้องเป็น “\005DocumentSummaryInformation” โดยที่ \005 เป็นอักขระที่มีค่า 0x0005 ไม่ใช่สตริงตามตัวอักษร “\005”
สตรีมการเข้ารหัส
สตรีมการเข้ารหัสเป็นสตรีมเสริมที่มีชื่อต้องเป็น “การเข้ารหัส” สตรีมนี้ต้องไม่มีอยู่เว้นแต่ตรงตามเงื่อนไขทั้งสองข้อต่อไปนี้:
- เอกสารถูกเข้ารหัสด้วย Office Binary Document RC4 CryptoAPI Encryption
- ค่า fDocProps ถูกตั้งค่าใน EncryptionHeader.Flags
ที่เก็บข้อมูลมาโคร
ที่เก็บข้อมูลมาโครเป็นที่เก็บข้อมูลทางเลือกที่มีมาโครสำหรับไฟล์ หากมีอยู่ จะต้องเป็น Project Root Storage
ที่เก็บลายเซ็น XML
ที่จัดเก็บลายเซ็น XML เป็นที่เก็บข้อมูลเสริมซึ่งชื่อต้องเป็น “_xmlsignatures”
สตรีมลายเซ็น
สตรีมลายเซ็นเป็นสตรีมทางเลือกที่มีชื่อต้องเป็น “_signatures” สตรีมนี้มีลายเซ็นดิจิทัล
การจัดการสิทธิ์ในข้อมูล พื้นที่เก็บข้อมูล
พื้นที่เก็บข้อมูล Data Space ของการจัดการสิทธิ์ในข้อมูลคือพื้นที่เก็บข้อมูลเผื่อเลือกที่มีชื่อต้องเป็น “\006DataSpaces” โดยที่ \006 เป็นอักขระที่มีค่า 0x0006 ไม่ใช่สตริงตามตัวอักษร “\006” หากมีที่เก็บข้อมูลนี้ สตรีมเนื้อหาที่ได้รับการป้องกันจะต้องมีอยู่ด้วย หากมีที่เก็บข้อมูลนี้ สตรีมและพื้นที่เก็บข้อมูลที่ระบุทั้งหมดนอกเหนือจากที่เก็บข้อมูลนี้และสตรีมเนื้อหาที่ได้รับการป้องกันควรอ่านได้จากสตรีมเนื้อหาที่ได้รับการป้องกันตามที่ระบุไว้ใน [MS-OFFCRYPTO] และหากมีสตรีมและพื้นที่เก็บข้อมูลเหล่านั้นอยู่นอกเนื้อหาที่ได้รับการป้องกัน สตรีม พวกเขาควรถูกเพิกเฉย
สตรีมเนื้อหาที่มีการป้องกัน
สตรีมเนื้อหาที่ได้รับการป้องกันเป็นสตรีมทางเลือกที่มีชื่อต้องเป็น “\009DRMContent” โดยที่ \009 เป็นอักขระที่มีค่า 0x0009 ไม่ใช่สตริงตามตัวอักษร “\009” หากมีสตรีมนี้ พื้นที่เก็บข้อมูลการจัดการสิทธิ์ในข้อมูลจะต้องมีอยู่ด้วย