Данное описание составлено Леонидом Петровым
по результатм криптоанализа файлов с РСДБ
данными в MARK-III DBH формате.
12 Августа 1993 года


                I. Формат MARK-III DBH файла.
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1.1. Физическая структура MARK-III DBH файла.

   Файл РСДБ-наблюдений формате MARK-III DBH содержит записи переменной длины.
Формат файла является стандантным форматом файла с записями переменной длины
для операционной системы OS-IV для компьютеров фирмы Hewlet-Packard. Файл
состоит из физических записей, которые следуют одна за другой без промежутков.
Конец файла ничем не выделен.

  Формат физической записи:
________________________________________________________
| HDD1 |  DD1  | EDD1 |  HD2  |  logical record   | ED2 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Физическая запись содержит 6 полей:

HDD1 ( 4 байта )            -- головной дескриптор первичного дескриптора.
                               Содержит размер первичного дескрпитора в
                               байтах в формате I4. Всегда содержит значение 2.
DD1  ( HDD1 байта )         -- первичный дескриптор. Содержит длину логической
                               записи в словах в формате I2. ( Одно слова
                               равняется двум байтам ).
EDD1 ( 4 байта )            -- хвостовой декскриптор первичного дескриптора.
                               Содержит размер первичного дескрпитора в байтах
                               в формате I4. Всегда имеет то же значение, что
                               и HDD1.
HD2  ( 4 байта )            -- вторичный дескриптор. Содержит длину логической
                               записи в байтах в формате I4. Всегда имеет то же
                               значение, что и HDD1, умноженное на два. Длина
                               логической записи всегда кратна 2.
logical record ( HD2 байт ) -- запись, содержащая данные, или служебную
                               информацию.
ED2  ( 4 байта )            -- вторичный дескриптор. Содержит длину логической
                               записи в байтах в формате I4. Всегда имеет то же
                               значение, что и HD2.

Итого, одна физическая запись содержит одну логическую запись и 18 байт
служебной информации, которые содержат дважды продублированную длину записи.
Подобная физическая организация файла позволяет, во-первых, контролировать его
целостность, а во-вторых позволяет читать файл с конца задом наперёд.

        1.2. Логическая структура MARK-III DBH файла.

   Логические записи ( далее ниже всюду имеются в виду только логические
записи ) бывают трёх классов: служебные, информационные и записи данных.
Служебные записи и записи данных имеют префикс, который позволяет их
идентифицировать. Информационные записи префикса не имеют. Они идентифицируются
идущими впереди них служебными записями.

   Файл состоит из трёх секций, расположенных в следующем порядке: секция
заголовка, секция оглавления и секция данных.

______________________________________________________________________________
| Тип    | Длина    |         Префикс          |          Примечание         |
| записи | префикса |                          |                             |
|--------|----------|--------------------------|-----------------------------|
|  HS    |  2       | HS                       | Описывает записи истории    |
|        |          |                          | версии файла.               |
|--------|----------|--------------------------|-----------------------------|
|  Z1    |  4       | ZZ//CHAR(000)//CHAR(000) | Разделитель секции истории  |
|        |          |                          | файла и секции оглавления.  |
|--------|----------|--------------------------|-----------------------------|
|  Z2    |  4       | ZZ//CHAR(007)//CHAR(208) |                             |
|--------|----------|--------------------------|-----------------------------|
|  Z3    |  4       | ZZ//CHAR(000)//CHAR(025) |                             |
|--------|----------|--------------------------|-----------------------------|
|  Z4    |  4       | ZZ//CHAR(000)//CHAR(013) |                             |
|--------|----------|--------------------------|-----------------------------|
|  Z5    |  4       | ZZ//CHAR(000)//CHAR(007) |                             |
|--------|----------|--------------------------|-----------------------------|
|  TE    |  2       | TE                       |                             |
|--------|----------|--------------------------|-----------------------------|
|  TC    |  2       | TC                       |                             |
|--------|----------|--------------------------|-----------------------------|
|  DR    |  2       | DR                       |                             |
|--------|----------|--------------------------|-----------------------------|
|  I2    |  2       | +g                       |                             |
|--------|----------|--------------------------|-----------------------------|
|  A2    |  2       | 11                       |                             |
|--------|----------|--------------------------|-----------------------------|
|  R8    |  8       | CHAR(067)//CHAR(015)//   |                             |
|        |          | CHAR(148)//CHAR(101)//   |                             |
|        |          | CHAR(184)//CHAR(171)//   |                             |
|        |          | CHAR(142)//CHAR(056)     |                             |
|--------|----------|--------------------------|-----------------------------|
|  J4    |  4       | CHAR(066)//CHAR(058)//                                 |
|        |          | CHAR(053)//CHAR(199)     |                             |
|--------|----------|--------------------------|-----------------------------|
|  P1    |  0       |                          | Первые 7 записей.           |
|--------|----------|--------------------------|-----------------------------|
|  P2    |  0       |                          | Следует после двух идущих   |
|        |          |                          | подряд HS-записей.          |
|--------|----------|--------------------------|-----------------------------|
|  P3    |  0       |                          | Следует после TE-записи.    |
|--------|----------|--------------------------|-----------------------------|
|  P4    |  0       |                          | Следует после P3-записи.    |
|________|__________|__________________________|_____________________________|

Записи типа  HS, Z1, Z2, Z3, Z4, Z5, TC, TE, DR, DE  --  служебные, всегда
             имеют длину 12 слов ( 24 байта ).
       типа  I2, A2, R8, J4  -- записи данных,
       типа  P1, P2, P3, P4  -- информационные.



        1.2.1.  Секция заголовка.
        ~~~~~~~~~~~~~~~~~~~~~~~~~

Первые 7 записей секции заголовка ( и файла ) содержат преамбулу файла.

Запись 1 (формат kA2)  содержит имя файла в формате A2.
Запись 2 (формат 5I2)  содержит 5 слов, определяющих дату создания файла.
Запись 3 (формат kA2)  содержит название программы наблюдений
Запись 4 (формат kA2)  содержит имя эксперимента.
Запись 5 (формат kA2)  содержит номер версии файла.
Запись 6 (формат I2)   содержит версию файла предыдущей версии.
Запись 7 (формат kA2)  содержит имя файла предыдущей версии.

Начиная с 8-ой записи и далее до тех пор, пока на встретится 
запись-разделитель, Z1 следууют записи истории файла. Каждая запись истории 
состоит из трёх логических записей: 1-ой HS-записи, 2-ой HS-записи, 
информационной записи содержимого истории файла. Записей истории файла может 
быть сколько угодно. Сперва идут записи для пеорвой версии, затем для второй 
и так далее до последней версии.

    1-ая HS-запись. Формат: A2,11I2

________________________________________________________________________
| A1 | P1  | P2  | P3  | P4  | P5  | P6  | P7  | P8  | P9  | P10 | P11 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A1     -- ( Формат A2 ) -- Префикс ( Значение HS )
P2     -- ( Формат I2 ) -- Длина информационной записи в словах.
P2-P6  -- ( Формат I2 ) -- Дата создания версии.
P7     -- ( Формат I2 ) -- Номер версии.
P8-P11 -- ( Формат I2 ) -- Не используются ( всегда нулевые ).


    2-ая HS-запись. Формат: A2,4I2,3A2,4I2

