You are on page 1of 5

RAR wersja 3.93 - Informacje techniczne ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FORMAT ARCHIWUM OPISANY PONIEJ DOTYCZY TYLKO WERSJI OD 1.

50 WZWY ============================================================================ Format archiwum RAR ============================================================================ Archiwum skada si z blokw o rnej dugo ci. Kolejno tych blokw moe by rna, lecz pierwszym blokiem musi by blok identyfikacyjny, po ktrym musi wystpi blok nagwka archiwum. Kady blok rozpoczyna si nastpujcymi polami: HEAD_CRC HEAD_TYPE HEAD_FLAGS HEAD_SIZE ADD_SIZE 2 1 2 2 4 bajty bajt bajty bajty bajty CRC (suma kontrolna) caego bloku lub jego cz ci typ bloku znaczniki bloku rozmiar bloku pole opcjonalne

Pole ADD_SIZE jest obecne tylko je li (HEAD_FLAGS & 0x8000) != 0 Cakowity rozmiar bloku to HEAD_SIZE je li (HEAD_FLAGS & 0x8000) == 0 lub HEAD_SIZE+ADD_SIZE je li pole ADD_SIZE jest obecne - gdy (HEAD_FLAGS & 0x8000) != 0. W kadym bloku nastpujce bity w polu HEAD_FLAGS oznaczaj: 0x4000 - je li ustawiony, starsze wersje RARa zignoruj blok i usun go podczas aktualizacji archiwum. je li zgaszony, blok jest kopiowany do nowego archiwum podczas jego aktualizacji; 0x8000 - je li ustawiony, pole ADD_SIZE jest obecne i cakowitym rozmiarem bloku jest HEAD_SIZE+ADD_SIZE. Typy blokw: HEAD_TYPE=0x72 HEAD_TYPE=0x73 HEAD_TYPE=0x74 HEAD_TYPE=0x75 HEAD_TYPE=0x76 HEAD_TYPE=0x77 HEAD_TYPE=0x78 HEAD_TYPE=0x79 HEAD_TYPE=0x7a blok identyfikacyjny nagwek archiwum nagwek pliku nagwek komentarza starego typu informacja autentyczno ci starego typu pod-blok starego typu dane naprawcze starego typu informacja autentyczno ci starego typu pod-blok

Blok komentarza jest uywany tylko w innych blokach i nie wystpuje samodzielnie. Przetwarzanie archiwum: 1. Odczytaj i sprawd blok identyfikacyjny 2. Odczytaj nagwek archiwum 3. Odczytaj lub pomi HEAD_SIZE-sizeof(MAIN_HEAD) bajtw

4. Je li napotkae koniec archiwum to zakocz przetwarzanie archiwum, w przeciwnym wypadku odczytaj 7 bajtw do pl HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE. 5. Sprawd HEAD_TYPE. je li HEAD_TYPE==0x74 odczytaj nagwek pliku (pierwsze 7 bajtw ju zostao odczytane) odczytaj lub pomi HEAD_SIZE-sizeof(FILE_HEAD) bajtw je li (HEAD_FLAGS & 0x100) odczytaj lub pomi HIGH_PACK_SIZE*0x100000000+PACK_SIZE bajtw w przeciwnym wypadku odczytaj lub pomi FILE_SIZE bajtw w przeciwnym wypadku odczytaj odpowiedni blok: odczytaj HEAD_SIZE-7 bajtw je li (HEAD_FLAGS & 0x8000) odczytaj ADD_SIZE bajtw 6. id do punktu 4. ============================================================================ Formaty blokw ============================================================================ Blok identyfikacyjny (MARK_HEAD) HEAD_CRC 2 bajty HEAD_TYPE 1 bajt HEAD_FLAGS 2 bajty HEAD_SIZE 2 bajty zawsze 0x6152 typ nagwka: 0x72 zawsze 0x1a21 rozmiar bloku = 0x0007

Blok identyfikacyjny jest wa ciwie sta sekwencj bajtw: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00

Nagwek archiwum (MAIN_HEAD) HEAD_CRC 2 bytes HEAD_TYPE 1 bajt HEAD_FLAGS 2 bajty CRC pl od HEAD_TYPE do RESERVED2 typ nagwka: 0x73 znaczniki bitowe: 0x0001 - wolumin (archiwum jest woluminem) 0x0002 - archiwum posiada komentarz RAR 3.x uywa osobnego bloku komentarza i nie ustawia tego znacznika. 0x0004 - archiwum jest zablokowane

0x0008 - archiwum jest cige 0x0010 - nowy sposb nazywania woluminw ('nazwa.partN.rar') 0x0020 - archiwum posiada informacj autentyczno ci RAR 3.x nie ustawia tego znacznika. 0x0040 - archiwum posiada dane naprawcze 0x0080 - nagwki blokw s zaszyfrowane 0x0100 - pierwszy wolumin (tylko dla RAR 3.0 i nowszych) pozostae bity w HEAD_FLAGS s zarezerwowane do uytku wewntrznego HEAD_SIZE 2 bajty RESERVED1 2 bajty RESERVED2 4 bajty cakowity rozmiar nagwka archiwum cznie z komentarzem zarezerwowane zarezerwowane

