TECHNOTE.TXT

(9 KB) Pobierz
                    RAR wersja 2.50 - Informacje techniczne
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


       FORMAT ARCHIWUM OPISANY PONIスEJ DOTYCZY TYLKO WERSJI OD 1.50 WZWYス


  ============================================================================
                               Format archiwum RAR'a
  ============================================================================

   Archiwum sk・da siゥ z blok「w o r「セnej d・go歪i. Kolejno・ tych blok「w moセe
by・r「セna, lecz pierwszym blokiem musi by・blok identyfikacyjny, po kt「rym
musi wyst・pi・blok nag阿wka archiwum.

   Kaセdy blok rozpoczyna siゥ nastゥpuj・cymi polami:

HEAD_CRC      2 bajty   CRC (suma kontrolna) ca・go bloku lub jego czゥ歪i
HEAD_TYPE     1 bajt    typ bloku
HEAD_FLAGS    2 bajty   znaczniki bloku
HEAD_SIZE     2 bajty   rozmiar bloku
ADD_SIZE      4 bajty   pole opcjonalne

   Pole ADD_SIZE jest obecne tylko je詫i (HEAD_FLAGS & 0x8000) != 0

   Ca・owity rozmiar bloku to HEAD_SIZE je詫i (HEAD_FLAGS & 0x8000) == 0
lub HEAD_SIZE+ADD_SIZE je詫i pole ADD_SIZE jest obecne - gdy
(HEAD_FLAGS & 0x8000) != 0.

   W kaセdym bloku nastゥpuj・ce bity w polu HEAD_FLAGS oznaczaj・:

  0x4000 - je詫i ustawiony, starsze wersje RAR'a zignoruj・ blok i usun・ go
           podczas aktualizacji archiwum.
           je詫i zgaszony, blok jest kopiowany do nowego archiwum podczas
           jego aktualizacji;

  0x8000 - je詫i ustawiony, pole ADD_SIZE jest obecne i ca・owitym rozmiarem
           bloku jest HEAD_SIZE+ADD_SIZE.

  Typy blok「w:

HEAD_TYPE=0x72          blok identyfikacyjny
HEAD_TYPE=0x73          nag阿wek archiwum
HEAD_TYPE=0x74          nag阿wek pliku
HEAD_TYPE=0x75          nag阿wek komentarza
HEAD_TYPE=0x76          dodatkowa informacja
HEAD_TYPE=0x77          pod-blok
HEAD_TYPE=0x78          dane naprawcze

   Blok komentarza jest uセywany tylko w innych blokach i nie wystゥpuje
samodzielnie.

   Przetwarzanie archiwum:

1. Odczytaj i sprawdォ blok identyfikacyjny
2. Odczytaj nag阿wek archiwum
3. Odczytaj lub pomi・HEAD_SIZE-sizeof(MAIN_HEAD) bajt「w
4. Je詫i napotka・・koniec archiwum to zako臘z przetwarzanie archiwum,
   w przeciwnym wypadku odczytaj 7 bajt「w do p「l HEAD_CRC, HEAD_TYPE,
   HEAD_FLAGS, HEAD_SIZE.
5. Sprawdォ HEAD_TYPE.
   Je詫i konieczne jest odczytanie bloku:
         je詫i HEAD_TYPE==0x74
           odczytaj nag阿wek pliku (pierwsze 7 bajt「w juセ zosta・ odczytane)
           odczytaj lub pomi・HEAD_SIZE-sizeof(FILE_HEAD) bajt「w
           odczytaj lub pomi・FILE_SIZE bajt「w
         w przeciwnym wypadku
           odczytaj odpowiedni blok:
             odczytaj HEAD_SIZE-7 bajt「w
             je詫i (HEAD_FLAGS & 0x8000)
               odczytaj ADD_SIZE bajt「w
   Je詫i konieczne jest pominiゥcie bloku:
         pomi・HEAD_SIZE-7 bajt「w
         je詫i (HEAD_FLAGS & 0x8000)
           pomi・ADD_SIZE bajt「w
6. idォ do punktu 4.


  ============================================================================
                                Formaty blok「w
  ============================================================================

   Blok identyfikacyjny (MARK_HEAD)


