Общая информация: | Архив WinRAR. Разработан российским программистом Евгением Рошалом (отсюда и название RAR: Roshal ARchiver). Он написал программу-архиватор для упаковки/распаковки RAR, изначально под DOS, затем и для других операционных систем. |
MIME-тип: | application/x-rar-compressed. |
(основан на "RAR версия 3.70 - Техническая информация")
Описываемый формат архива действителен только для rar версии 1.50 и выше
==========================================================================
Формат архивного файла RAR
==========================================================================
Файл архива состоит из блоков разной длины.
В самом начале архива стоит блок-маркер, после которого идёт блок заголовка архива, за которым в произвольном порядке следуют блоки остальных типов.
Каждый блок начинается со следующих полей:
Во всех блоках следующие биты в HEAD_FLAGS (*) имеют одинаковое значение:
При отсутствии поля ADD_SIZE, т.е. если (HEAD_FLAGS & 0x8000) == 0 (*) , общий размер блока указан в поле HEAD_SIZE, иначе общий размер блока равен HEAD_SIZE + ADD_SIZE.
Заявленные типы блоков (возможные значения HEAD_TYPE):
Блок комментария используется только внутри других блоков.
==========================================================================
Форматы блоков
==========================================================================
Блок-маркер (MARK_HEAD)
~~~~~~~~~~~~~~~~~~~~~~~
Блок-маркер в действительности считается фиксированной последовательностью байт: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
Заголовок архива (MAIN_HEAD)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Заголовок файла (файл в архиве)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Здесь могут быть другие новые поля
==========================================================================
Общая последовательность считывания архива
==========================================================================
Обработка архива происходит следующим образом: