home *** CD-ROM | disk | FTP | other *** search
-
- RAR sⁿrⁿm 3.30 - Teknik Bilgi
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- A▐A╨IDA A╟IKLANAN AR▐▌V B▌╟▌M▌ SADECE 1.50 S▄R▄M▄NDEN ▌T▌BAREN GE╟ERL▌D▌R
-
- ==========================================================================
- RAR ar■iv dosyas² biτimi
- ==========================================================================
-
- Ar■iv dosyas² de≡i■ken uzunluk bloklar²na dayan²r. Bu bloklar²n s²ras²
- de≡i■ebilir, fakat birinci blok, ar■iv ⁿstbilgisi blo≡unu takip eden blo≡u
- i■aretlemelidir.
-
- Her blok a■a≡²daki alanlarla ba■lar:
-
- HEAD_CRC 2 bayt Tⁿm bloklar²n veya blok parτas²n²n CRC'si
- HEAD_TYPE 1 bayt Blok tⁿrⁿ
- HEAD_FLAGS 2 bayt Blok bayraklar²
- HEAD_SIZE 2 bayt Blok boyutu
- ADD_SIZE 4 bayt ▌ste≡e ba≡l² alan - eklenen blok boyutu
-
- ADD_SIZE alan² sadece (HEAD_FLAGS & 0x8000) != 0 ise varolacakt²r
-
- Toplam blok boyutu HEAD_SIZE e≡er (HEAD_FLAGS & 0x8000) == 0
- ve HEAD_SIZE+ADD_SIZE e≡er ADD_SIZE mevcutsa -(HEAD_FLAGS & 0x8000) != 0
- oldu≡unda.
-
- Her blokta, HEAD_FLAGS 'deki bitler ayn² anlama sahiptir:
-
- 0x4000 - e≡er ayarl²ysa, ÷nceki RAR sⁿrⁿmleri, ar■iv,
- gⁿncellendi≡inde blo≡u yoksayacak ve silecektir. E≡er
- yoksa, ar■iv gⁿncellendi≡inde blok yeni ar■ive
- kopyalanacakt²r.
-
- 0x8000 - e≡er ayarl²ysa, ADD_SIZE alan² mevcut olacak ve tam blok
- boyutu HEAD_SIZE+ADD_SIZE olacakt²r.
-
- Bildirilen (declared) blok tⁿrleri:
-
- HEAD_TYPE=0x72 i■aretleyici blok
- HEAD_TYPE=0x73 ar■iv ⁿstbilgisi
- HEAD_TYPE=0x74 dosya ⁿstbilgisi
- HEAD_TYPE=0x75 eski stil aτ²klama ⁿstbilgisi
- HEAD_TYPE=0x76 eski stil gerτeklik bilgisi
- HEAD_TYPE=0x77 eski stil alt blok
- HEAD_TYPE=0x78 eski stil kurtarma kayd²
- HEAD_TYPE=0x79 gerτeklik bilgisi
- HEAD_TYPE=0x7a alt blok
-
- Aτ²klama blo≡u aslen sadece di≡er bloklarla ve ayr² bulunmayan
- bloklarla kullan²l²r.
-
- Ar■iv i■leme a■a≡²daki yolla yap²l²r:
-
- 1. ▌■aret blo≡unu oku ve kontrol et
- 2. Ar■iv ⁿstbilgisini oku
- 3. HEAD_SIZE-sizeof(MAIN_HEAD) baytlar²n² oku veya atla
- 4. Ar■iv sonuyla kar■²la■²l²rsa ar■iv i■lemeyi durdur,
- de≡ilse alanlardan 7 bayt oku: HEAD_CRC, HEAD_TYPE, HEAD_FLAGS,
- HEAD_SIZE.
- 5. HEAD_TYPE kontrol et
- e≡er HEAD_TYPE==0x74
- dosya ⁿstbilgisini oku ( ilk 7 bayt zaten okundu )
- HEAD_SIZE-sizeof(FILE_HEAD) baytlar²n² oku veya atla
- e≡er (HEAD_FLAGS & 0x100)
- HIGH_PACK_SIZE*0x100000000+PACK_SIZE baytlar²n² oku veya atla
- aksi takdirde (else)
- PACK_SIZE baytlar²n² oku veya atla
- aksi takdirde (else)
- uyu■an HEAD_TYPE blo≡unu oku:
- HEAD_SIZE-7 baytlar²n² oku
- e≡er (HEAD_FLAGS & 0x8000)
- ADD_SIZE baytlar²n² oku
- 6. 4'e git.
-
-
- ==========================================================================
- Blok Biτimleri
- ==========================================================================
-
-
- ▌■aretleyici blok ( MARK_HEAD )
-
-
- HEAD_CRC Her zaman 0x6152
- 2 bayt
-
- HEAD_TYPE ▄stbilgi tⁿrⁿ: 0x72
- 1 bayt
-
- HEAD_FLAGS Her zaman 0x1a21
- 2 bayt
-
- HEAD_SIZE Blok boyutu = 0x0007
- 2 bayt
-
- ▌■aretleyici blok, aslen sabit bayt s²ras² olarak
- say²l²r: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
-
-
-
- Ar■iv ⁿstbilgisi ( MAIN_HEAD )
-
-
- HEAD_CRC HEAD_TYPE to RESERVED2 alanlar²n²n CRC'si
- 2 bayt
-
- HEAD_TYPE ▄stbilgi tⁿrⁿ: 0x73
- 1 bayt
-
- HEAD_FLAGS Bit bayraklar²:
- 2 bayt
- 0x0001 - Cilt ÷zniteli≡i (ar■iv cildi)
- 0x0002 - Ar■iv aτ²klamas² varl²≡²
- RAR 3.x ayr² bir aτ²klama blo≡u kullan²r ve
- bu bayra≡² ayarlamaz.
-
- 0x0004 - Ar■iv kilidi ÷zniteli≡i
- 0x0008 - Kat² ÷zniteli≡i (kat² ar■iv)
- 0x0010 - Yeni cilt adland²rma plan² ('ciltad².partN.rar')
- 0x0020 - Gerτeklik denetleme varl²≡²
- RAR 3.x bu bayra≡² ayarlamaz.
-
- 0x0040 - Kurtarma kayd² varl²≡²
- 0x0080 - Blok ⁿstbilgileri ■ifrelenmi■
- 0x0100 - ▌lk cilt (sadece RAR 3.0 ve sonras² taraf²ndan
- ayarlan²r)
-
- HEAD_FLAGS'deki di≡er bitler dahili
- kullan²m iτin ayr²lm²■t²r
-
- HEAD_SIZE Ar■iv ⁿstbilgisi toplam boyutu, ar■iv aτ²klamalar² dahil
- 2 bayt
-
- RESERVED1 Ayr²lm²■
- 2 bayt
-
- RESERVED2 Ayr²lm²■
- 4 bayt
-
-
- Aτ²klama blo≡u (HEAD_FLAGS & 0x02) != 0 ise mevcuttur
-
-
-
- Dosya ⁿstbilgisi (Ar■iv iτindeki dosya)
-
-
- HEAD_CRC HEAD_TYPE to FILEATTR CRC alanlar²
- 2 bayt ve dosya ad²
-
- HEAD_TYPE ▄stbilgi tⁿrⁿ: 0x74
- 1 bayt
-
- HEAD_FLAGS Bit bayraklar²:
- 2 bayt
- 0x01 - dosya ÷nceki ciltten devam ediyor
- 0x02 - dosya sonraki ciltte devam ediyor
- 0x04 - dosya parola ile ■ifrelenmi■
-
- 0x08 - dosya aτ²klamas² mevcut
- RAR 3.x ayr² bir aτ²klama blo≡u kullan²r ve
- bu bayra≡² ayarlamaz.
-
- 0x10 - ÷nce kullan²lan dosyalar hakk²nda bilgi (kat² bayra≡²)
- (RAR 2.0 ve sonras² iτin)
-
- bit 7 6 5 (RAR 2.0 ve sonras² iτin)
-
- 0 0 0 - s÷zlⁿk boyutu 64 KB
- 0 0 1 - s÷zlⁿk boyutu 128 KB
- 0 1 0 - s÷zlⁿk boyutu 256 KB
- 0 1 1 - s÷zlⁿk boyutu 512 KB
- 1 0 0 - s÷zlⁿk boyutu 1024 KB
- 1 0 1 - s÷zlⁿk boyutu 2048 KB
- 1 1 0 - s÷zlⁿk boyutu 4096 KB
- 1 1 1 - dosya bir dizin
-
- 0x100 - HIGH_PACK_SIZE ve HIGH_UNP_SIZE alanlar²
- mevcut. Bu alanlar τok bⁿyⁿk (2 gb'den bⁿyⁿk)
- dosyalar² ar■ivlemek iτin kullan²l²r, kⁿτⁿk
- dosyalarda bu alanlar yoktur.
-
- 0x200 - FILE_NAME al²■²lm²■ ve kodlanm²■ Unicode ad²n²n
- ikisini birden iτerir ve s²f²r ile ayr²lm²■t²r.
- Bu durumda NAME_SIZE alan² al²■²lm²■ isim art²
- kodlanm²■ Unicode art² 1'e e■ittir.
-
- 0x400 - ⁿstbilgi, dosya ad²ndan sonra ek olarak 8 bayt
- iτerir, bunlar ■ifreleme gⁿvenli≡i iτin gereklidir
- (bu sebeple 'salt' diye adland²rl²r).
-
- 0x800 - Bu eski dosya sⁿrⁿmⁿdⁿr, sⁿrⁿm numaras² dosya ad²na
- ';n' ■eklinde eklenir.
-
- 0x1000 - Uzat²lm²■ zaman alan² varl²≡².
-
- 0x8000 - bu bit her zaman ayarl²d²r, bⁿtⁿn blok boyutu
- HEAD_SIZE + PACK_SIZE (ve e≡er 0x100 biti ayarl²ysa,
- art² HIGH_PACK_SIZE)
-
- HEAD_SIZE Dosya ad² ve aτ²klamas² dahil dosya ⁿstbilgisi tam boyutu
- 2 bayt
-
- PACK_SIZE S²k²■t²r²lm²■ dosya boyutu
- 4 bayt
-
- UNP_SIZE S²k²■t²r²lmam²■ dosya boyutu
- 4 bayt
-
- HOST_OS Ar■ivleme iτin kullan²lan i■letim sistemi
- 1 bayt 0 - MS DOS
- 1 - OS/2
- 2 - Win32
- 3 - Unix
- 4 - Mac OS
- 5 - BeOS
-
- FILE_CRC Dosya CRC'si
- 4 bayt
-
- FTIME Standart MS-DOS biτiminde tarih ve saat
- 4 bayt
-
- UNP_VER Dosyay² τ²kartmak iτin gereken RAR sⁿrⁿmⁿ
- 1 bayt
- Sⁿrⁿm numaras²
- 10 * Bⁿyⁿk sⁿrⁿm + kⁿτⁿk sⁿrⁿm olarak kodlan²r.
-
- METHOD Paketleme y÷ntemi
- 1 bayt
- 0x30 - depola
- 0x31 - en h²zl² s²k²■t²rma
- 0x32 - h²zl² s²k²■t²rma
- 0x33 - normal s²k²■t²rma
- 0x34 - iyi s²k²■t²rma
- 0x35 - en iyi s²k²■t²rma
-
- NAME_SIZE Dosya ad² boyutu
- 2 bayt
-
- ATTR Dosya ÷znitelikleri
- 4 bayt
-
- HIGH_PACK_SIZE 64 bit de≡erli s²k²■t²r²lm²■ dosya boyutunun
- 4 bayt yⁿksek 4 bayt². ▌ste≡e ba≡l² de≡er, sadece
- HEAD_FLAGS biti 0x100 ise mevcut.
-
- HIGH_UNP_SIZE 64 bit de≡erli s²k²■t²r²lmam²■ dosya boyutunun
- 4 bayt yⁿksek 4 bayt². ▌ste≡e ba≡l² de≡er,
- sadece HEAD_FLAGS biti 0x100 ise mevcut.
-
- FILE_NAME Dosya ad² - string of NAME_SIZE bayt boyut
-
- SALT (HEAD_FLAGS & 0x400) != 0 ise mevcuttur.
- 8 bayt
-
- EXT_TIME (HEAD_FLAGS & 0x1000) != 0 ise mevcuttur.
- de≡i■ken boyut
-
- di≡er yeni alanlar burada g÷rⁿnebilir.
-
-
- ==========================================================================
- Uygulama notlar²
- ==========================================================================
-
- 1. SFX ar■ivi i■lemek iτin, ar■iv iτinde i■aretleyici blo≡u aramay²
- atlamal²s²n²z. SFX modⁿllerinde i■aretleyici blok s²ras²
- (0x52 0x61 0x72 0x21 0x1a 0x07 0x00) bulunmaz.
-
- 2. CRC, standart polinom 0xEDB88320 kullan²larak hesaplan²r.
- CRC'nin 4 bayttan az oldu≡u durumlarda, sadece dⁿ■ⁿk s²ra baytlar
- kullan²l²r.
-