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