.RB вариант №
Файл с расширением .rb содержит содержимое электронной книги Rocket. Электронная книга Rocket на самом деле является устройством, созданным Nuvo Media; они выпустили это устройство в 1998 году. Хотя Rocket eBook способна отображать изображения, но только в черно-белом режиме. Он имеет экран с разрешением 106 dpi или 480 x 320 пикселей на сенсорном экране размером 4,5 x 3 дюйма. Электронная книга Rocket подключается к компьютеру через соединение через последовательный порт для загрузки электронных книг в формате файла RB. Файлы RB могут использовать DRM, но эта технология не используется в современных электронных книгах. Файл RB обычно содержит файл HTML с изображениями и файл псевдо-OPF со всеми метаданными (.info).
Техническая спецификация формата файла RB
Магическое число (в шестнадцатеричном формате) появляется в первых 4 байтах файла: B0 0C B0 0C.
Похоже, что следующие два байта — это номер версии, например «02 00», что означает основную версию 2 и дополнительную версию 0.
Следующие четыре байта содержат текст «NUVO», за которым следуют 4 байта 00h.
Следующие 4 байта — это дата создания книги, закодированная как int16. Это ставит нас на смещение 0Eh. Старая версия ORocketLibrary закодировала полное значение года (т. е. 1999 г. — «CF 07», 2000 г. — «D0 07»). В последней версии tm_year сохраняется дословно, т.е. 100 для 2000 года (“64 00”). После года идет int8, представляющий номер месяца с относительным значением 1, и int8, представляющий день месяца.
Следующие 6 байтов — 00h. Для установки времени они могут быть зарезервированы.
Абсолютное смещение «Оглавления» содержится в int32 по смещению 18h.
После этого следует int32, содержащий длину файла .rb. Это используется, чтобы определить, являются ли файлы полными или нет.
Весь этот кусок байтов (от 20h до 128h) нужен только зашифрованному заголовку. В незашифрованных заголовках они всегда равны нулю.
В большинстве случаев следует оглавление (по смещению 128). Он начинается с подсчета int32 количества записей «страницы» (разделов .rb-файла) в ToC. Каждая запись состоит из имени (дополненного нулями до 32 байт), за которым следуют 3 int32: длина сегмента данных, позиция в файле .rb и флаг для этой записи. На сегодняшний день известны следующие значения: 1 (зашифровано), 2 (информационная страница) и 8 (сжато). Все имена адаптированы по мере необходимости, чтобы гарантировать, что они все уникальны.