6 Устройство и принцип работы 6.4 Запись архива В модуль встроена флеш-память (flash), размеченная под файловую систему с шифрованием файлов. Алгоритм шифрования — Data Encryption Standard (DES) в режиме сцепления блоков шифротекста (CBC). В качестве ключа используется строка superkey . Вектор инициализации генерируется с помощью хеш-функции (см. приложение А ). Аргументом функции является пароль, алгоритму CRC32 (контрольная сумма также шифрируется). заданный в ПО Owen Configurator . В конце файла сохраняется контрольная сумма, рассчитанная по Архив модуля сохраняется в виде набора файлов.
Период архивации, ограничение на размер одного файла и их количество задается пользователем в ПО Owen Configurator . Если архив полностью заполнен, то данные перезаписываются, начиная с самых старых данных самого старого файла. Файл архива состоит из набора записей. Записи разделены символами переноса строки (0x0A0D). Каждая запись соответствует одному параметру и состоит из полей, разделенных символом «;» (без кавычек). Формат записи приведен в таблице ниже. Таблица 6.2 – Формат записи в файле архива Пример Расшифрованная запись:
0x52 0x82 0xD1 0x24 0x3B 0x30 0x30 0x30 0x30 0x61 0x39 0x30 0x30 0x3B 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31 0x3B 0x31 0x0A 0x0D где 0x52 0x82 0xD1 0x24 — метка времени. Для получения даты и времени в формате UnixTime следует изменить порядок байт на противоположный и добавить константу-смещение (число секунд между 00:00:00 01.01.1970 и 00:00:00 01.01.2000):
0x24D18252 (HEX) + 946684800 (DEC) = 1564394971 (DEC, соответствует 29 июля 2019 г., 10:09:31); 0x3B — разделитель; 0x30 0x30 0x30 0x30 0x61 0x39 0x30 0x30 — уникальный идентификатор параметра (00003ba00); 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31 — значение параметра (00000001); 0x31 — статус параметра (1 – значение параметра корректно); 0x0A 0x0D — символы переноса строки.
20 Параметр Тип Размер Комментарий Метка времени Binary data 4 байта В секундах начиная с 00:00 01.01.2000 (UTC+0) Разделитель Строка 1 байт Символ «;» (без кавычек) Уникальный идентификатор параметра (UID) Строка 8 байт В виде строки из HEX-символов с ведущими нулями Разделитель Строка 1 байт Символ «;» (без кавычек) Значение параметра Строка зависит от параметра В виде строки из HEX-символов с ведущими нулями Разделитель Строка 1 байт Символ «;» (без кавычек) Статус параметра Binary data 1 байт 1 – значение параметра корректно, 0 – значение параметра некорректно и его дальнейшая обработка не рекомендована Перенос строки Binary data 2 байта \n\r (0x0A0D)