Nagwek pliku (plik w archiwum) HEAD_CRC 2 bajty HEAD_TYPE 1 bajt HEAD_FLAGS 2 bajty CRC pl od HEAD_TYPE do FILEATTR i nazwy pliku typ nagwka: 0x74 znaczniki bitowe: 0x01 0x02 0x04 0x08 plik kontynuowany z poprzedniego woluminu plik kontynuowany w nastpnym woluminie plik zaszyfrowany hasem plik posiada komentarz RAR 3.x uywa osobnego bloku komentarza i nie ustawia tego znacznika.

0x10 - uyta jest informacja z poprzedniego pliku (znacznik cigo ci) (dla RARa od wersji 2.0 wzwy) bity 7 6 5 (dla RARa od wersji 2.0 wzwy) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 rozmiar sownika 64 rozmiar sownika 128 rozmiar sownika 256 rozmiar sownika 512 rozmiar sownika 1024 rozmiar sownika 2048 rozmiar sownika 4096 plik jest katalogiem KB KB KB KB KB KB KB

0x100 - obecne s pola HIGH_PACK_SIZE i HIGH_UNP_SIZE, ktre uywane s tylko przy archiwizacji bardzo duych plikw (ponad 2 GB); w przypadku mniejszych plikw

pola te nie s umieszczane w archiwum. 0x200 - FILE_NAME zawiera zarwno zwyk nazw pliku jak rwnie nazw w standardzie UNICODE, oddzielone bajtem 0 (zero). W tym wypadku pole NAME_SIZE jest rwne dugo i zwykej nazwy plus dugo nazwy w formacie UNICODE plus 1. Je li ten znacznik jest obecny a FILE_NAME nie zawiera bajtw o warto ci 0 (zero) oznacza to, e nazwa pliku jest w formacie UTF-8. 0x400 - nagwek zawiera dodatkowe 8 bajtw umieszczone za nazw pliku, ktre s wymagane do wzmocnienia bezpieczestwa szyfrowania 0x800 - Znacznik wersji. Je li plik jest starsz wersj, jej numer jest doczany do nazwy jako ';n'. 0x1000 - obecne jest rozszerzone pole zawierajce czas 0x8000 - ten bit jest zawsze ustawiony, dlatego cakowity rozmiar bloku jest rwny HEAD_SIZE + PACK_SIZE (plus HIGH_PACK_SIZE, je li bit 0x100 jest ustawiony) HEAD_SIZE 2 bajty PACK_SIZE 4 bajty UNP_SIZE 4 bajty HOST_OS 1 bajt peny rozmiar nagwka pliku wraz z nazw pliku i komentarzem rozmiar pliku po kompresji oryginalny rozmiar pliku system operacyjny, w ktrym nastpia archiwizacja 0 - MS DOS 1 - OS/2 2 - Win32 3 - Unix 4 - Mac OS 5 - BeOS CRC pliku data i czas w standardowym formacie MS DOS wersja RARa potrzebna do wypakowania pliku Wersja jest kodowana w nastpujcy sposb: 10 * Gwna wersja + wersja poboczna. METHOD 1 bajt metoda kompresji 0x30 0x31 0x32 0x33 0x34 brak kompresji najszybsza kompresja szybka kompresja normalna kompresja dobra kompresja

FILE_CRC 4 bajty FTIME 4 bajty UNP_VER 1 bajt

0x35 - najlepsza kompresja NAME_SIZE 2 bajty ATTR 4 bajty rozmiar nazwy pliku atrybuty pliku

HIGH_PACK_SIZE 4 starsze bajty 64-bitowej liczby okre lajcej rozmiar pliku 4 bajty po kompresji. Warto opcjonalna, obecna tylko je li HEAD_FLAGS ma ustawiony bit 0x100 HIGH_UNP_SIZE 4 bajty FILE_NAME SALT 8 bajtw 4 starsze bajty 64-bitowej liczby okre lajcej oryginalny (przed kompresj) rozmiar pliku. Warto opcjonalna, obecna tylko je li HEAD_FLAGS ma ustawiony bit 0x100 nazwa pliku - cig znakw o dugo ci NAME_SIZE bajtw obecne je li (HEAD_FLAGS & 0x400) != 0

EXT_TIME obecne je li (HEAD_FLAGS & 0x1000) != 0 rna wielko tu mog si pojawi inne nowe pola ============================================================================ Uwagi ============================================================================ 1. Aby przetwarza archiwum SFX naley pomin szukanie bloku identyfikacyjnego w module SFX. Modu SFX nie zawiera tego bloku (0x52 0x61 0x72 0x21 0x1a 0x07 0x00). 2. CRC liczy si przy uyciu standardowego wielomianu 0xEDB88320. Je li rozmiar CRC jest mniejszy ni 4 bajty, uyte s tylko 2 modsze bajty.

You might also like