ما هو ملف DOC؟
تمثل الملفات ذات الامتداد doc. المستندات التي تم إنشاؤها بواسطة Microsoft Word أو مستندات معالجة النصوص الأخرى بتنسيق ملف ثنائي. تم استخدام الامتداد في البداية للتوثيق بالنص العادي على العديد من أنظمة التشغيل المختلفة. يمكن أن تحتوي على عدة أنواع مختلفة من البيانات مثل الصور ، المنسق وكذلك النص العادي ، والرسوم البيانية ، والمخططات ، والكائنات المضمنة ، والروابط ، والصفحات ، وتنسيق الصفحة ، وإعدادات الطباعة وغيرها الكثير. كان التنسيق شائعًا لجميع أنواع الوثائق نظرًا لتنوع الخيارات التي يقدمها للمستخدمين لكتابة الكتيبات أو المقترحات أو المواصفات أو السير الذاتية أو المقالات أو أي مستندات مماثلة. الإصدار المحدث من DOC هو DOCX والذي يعتمد على Office OpenXML الذي تتوفر مواصفاته بشكل مفتوح.
نبذة تاريخية
استخدم WordPerfect ، أحد منتجات Corel ، DOC كامتداد لتنسيق الملكية الخاصة به. في الثمانينيات ، ظل WordPerfect هو اختيار الاستخدام على معظم أجهزة الكمبيوتر نظرًا لسهولة توفره وتوافقه مع معظم أجهزة الكمبيوتر وأنظمة التشغيل. ومع ذلك ، شهد WordPerfect سقوطه على نظام التشغيل Windows عندما قدمت 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 ، إلا أنها توفر معلومات وافرة حول المعرفة المطلوبة للعمل مع تنسيق الملف هذا. ومع ذلك ، فإن الهندسة العكسية مطلوبة للاستفادة من المعلومات المتاحة. تم تحديث المواصفات عدة مرات وآخر [مراجعة](https://msdn.microsoft.com/en-us/library/cc313153 (v # office.12) .aspx) هو 8.0 والذي تم تحديثه اعتبارًا من أغسطس 2018 .
بعض المفاهيم الأساسية
قبل الخوض في أي تفاصيل حول مواصفات تنسيق الملف لـ DOC ، من الضروري فهم بعض المفاهيم الأساسية للعمل مع تنسيق الملف هذا.
** قاعدة معلومات الملف (فيب): ** تحتوي بنية فيبوناتشي على معلومات حول الوثيقة وتحدد مؤشرات الملف إلى الأجزاء المختلفة التي تتكون منها الوثيقة. فيبوناتشي هو هيكل متغير الطول. باستثناء الجزء الأساسي الذي تم إصلاحه في الحجم ، يُسبق كل قسم بحقل التعداد الذي يحدد حجم القسم التالي.
** موضع الحرف: ** CP أو Character Position يمثل عددًا صحيحًا من 32 بت بدون إشارة يعمل كفهرس صفري للحرف في نص المستند. لا يمكن استرجاع موقع وحجم كل حرف في الملف مباشرة ويجب حسابه باستخدام خوارزمية محددة مسبقًا. تشمل الشخصيات:
- نص الوثيقة
- مراسي كائنات مثل الحواشي السفلية أو مربعات النص
- التحكم في الأحرف مثل علامات الفقرات وعلامات خلايا الجدول
** PLC: ** هيكل PLC عبارة عن مجموعة من CPs متبوعة بمجموعة من عناصر البيانات. يجب أن تكون عناصر البيانات لأي PLC بنفس الحجم صفر أو أكثر من البايت ، ولهذا السبب ، يجب أن يكون عدد CPs واحدًا أكثر من عدد عناصر البيانات. هياكل PLC من أنواع مختلفة حيث يحدد كل نوع ما إذا كان يُسمح بتكرار CPs لهذا النوع أم لا. يتكون هيكل PLC من:
- ** aCP (طول متغير): ** مصفوفة من عناصر CP. يحدد كل نوع من أنواع بنية ** PLC ** معنى عناصر CP والنطاق المسموح به.
- ** aData (متغير الطول): ** كل نوع من أنواع هيكل ** PLC ** يحدد هيكل ومعنى عناصر البيانات وأي قيود على عدد عناصر البيانات وأي قيود على البيانات الواردة فيها. كما تحدد العلاقة بين عناصر البيانات و CPs المقابلة.
** اختيار صالح: ** يتم وصف تركيبات ملف .DOC بشكل أساسي من خلال مجموعة من CPs. هناك عدد من [القواعد](https://msdn.microsoft.com/en-us/library/dd908861 (v # office.12) .aspx) التي تحددها Microsoft ليتم اتباعها في مثل هذه الحالة.
** STTB: ** STTB عبارة عن جدول سلسلة مكون من رأس يتبعه مصفوفة من العناصر. تحدد القيمة ** cData ** عدد العناصر الموجودة في المصفوفة.
** تخزين الخاصية: ** قد يحتوي ملف الكلمات على عناصر مختلفة مثل النص والفقرات والجداول والصور والأقسام حيث يمكن أن يكون لكل ملف خصائصه الخاصة. يتم تخزين خصائص هذه في ملف Word على أنها اختلافات عن الافتراضي. يتم تحديد هذه الاختلافات بواسطة PRl الذي يتكون من مُعدِّل خاصية واحد (Sprm) ومعامله. يمكن للتطبيق تحديد المجموعة النهائية من الخصائص عن طريق تطبيق قوائم ** Prl ** s.
** حماية كلمة المرور: ** يمكن أيضًا حماية ملفات Word بكلمة مرور ، ويمكن استخدام إحدى الآليات التالية لها.
- تشويش XOR
- تشفير وثيقة مكتب ثنائي RC4
- تشفير مستند Office الثنائي RC4 CryptoAPI
إذا كان FibBase.fEncrypted و FibBase.fObfuscation كلاهما 1 ، فسيتم تشويش الملف باستخدام تشويش XOR.
إذا كانت FibBase.fEncrypted تساوي 1 و FibBase.fObfuscation تساوي 0 ، يتم تشفير الملف باستخدام إما Office Binary Document RC4 Encryption أو Office Binary Document RC4 CryptoAPI EncryptionHeader المخزن في FibBase.lKey بايتات من تدفق الجدول. يحدد EncryptionHeader.EncryptionVersionInfo آلية التشفير التي تم استخدامها لتشفير الملف.
هيكل الملف
ملف Word الثنائي في أصالته هو ملف OLE المركب الذي يتكون من عدة مخازن وتدفقات. هذه المستودعات والجداول لها هيكلها وأحجامها الخاصة ، والتي تحدد معايير الكتابة والقراءة. هؤلاء هم:
WordDocument Stream
يحتوي هذا الدفق على نص المستند ومعلومات أخرى مُشار إليها من أجزاء أخرى من الملف. لا يحتوي الدفق على بنية محددة مسبقًا بخلاف FIB في البداية وهو أمر إلزامي ويجب أن يكون عند الإزاحة 0. يجب ألا يكون هذا التدفق أكبر من 2147 ميجابايت.
1TableStream أو 0TableStream
يمكن أن يحتوي ملف Word الثنائي على جداول الجداول المعروفة باسم دفق الجدول 1 أو دفق الجدول 0. يجب أن يكون واحد من هؤلاء على الأقل موجودًا في المستند. ومع ذلك ، إذا كان المستند يحتوي على كل من تدفقات 1Table و 0Table ، فسيتم استخدام الدفق المشار إليه بواسطة base.fWhichTblStm فقط. يجب تجاهل الدفق غير المشار إليه. يجب ألا يكون تدفق الجدول أكبر من 2147 ميغا بايت.
تدفق المعلومات
لا يحتوي دفق البيانات على بنية محددة مسبقًا. يحتوي على بيانات تمت الإشارة إليها من FIB أو من أجزاء أخرى من الملف. لا يلزم أن يكون هذا التيار موجودًا إذا لم تكن هناك مراجع له. يجب ألا يكون دفق البيانات أكبر من 2147 ميجابايت.
تخزين تجمع الكائنات
يحتوي تخزين Object Pool على مخازن لكائنات OLE المضمنة. لا يلزم وجود هذا التخزين في حالة عدم وجود كائنات OLE مضمنة في المستند.
تخزين بيانات XML المخصصة
تخزين بيانات XML المخصصة هو تخزين اختياري يجب أن يكون اسمه “MsoDataStore”.
ملخص تدفق المعلومات
دفق المعلومات التلخيصية هو دفق اختياري يجب أن يكون اسمه “\ 005SummaryInformation” ، حيث \ 005 هو الحرف ذو القيمة 0x0005 ، وليس السلسلة الحرفية “\ 005”.
ملخص المستند تدفق المعلومات
دفق معلومات ملخص المستند هو دفق اختياري يجب أن يكون اسمه “\ 005DocumentSummaryInformation” ، حيث \ 005 هو الحرف ذو القيمة 0x0005 ، وليس السلسلة الحرفية “\ 005”.
تدفق التشفير
دفق التشفير هو دفق اختياري يجب أن يكون اسمه “تشفير”. يجب ألا يكون هذا الدفق موجودًا ما لم يتم استيفاء كلا الشرطين التاليين:
- تم تشفير المستند باستخدام Office Binary Document RC4 CryptoAPI Encryption.
- تم تعيين قيمة fDocProps في EncryptionHeader.Flags.
تخزين وحدات الماكرو
تخزين وحدات الماكرو هو تخزين اختياري يحتوي على وحدات الماكرو للملف. إذا كان موجودًا ، يجب أن يكون تخزينًا جذريًا للمشروع.
تخزين تواقيع XML
تخزين تواقيع XML هو تخزين اختياري يجب أن يكون اسمه “_xmlsignatures”.
تدفق التوقيعات
تيار التوقيعات هو تدفق اختياري يجب أن يكون اسمه “_signatures”. يحتوي هذا الدفق على توقيعات رقمية.
إدارة حقوق المعلومات تخزين مساحة البيانات
تخزين مساحة بيانات إدارة حقوق المعلومات هو تخزين اختياري يجب أن يكون اسمه “\ 006DataSpaces” ، حيث \ 006 هو الحرف ذو القيمة 0x0006 ، وليس السلسلة الحرفية “\ 006”. في حالة وجود هذا التخزين ، يجب أن يكون تدفق المحتوى المحمي موجودًا أيضًا. في حالة وجود هذا التخزين ، يجب قراءة جميع التدفقات والمخازن المحددة بخلاف هذا التخزين ودفق المحتوى المحمي من تدفق المحتوى المحمي كما هو محدد في [MS-OFFCRYPTO] وإذا كان أي من هذه التدفقات والمخازن موجودة خارج المحتوى المحمي تيار ، يجب تجاهلها.
تدفق المحتوى المحمي
يعتبر دفق المحتوى المحمي دفقًا اختياريًا يجب أن يكون اسمه “\ 009DRMContent” ، حيث \ 009 هو الحرف بالقيمة 0x0009 ، وليس السلسلة الحرفية “\ 009”. إذا كان هذا الدفق موجودًا ، فيجب أيضًا وجود مساحة تخزين بيانات إدارة حقوق المعلومات.
مراجع
- [مواصفات تشكيل ملف MS-DOC](https://msdn.microsoft.com/en-us/library/cc313153 (v # office.12) .aspx)
- Doc Computing