________________________________________________________________________
| A1 | P1  | P2  | P3  | P4  | A2  | A3  | A4  | P5  | P6  | P7  | P8  |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A1     -- ( Формат A2 ) -- Префикс ( Значение HS )
P1     -- ( Формат I2 ) -- ? ( Значение CHAR(1) )
P2     -- ( Формат I2 ) -- ? ( Значение CHAR(1) )
P3     -- ( Формат I2 ) -- ? ( Значение CHAR(1) )
P4     -- ( Формат I2 ) -- ? ( Значение CHAR(10 )
A2-A4  -- ( Формат A2 ) -- Первые 6 байт имени эксперимента
P5-P8  -- ( Формат I2 ) -- Не используются ( всегда нулевые ).



        1.2.2.  Секция оглавления.
        ~~~~~~~~~~~~~~~~~~~~~~~~~~


  Запись типа Z1 означает конец секции истории файла и начало секции оглавления.
Секция оглавления содержит аббревиатуры параметров длиной 8 байт, краткие
описания параметров длиной 32 байта, типб размерности параметра, номер версии
файла, во время создания которых они были обновлены, и их относительные адреса
относительно начала подсекции данных и относительно начала секции данных.

Секция оглавления состоит из k ( обычно k=3 ) TC-блоков. Каждый TC-блок состоит
из TC-записи, за которой следуют l TE-блоков. TE-блок состоит из TE-записи,
за которой следует P3-запись, а за ней P4-запись.


        Формат TC-записи:
________________________________________________________________________
| A1 | P1  | P2  | P3  | P4  | P5  | P6  | P7  | P8  | P9  | P10 | P11 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A1     -- ( Формат A2 ) -- Префикс ( Значение TC )
P1     -- ( Формат I2 ) -- Номер TC-блока. Эквивалентен TOC-типу
P2     -- ( Формат I2 ) -- Количество TE-блоков, содержащихся в данном TC-блоке.
P3-P11 -- ( Формат I2 ) -- Не используются ( всегда нулевые ).


        Формат TE-записи:
________________________________________________________________________
| A1 | P1  | P2  | P3  | P4  | P5  | P6  | P7  | P8  | P9  | P10 | P11 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A1     -- ( Формат A2 ) -- Префикс ( Значение TC )
P1     -- ( Формат I2 ) -- Номер TE-блока.
P2     -- ( Формат I2 ) -- Смещение I-FILLER ( в группах ).
P3     -- ( Формат I2 ) -- Смещение A-FILLER ( в группах ).
P4     -- ( Формат I2 ) -- Смещение D-FILLER ( в группах ).
P5     -- ( Формат I2 ) -- Количество элементов типа R8, описанных в данном
                           TE-блоке.
P6     -- ( Формат I2 ) -- Количество элементов типа I2, описанных в данном
                           TE-блоке.
P7     -- ( Формат I2 ) -- Количество элементов типа A2, описанных в данном
                           TE-блоке.
P8     -- ( Формат I2 ) -- Смещение J-FILLER ( в группах ).
P9     -- ( Формат I2 ) -- Общее количество групп.
P10    -- ( Формат I2 ) -- Количество элементов типа R6, описанных в данном
                           TE-блоке.
P11    -- ( Формат I2 ) -- Количество элементов типа J4, описанных в данном
                           TE-блоке.

        Формат P3-записи:
________________________________________________________________________
| A1_1 | P1_1 | P2_1 | P3_1 | P4_1 | A1_1 | P1_1 | P2_1 | P3_1 | P4_1 | ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\                                  /\                                  /
 ~~~~~~~~~~~~~~~\/~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~\/~~~~~~~~~~~~~~~~~
            1-ая группа                          2-ая группа

Общее количество групп содержится в поле P9  TE-записи.

Формат одной группы.

A8  --  ( Формат A8 ) -- Аббревитура параметра или FILLER.
P1  --  ( Формат I2 ) -- 1-ая размерность массива параметра.
P2  --  ( Формат I2 ) -- 2-ая размерность массива параметра.
P3  --  ( Формат I2 ) -- 3-ая размерность массива параметра.
P4  --  ( Формат I2 ) -- Номер версии файла, на которой данный параметр был
                         добавлен.

        Формат P4-записи:
_________________________________________
|  A1_1   |  A2_1   |  A3_1   |  A4_1   | ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\        /\        /\        /\        /
 ~~~  ~~~  ~~~  ~~~  ~~~  ~~~  ~~~  ~~~
    \/        \/        \/        \/
1-я группа 2-я группа 3-я группа 4-я группа  ...

Общее количество групп содержится в поле P9  TE-записи. Формат группы: A32

Каждая группа, соответствующая параметру, содержит описание параметра. Группа,
соответствующая FILLER'у, состоит из 32-х звёздочек.


    Каждый параметр, содержащийся в файле формата MARK-III DBH имеет следующие
аттрибуты:

 1) Аббревитуруа. Содержится в поле A1 группы в P3-записи.
 2) Описаниие. Содержится в поле A1 группы в P4-записи.
 3) Первая размерность. Содержится в поле P1 P3-записи.
 4) Вторая размерность. Содержится в поле P2 P3-записи.
 5) Третья размерность. Содержится в поле P3 P3-записи.
 6) Номер версии, на которой параметр был внесён в файл последний раз.
    Содержится в поле P4 P3-записи.
 7) Тип параметр. Определяется FILLER-ом в P3-записи. Допустимыми являются 
    типы R8, I2, A2, R6, J4. Тип R6 и J4 не используется.
 8) TOC-тип. Опеределяется номером TC-блока, в котором содержалось описание
    параметра.
 9) Номер TE-записи. Опеределяется номером TE-блока, в котором содержалось
    описание параметра.
10) Смещение относительно начала записи данных.
11) Номер наблюдения.