TechNote(1), winarr, dalej

[ Pobierz całość w formacie PDF ]
RAR wersja 4.01 - Informacje techniczne~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~FORMAT ARCHIWUM OPISANY PONIッEJ DOTYCZY TYLKO WERSJI OD 1.50 WZWYッ============================================================================Format archiwum RAR============================================================================Archiwum skウada si・z blok o rnej dウugo彡i. Kolejno懈 tych blok moソeby・rna, lecz pierwszym blokiem musi by・blok identyfikacyjny, po ktymmusi wystケpi・blok nagウka archiwum.Kaソdy blok rozpoczyna si・nast麪ujケcymi polami:HEAD_CRC 2 bajty CRC (suma kontrolna) caウego bloku lub jego cz龕ciHEAD_TYPE 1 bajt typ blokuHEAD_FLAGS 2 bajty znaczniki blokuHEAD_SIZE 2 bajty rozmiar blokuADD_SIZE 4 bajty pole opcjonalnePole ADD_SIZE jest obecne tylko je徑i (HEAD_FLAGS & 0x8000) != 0Caウkowity rozmiar bloku to HEAD_SIZE je徑i (HEAD_FLAGS & 0x8000) == 0lub HEAD_SIZE+ADD_SIZE je徑i pole ADD_SIZE jest obecne - gdy(HEAD_FLAGS & 0x8000) != 0.W kaソdym bloku nast麪ujケce bity w polu HEAD_FLAGS oznaczajケ:0x4000 - je徑i ustawiony, starsze wersje RARa zignorujケ blok i usunケ gopodczas aktualizacji archiwum.je徑i zgaszony, blok jest kopiowany do nowego archiwum podczasjego aktualizacji;0x8000 - je徑i ustawiony, pole ADD_SIZE jest obecne i caウkowitym rozmiarembloku jest HEAD_SIZE+ADD_SIZE.Typy blok:HEAD_TYPE=0x72 blok identyfikacyjnyHEAD_TYPE=0x73 nagウek archiwumHEAD_TYPE=0x74 nagウek plikuHEAD_TYPE=0x75 nagウek komentarza starego typuHEAD_TYPE=0x76 informacja autentyczno彡i starego typuHEAD_TYPE=0x77 pod-blok starego typuHEAD_TYPE=0x78 dane naprawcze starego typuHEAD_TYPE=0x79 informacja autentyczno彡i starego typuHEAD_TYPE=0x7a pod-blokBlok komentarza jest uソywany tylko w innych blokach i nie wyst麪ujesamodzielnie.Przetwarzanie archiwum:1. Odczytaj i sprawd・blok identyfikacyjny2. Odczytaj nagウek archiwum3. Odczytaj lub pomi・HEAD_SIZE-sizeof(MAIN_HEAD) bajt4. Je徑i napotkaウe・koniec archiwum to zakoz przetwarzanie archiwum,w przeciwnym wypadku odczytaj 7 bajt do p HEAD_CRC, HEAD_TYPE,HEAD_FLAGS, HEAD_SIZE.5. Sprawd・HEAD_TYPE.je徑i HEAD_TYPE==0x74odczytaj nagウek pliku (pierwsze 7 bajt juソ zostaウo odczytane)odczytaj lub pomi・HEAD_SIZE-sizeof(FILE_HEAD) bajtje徑i (HEAD_FLAGS & 0x100)odczytaj lub pomi・HIGH_PACK_SIZE*0x100000000+PACK_SIZE bajtw przeciwnym wypadkuodczytaj lub pomi・FILE_SIZE bajtw przeciwnym wypadkuodczytaj odpowiedni blok:odczytaj HEAD_SIZE-7 bajtje徑i (HEAD_FLAGS & 0x8000)odczytaj ADD_SIZE bajt6. id・do punktu 4.============================================================================Formaty blok============================================================================Blok identyfikacyjny (MARK_HEAD)HEAD_CRC zawsze 0x61522 bajtyHEAD_TYPE typ nagウka: 0x721 bajtHEAD_FLAGS zawsze 0x1a212 bajtyHEAD_SIZE rozmiar bloku = 0x00072 bajtyBlok identyfikacyjny jest wウa彡iwie staウケ sekwencjケ bajt:0x52 0x61 0x72 0x21 0x1a 0x07 0x00Nagウek archiwum (MAIN_HEAD)HEAD_CRC CRC p od HEAD_TYPE do RESERVED22 bytesHEAD_TYPE typ nagウka: 0x731 bajtHEAD_FLAGS znaczniki bitowe:2 bajty0x0001 - wolumin (archiwum jest woluminem)0x0002 - archiwum posiada komentarzRAR 3.x uソywa osobnego bloku komentarzai nie ustawia tego znacznika.0x0004 - archiwum jest zablokowane0x0008 - archiwum jest ciケgウe0x0010 - nowy spos nazywania wolumin ('nazwa.partN.rar')0x0020 - archiwum posiada informacj・autentyczno彡iRAR 3.x nie ustawia tego znacznika.0x0040 - archiwum posiada dane naprawcze0x0080 - nagウki blok sケ zaszyfrowane0x0100 - pierwszy wolumin (tylko dla RAR 3.0 i nowszych)pozostaウe bity w HEAD_FLAGS sケ zarezerwowane do uソytkuwewn黎rznegoHEAD_SIZE caウkowity rozmiar nagウka archiwum ウケcznie z komentarzem2 bajtyRESERVED1 zarezerwowane2 bajtyRESERVED2 zarezerwowane4 bajtyNagウek pliku (plik w archiwum)HEAD_CRC CRC p od HEAD_TYPE do FILEATTR2 bajty i nazwy plikuHEAD_TYPE typ nagウka: 0x741 bajtHEAD_FLAGS znaczniki bitowe:2 bajty0x01 - plik kontynuowany z poprzedniego woluminu0x02 - plik kontynuowany w nast麪nym woluminie0x04 - plik zaszyfrowany hasウem0x08 - plik posiada komentarzRAR 3.x uソywa osobnego bloku komentarzai nie ustawia tego znacznika.0x10 - uソyta jest informacja z poprzedniego pliku(znacznik ciケgウo彡i)(dla RARa od wersji 2.0 wzwyソ)bity 7 6 5 (dla RARa od wersji 2.0 wzwyソ)0 0 0 - rozmiar sウownika 64 KB0 0 1 - rozmiar sウownika 128 KB0 1 0 - rozmiar sウownika 256 KB0 1 1 - rozmiar sウownika 512 KB1 0 0 - rozmiar sウownika 1024 KB1 0 1 - rozmiar sウownika 2048 KB1 1 0 - rozmiar sウownika 4096 KB1 1 1 - plik jest katalogiem0x100 - obecne sケ pola HIGH_PACK_SIZE i HIGH_UNP_SIZE, kteuソywane sケ tylko przy archiwizacji bardzo duソychplik (ponad 2 GB); w przypadku mniejszych plikpola te nie sケ umieszczane w archiwum.0x200 - FILE_NAME zawiera zarno zwykウケ nazw・pliku jakrnieソ nazw・w standardzie UNICODE, oddzielonebajtem 0 (zero). W tym wypadku pole NAME_SIZEjest rne dウugo懈i zwykウej nazwy plus dウugo懈nazwy w formacie UNICODE plus 1.Je徑i ten znacznik jest obecny a FILE_NAME nie zawierabajt o warto彡i 0 (zero) oznacza to, ソe nazwa plikujest w formacie UTF-8.0x400 - nagウek zawiera dodatkowe 8 bajt umieszczoneza nazwケ pliku, kte sケ wymagane do wzmocnieniabezpieczetwa szyfrowania0x800 - Znacznik wersji. Je徑i plik jest starszケ wersjケ,jej numer jest doウケczany do nazwy jako ';n'.0x1000 - obecne jest rozszerzone pole zawierajケce czas0x8000 - ten bit jest zawsze ustawiony, dlatego caウkowityrozmiar bloku jest rny HEAD_SIZE + PACK_SIZE(plus HIGH_PACK_SIZE, je徑i bit 0x100 jest ustawiony)HEAD_SIZE peウny rozmiar nagウka pliku wraz z nazwケ pliku i komentarzem2 bajtyPACK_SIZE rozmiar pliku po kompresji4 bajtyUNP_SIZE oryginalny rozmiar pliku4 bajtyHOST_OS system operacyjny, w ktym nastケpiウa archiwizacja1 bajt 0 - MS DOS1 - OS/22 - Windows3 - Unix4 - Mac OS5 - BeOSFILE_CRC CRC pliku4 bajtyFTIME data i czas w standardowym formacie MS DOS4 bajtyUNP_VER wersja RARa potrzebna do wypakowania pliku1 bajtWersja jest kodowana w nast麪ujケcy spos:10 * Gウna wersja + wersja poboczna.METHOD metoda kompresji1 bajt0x30 - brak kompresji0x31 - najszybsza kompresja0x32 - szybka kompresja0x33 - normalna kompresja0x34 - dobra kompresja0x35 - najlepsza kompresjaNAME_SIZE rozmiar nazwy pliku2 bajtyATTR atrybuty pliku4 bajtyHIGH_PACK_SIZE 4 starsze bajty 64-bitowej liczby okre徑ajケcej rozmiar pliku4 bajty po kompresji. Warto懈 opcjonalna, obecna tylko je徑iHEAD_FLAGS ma ustawiony bit 0x100HIGH_UNP_SIZE 4 starsze bajty 64-bitowej liczby okre徑ajケcej oryginalny4 bajty (przed kompresjケ) rozmiar pliku. Warto懈 opcjonalna, obecnatylko je徑i HEAD_FLAGS ma ustawiony bit 0x100FILE_NAME nazwa pliku - ciケg znak o dウugo彡i NAME_SIZE bajtSALT obecne je徑i (HEAD_FLAGS & 0x400) != 08 bajtEXT_TIME obecne je徑i (HEAD_FLAGS & 0x1000) != 0rna wielko懈tu mogケ si・pojawi・inne nowe pola============================================================================Uwagi============================================================================1. Aby przetwarza・archiwum SFX naleソy pominケ・szukanie blokuidentyfikacyjnego w module SFX. Moduウ SFX nie zawiera tego bloku(0x52 0x61 0x72 0x21 0x1a 0x07 0x00).2. CRC liczy si・przy uソyciu standardowego wielomianu 0xEDB88320. Je徑irozmiar CRC jest mniejszy niソ 4 bajty, uソyte sケ tylko 2 mウodsze bajty. [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • mariusz147.htw.pl
  •