Данное описание составлено Леонидом Петровым
по результатм криптоанализа файлов с РСДБ
данными в 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) Номер наблюдения.