Що таке файл DOC?
Файли з розширенням .doc представляють документи, згенеровані Microsoft Word або інші текстові документи у форматі двійкового файлу. Розширення спочатку використовувалося для простої текстової документації в кількох різних операційних системах. Він може містити кілька різних типів даних, таких як зображення, відформатований і звичайний текст, графіки, діаграми, вбудовані об’єкти, посилання, сторінки, форматування сторінки, параметри друку та багато іншого. Формат був популярний для різної документації завдяки різноманітності можливостей, які він пропонує користувачам для написання посібників, пропозицій, специфікацій, резюме, статей або будь-яких подібних документів. Оновлена версія DOC — DOCX, яка базується на Office OpenXML, специфікації якої є відкритими.
Коротка історія
WordPerfect, продукт Corel, використовував DOC як розширення свого власного формату. У 1980-х роках WordPerfect залишався вибором для використання на більшості комп’ютерів завдяки його легкій доступності, сумісності з більшістю комп’ютерів і операційних систем. Однак WordPerfect зазнав краху в ОС Windows, коли Microsoft представила Microsoft Word як свій продукт для формату файлів документів і вибрала розширення DOC для свого власного формату. У міру того, як Microsoft Word ставав все більш популярним, формат файлу DOC зазнав кількох змін, починаючи з Microsoft Word 97 – 2003. У 2007 році стандартний формат файлу DOC було замінено на формат Office Open XML (відомий як DOCX) і нові версії Microsoft Word тепер використовує це нове розширення як формат файлу за замовчуванням.
Специфікації формату файлу DOC – Додаткова інформація
Корпорація Майкрософт не випускала специфікації формату файлу DOC протягом тривалого часу до 2008 року. У лютому 2008 року специфікації формату були випущені для формату файлу .doc відповідно до Microsoft Open Specification Promise. Хоча специфікація не описує всі функції, які використовує формат DOC, вона дає достатньо інформації про знання, необхідні для роботи з цим форматом файлів. Проте для використання наявної інформації потрібне зворотне проектування. Специфікації оновлювалися кілька разів, а остання версія — 8.0, яка була оновлена станом на серпень 2018 року. .
Деякі фундаментальні поняття
Перш ніж перейти до будь-яких подробиць про специфікації формату файлу для DOC, необхідно зрозуміти деякі фундаментальні поняття, щоб працювати з цим форматом файлу.
Інформаційна база файлів (Fib): Структура Fib містить інформацію про документ і визначає покажчики файлів на різні частини, які складають документ. Fib - це структура змінної довжини. За винятком основної частини, розмір якої фіксований, перед кожним розділом стоїть поле підрахунку, яке визначає розмір наступного розділу.
Позиція символу: CP або позиція символу представляє 32-розрядне ціле число без знаку, яке служить індексом символу в тексті документа від нуля. Розташування та розмір кожного символу у файлі не можна отримати напряму, їх потрібно обчислити за попередньо визначеним алгоритмом. Серед персонажів:
- Текст документа
- Прив’язки об’єктів, таких як виноски чи текстові поля
- Контрольні символи, такі як позначки абзаців і клітинок таблиці
PLC: Структура PLC — це масив CP, за яким слідує масив елементів даних. Елементи даних для будь-якого ПЛК повинні мати однаковий розмір – нуль або більше байтів, і з цієї причини кількість CP має бути на один більше, ніж кількість елементів даних. Структури ПЛК бувають різних типів, де кожен тип визначає, чи дозволені дублікати CP для цього типу чи ні. Структура ПЛК складається з:
- aCP (змінна довжина): Масив елементів CP. Кожен тип структури PLC визначає значення елементів CP і дозволений діапазон.
- aData (змінної довжини): Кожен тип структури PLC визначає структуру та значення елементів даних, будь-які обмеження на кількість елементів даних і будь-які обмеження на дані, що містяться в них. Він також визначає зв’язок між елементами даних і відповідними CP.
Дійсний вибір: Конструкції файлу .DOC в основному описуються діапазоном CP. Існує ряд правил, указаних корпорацією Майкрософт, яких слід дотримуватися в такому випадку.
STTB: STTB – це таблиця рядків, яка складається із заголовка, за яким слідує масив елементів. Значення cData визначає кількість елементів, які містяться в масиві.
Зберігання властивостей: Файл Word може містити різні елементи, такі як текст, абзаци, таблиці, зображення та розділи, кожен з яких може мати власні властивості. Ці властивості зберігаються у файлі Word як відмінності від типових. Такі відмінності визначаються PR1, який складається з єдиного модифікатора властивості (Sprm) і його операнда. Програма може визначити остаточний набір властивостей шляхом застосування списків Prl.
Захист паролем: Файли Word також можуть бути захищені паролем, для чого можна використовувати один із наведених нижче механізмів.
- Обфускація XOR
- Шифрування бінарного документа Office RC4
- Шифрування двійкового документа 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, який складається з кількох сховищ і потоків. Ці сховища та потоки мають власну структуру та розміри, які визначають параметри для запису та читання. Це:
Потік WordDocument
Цей потік містить текст документа та іншу інформацію, на яку посилаються інші частини файлу. Потік не має попередньо визначеної структури, окрім FIB на початку, який є обов’язковим і має мати зміщення 0. Розмір цього потоку не має перевищувати 2147 МБ.
1TableStream або 0TableStream
Бінарний файл Word може містити потоки таблиць, відомі як потік 1Table або потік 0Table. Принаймні один із них має бути присутнім у документі. Однак, якщо документ містить обидва потоки 1Table і 0Table, використовується лише потік, на який посилається base.fWhichTblStm. Потік без посилання ПОВИНЕН ігноруватися. Потік таблиці НЕ ПОВИНЕН бути більшим за 2147 Мб.
Потік даних
Потік даних не має попередньо визначеної структури. Він містить дані, на які є посилання з FIB або з інших частин файлу. Цей потік не обов’язково присутній, якщо на нього немає посилань. Розмір потоку даних НЕ ПОВИНЕН перевищувати 2147 МБ.
Сховище пулу об’єктів
Сховище пулу об’єктів містить сховища для вбудованих об’єктів OLE. Це сховище не обов’язково, якщо в документі немає вбудованих об’єктів OLE.
Спеціальне зберігання даних XML
Спеціальне сховище XML-даних є додатковим сховищем, ім’я якого ПОВИННО бути «MsoDataStore».
Потік підсумкової інформації
Потік підсумкової інформації є необов’язковим потоком, назва якого ПОВИННА бути “\005SummaryInformation”, де \005 є символом зі значенням 0x0005, а не рядковим літералом “\005”.
Короткий інформаційний потік документа
Потік короткої інформації про документ – це необов’язковий потік, ім’я якого ПОВИННО бути «\005DocumentSummaryInformation», де \005 — це символ із значенням 0x0005, а не рядковий літерал «\005».
Потік шифрування
Потік шифрування – це необов’язковий потік, назва якого ПОВИННА бути «шифрування». Цей потік НЕ ПОВИНЕН бути присутнім, якщо не виконуються обидві наступні умови:
- Документ зашифровано за допомогою шифрування Office Binary Document RC4 CryptoAPI.
- Значення fDocProps встановлено в EncryptionHeader.Flags.
Зберігання макросів
Сховище макросів — це додаткове сховище, яке містить макроси для файлу. Якщо є, це ПОВИННО бути кореневим сховищем проекту.
Зберігання підписів XML
Сховище підписів XML є додатковим сховищем, ім’я якого ПОВИННО бути “_xmlsignatures”.
Потік підписів
Потік підписів є необов’язковим потоком, назва якого ПОВИННА бути “_signatures”. Цей потік містить цифрові підписи.
Управління правами на інформацію Зберігання простору даних
Сховище простору даних керування правами на інформацію є додатковим сховищем, ім’я якого ПОВИННО бути «\006DataSpaces», де \006 — це символ із значенням 0x0006, а не рядковий літерал «\006». Якщо це сховище наявне, потік захищеного вмісту також ПОВИНЕН бути присутнім. Якщо це сховище наявне, усі вказані потоки та сховища, крім цього сховища та потоку захищеного вмісту, СЛІД читати з потоку захищеного вмісту, як зазначено в [MS-OFFCRYPTO], і якщо будь-які з цих потоків і сховищ існують поза межами захищеного вмісту, Потік, їх СЛІД ігнорувати.
Потік захищеного вмісту
Потік захищеного вмісту — це необов’язковий потік, ім’я якого ПОВИННО бути «\009DRMContent», де \009 — символ із значенням 0x0009, а не рядковий літерал «\009». Якщо цей потік присутній, ОБОВ’ЯЗКОВО також має бути присутнім сховище простору даних керування правами на інформацію.
Посилання
See Also
- NB - формат файлу блокнота Mathematica
- OTS - формат файлу шаблону електронної таблиці OpenDocument
- XLR - формат файлу електронної таблиці Microsoft Works
- Що таке формат файлу Lotus 123? Дізнайтесь у експертів із форматування файлів!
- Що таке формат файлу XLS? Дізнайтесь у експертів із форматування файлів!