HEAD_CRC        zawsze 0x6152
2 bajty

HEAD_TYPE       typ nag阿wka: 0x72
1 bajt

HEAD_FLAGS      zawsze 0x1a21
2 bajty

HEAD_SIZE       rozmiar bloku = 0x0007
2 bajty

   Blok identyfikacyjny jest w・歪iwie sta挨 sekwencj・ bajt「w:
0x52 0x61 0x72 0x21 0x1a 0x07 0x00



   Nag阿wek archiwum (MAIN_HEAD)


HEAD_CRC        CRC p「l od HEAD_TYPE do RESERVED2
2 bytes

HEAD_TYPE       typ nag阿wka: 0x73
1 bajt

HEAD_FLAGS      znaczniki bitowe:
2 bajty
                0x01    - wolumin (archiwum jest woluminem)
                0x02    - archiwum posiada komentarz
                0x04    - archiwum jest zablokowane
                0x08    - archiwum jest ci・g・
                0x10    - nieuセywany
                0x20    - archiwum posiada informacjゥ autentyczno歪i

                pozosta・ bity w HEAD_FLAGS s・ zarezerwowane do uセytku
                wewnゥtrznego

HEAD_SIZE       ca・owity rozmiar nag阿wka archiwum 挨cznie z komentarzem
2 bajty

RESERVED1       zarezerwowane
2 bajty

RESERVED2       zarezerwowane
4 bajty


Blok            obecny je詫i (HEAD_FLAGS & 0x02) != 0
komentarza



   Nag阿wek pliku (plik w archiwum)


HEAD_CRC        CRC p「l od HEAD_TYPE do FILEATTR
2 bajty         i nazwy pliku

HEAD_TYPE       typ nag阿wka: 0x74
1 bajt

HEAD_FLAGS      znaczniki bitowe:
2 bajty
                0x01 - plik kontynuowany z poprzedniego woluminu
                0x02 - plik kontynuowany w nastゥpnym woluminie
                0x04 - plik zaszyfrowany has・m
                0x08 - plik posiada komentarz
                0x10 - uセyta jest informacja z poprzedniego pliku
                       (znacznik ci・g・歪i)
                       (dla RAR'a od wersji 2.0 wzwyセ)

                bity 7 6 5 (dla RAR'a od wersji 2.0 wzwyセ)

                     0 0 0    - rozmiar s・wnika   64 Kb
                     0 0 1    - rozmiar s・wnika  128 Kb
                     0 1 0    - rozmiar s・wnika  256 Kb
                     0 1 1    - rozmiar s・wnika  512 Kb
                     1 0 0    - rozmiar s・wnika 1024 Kb
                     1 0 1    - zarezerwowane
                     1 1 0    - zarezerwowane
                     1 1 1    - plik jest katalogiem

                (HEAD_FLAGS & 0x8000) == 1, poniewaセ pe・y rozmiar bloku to
                HEAD_SIZE + PACK_SIZE

HEAD_SIZE       pe・y rozmiar nag阿wka pliku wraz z nazw・ pliku i komentarzem
2 bajty

PACK_SIZE       rozmiar pliku po kompresji
4 bajty

UNP_SIZE        oryginalny rozmiar pliku
4 bajty

HOST_OS         system operacyjny, w kt「rym nast・pi・ archiwizacja
1 bajt                 0 - MS DOS
                       1 - OS/2
                       2 - Win32
                       3 - Unix
                       4 - Mac OS

FILE_CRC        CRC pliku
4 bajty

FTIME           data i czas w standardowym formacie MS DOS
4 bajty

UNP_VER         wersja RAR'a potrzebna do wypakowania pliku
1 bajt

METHOD          metoda kompresji
1 bajt

NAME_SIZE       rozmiar nazwy pliku
2 bajty

ATTR            atrybuty pliku
4 bajty

FILE_NAME       nazwa pliku - ci・g znak「w o d・go歪i NAME_SIZE bajt「w


Blok            obecny je詫i (HEAD_FLAGS & 0x08) != 0
komentarza



  Blok komentarza


HEAD_CRC        CRC p「l od HEAD_TYPE do COMM_CRC
2 bajty

HEAD_TYPE       typ nag阿wka: 0x75
1 bajt

HEAD_FLAGS      znaczniki bitowe
2 bajty

HEAD_SIZE       rozmiar nag阿wka komentarza + rozmiar komentarza
2 bajty

UNP_SIZE        oryginalny rozmiar komentarza
2 bajty

UNP_VER         wersja RAR'a potrzebna do wypakowania komentarza
1 bajt

METHOD          metoda kompresji
1 bajt

COMM_CRC        CRC komentarza
2 bajty

COMMENT         tekst komentarza



  Dodatkowy blok informacyjny


HEAD_CRC        CRC bloku
2 bajty

HEAD_TYPE       typ nag阿wka: 0x76
1 bajt

HEAD_FLAGS      znaczniki bitowe
2 bajty

HEAD_SIZE       ca・owity rozmiar bloku
2 bajty

INFO            inne dane


  Pod-blok

Za obiektem w archiwum (blokiem lub nag阿wkiem) moセe znajdowa・siゥ pod-blok.
Pod-blok zaleセy od poprzedzaj・cego go obiektu. Pod-blok moセe by・usuwany
lub przenoszony do nowego archiwum podczas aktualizacji.

 Pod-blok zawiera nastゥpuj・ce pola:

HEAD_CRC        CRC bloku
2 bajty

HEAD_TYPE       typ nag阿wka: 0x77
1 bajt

HEAD_FLAGS      znaczniki bitowe
2 bajty
                (HEAD_FLAGS & 0x8000) == 1, poniewaセ pe・y
                rozmiar bloku to HEAD_SIZE + DATA_SIZE

HEAD_SIZE       ca・owity rozmiar bloku
2 bajty

DATA_SIZE       ca・owity rozmiar danych
4 bajty

SUB_TYPE        typ pod-bloku
2 bajty

RESERVED        musi by・0
1 bajt

Inne pola       inne pola w zaleセno歪i od typu pod-bloku


  Pod-blok rozszerzonych atrybut「w OS/2


HEAD_CRC        CRC bloku
2 bajty

HEAD_TYPE       typ nag阿wka: 0x77
1 bajt

HEAD_FLAGS      znaczniki bitowe
2 bajty
                (HEAD_FLAGS & 0x8000) == 1, poniewaセ pe・y
                rozmiar bloku to HEAD_SIZE + DATA_SIZE

HEAD_SIZE       ca・owity rozmiar bloku
2 bajty

DATA_SIZE       ca・owity rozmiar danych (rozmiar skompresowanych
4 bajty         rozszerzonych atrybut「w)

SUB_TYPE        0x100
2 bajty

RESERVED        musi by・0
1 bajt

UNP_SIZE        oryginalny rozmiar rozszerzonych atrybut「w
4 bajty

UNP_VER         wersja RAR'a potrzebna do wypakowania rozszerzonych atrybut「w
1 bajt

METHOD          metoda kompresji
1 bajt

EA_CRC          CRC rozszerzonych atrybut「w
4 bajty


  ============================================================================
                                      Uwagi
  ============================================================================

   1. Aby przetwarza・archiwum SFX naleセy pomin・・szukanie bloku
identyfikacyjnego. Modu・SFX nie zawiera tego bloku (0x52 0x61 0x72 0x21
0x1a 0x07 0x00).

   2. CRC liczy siゥ przy uセyciu standardowego wielomianu 0xEDB88320. Je詫i
rozmiar CRC jest mniejszy niセ 4 bajty, uセyte s・ tylko m・dsze bajty.

   3. Oznaczenia metod kompresji:
         0x30 - brak kompresji
         0x31 - najszybsza kompresja
         0x32 - szybka kompresja
         0x33 - normalna kompresja
         0x34 - dobra kompresja
         0x35 - najlepsza kompresja

   4. Wersja RAR'a konieczna do rozpakowania archiwum jest kodowana
w nastゥpuj・cy spos「b: 10 * G阿wna wersja + wersja poboczna.
Zgłoś jeśli naruszono regulamin