home *** CD-ROM | disk | FTP | other *** search
/ PCNet 2004 October / PCNET_CD_2004_10_1.iso / toolkit / wrar330tr.exe / TechNote.txt < prev    next >
Encoding:
Text File  |  2004-01-25  |  9.0 KB  |  276 lines

  1.  
  2.                       RAR sⁿrⁿm 3.30 - Teknik Bilgi
  3.                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4.  
  5.  A▐A╨IDA A╟IKLANAN AR▐▌V B▌╟▌M▌ SADECE 1.50 S▄R▄M▄NDEN ▌T▌BAREN GE╟ERL▌D▌R
  6.  
  7.  ==========================================================================
  8.                          RAR ar■iv dosyas² biτimi
  9.  ==========================================================================
  10.  
  11.    Ar■iv dosyas² de≡i■ken uzunluk bloklar²na dayan²r. Bu bloklar²n s²ras²
  12. de≡i■ebilir, fakat birinci blok, ar■iv ⁿstbilgisi blo≡unu takip eden blo≡u
  13. i■aretlemelidir.
  14.  
  15.    Her blok a■a≡²daki alanlarla ba■lar:
  16.  
  17. HEAD_CRC       2 bayt      Tⁿm bloklar²n veya blok parτas²n²n CRC'si
  18. HEAD_TYPE      1 bayt      Blok tⁿrⁿ
  19. HEAD_FLAGS     2 bayt      Blok bayraklar²
  20. HEAD_SIZE      2 bayt      Blok boyutu
  21. ADD_SIZE       4 bayt      ▌ste≡e ba≡l² alan - eklenen blok boyutu
  22.  
  23.    ADD_SIZE alan² sadece (HEAD_FLAGS & 0x8000) != 0 ise varolacakt²r
  24.  
  25.    Toplam blok boyutu HEAD_SIZE e≡er (HEAD_FLAGS & 0x8000) == 0
  26. ve HEAD_SIZE+ADD_SIZE e≡er ADD_SIZE mevcutsa -(HEAD_FLAGS & 0x8000) != 0
  27. oldu≡unda.
  28.  
  29.    Her blokta, HEAD_FLAGS 'deki bitler ayn² anlama sahiptir:
  30.  
  31.   0x4000 - e≡er ayarl²ysa, ÷nceki RAR sⁿrⁿmleri, ar■iv,
  32.            gⁿncellendi≡inde blo≡u yoksayacak ve silecektir. E≡er
  33.            yoksa, ar■iv gⁿncellendi≡inde blok yeni ar■ive
  34.            kopyalanacakt²r.
  35.  
  36.   0x8000 - e≡er ayarl²ysa, ADD_SIZE alan² mevcut olacak ve tam blok
  37.            boyutu HEAD_SIZE+ADD_SIZE olacakt²r.
  38.  
  39.   Bildirilen (declared) blok tⁿrleri:
  40.  
  41. HEAD_TYPE=0x72          i■aretleyici blok
  42. HEAD_TYPE=0x73          ar■iv ⁿstbilgisi
  43. HEAD_TYPE=0x74          dosya ⁿstbilgisi
  44. HEAD_TYPE=0x75          eski stil aτ²klama ⁿstbilgisi
  45. HEAD_TYPE=0x76          eski stil gerτeklik bilgisi
  46. HEAD_TYPE=0x77          eski stil alt blok
  47. HEAD_TYPE=0x78          eski stil kurtarma kayd²
  48. HEAD_TYPE=0x79          gerτeklik bilgisi
  49. HEAD_TYPE=0x7a          alt blok
  50.  
  51.    Aτ²klama blo≡u aslen sadece di≡er bloklarla ve ayr² bulunmayan
  52. bloklarla kullan²l²r.
  53.  
  54.    Ar■iv i■leme a■a≡²daki yolla yap²l²r:
  55.  
  56. 1. ▌■aret blo≡unu oku ve kontrol et
  57. 2. Ar■iv ⁿstbilgisini oku
  58. 3. HEAD_SIZE-sizeof(MAIN_HEAD) baytlar²n² oku veya atla
  59. 4. Ar■iv sonuyla kar■²la■²l²rsa ar■iv i■lemeyi durdur,
  60.    de≡ilse alanlardan 7 bayt oku: HEAD_CRC, HEAD_TYPE, HEAD_FLAGS,
  61.    HEAD_SIZE.
  62. 5. HEAD_TYPE kontrol et
  63.    e≡er HEAD_TYPE==0x74
  64.      dosya ⁿstbilgisini oku ( ilk 7 bayt zaten okundu )
  65.      HEAD_SIZE-sizeof(FILE_HEAD) baytlar²n² oku veya atla 
  66.      e≡er (HEAD_FLAGS & 0x100)
  67.        HIGH_PACK_SIZE*0x100000000+PACK_SIZE baytlar²n² oku veya atla
  68.      aksi takdirde (else)
  69.        PACK_SIZE baytlar²n² oku veya atla
  70.    aksi takdirde (else)
  71.      uyu■an HEAD_TYPE blo≡unu oku:
  72.             HEAD_SIZE-7 baytlar²n² oku
  73.        e≡er (HEAD_FLAGS & 0x8000)
  74.             ADD_SIZE baytlar²n² oku
  75. 6. 4'e git.
  76.  
  77.  
  78.  ==========================================================================
  79.                                Blok Biτimleri
  80.  ==========================================================================
  81.  
  82.  
  83.    ▌■aretleyici blok ( MARK_HEAD )
  84.  
  85.  
  86. HEAD_CRC        Her zaman 0x6152
  87. 2 bayt
  88.  
  89. HEAD_TYPE       ▄stbilgi tⁿrⁿ: 0x72
  90. 1 bayt
  91.  
  92. HEAD_FLAGS      Her zaman 0x1a21
  93. 2 bayt
  94.  
  95. HEAD_SIZE       Blok boyutu = 0x0007
  96. 2 bayt
  97.  
  98.    ▌■aretleyici blok, aslen sabit bayt s²ras² olarak
  99. say²l²r: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
  100.  
  101.  
  102.  
  103.    Ar■iv ⁿstbilgisi ( MAIN_HEAD )
  104.  
  105.  
  106. HEAD_CRC        HEAD_TYPE to RESERVED2 alanlar²n²n CRC'si
  107. 2 bayt
  108.  
  109. HEAD_TYPE       ▄stbilgi tⁿrⁿ: 0x73
  110. 1 bayt
  111.  
  112. HEAD_FLAGS      Bit bayraklar²:
  113. 2 bayt
  114.                 0x0001    - Cilt ÷zniteli≡i (ar■iv cildi)
  115.                 0x0002    - Ar■iv aτ²klamas² varl²≡²
  116.                             RAR 3.x ayr² bir aτ²klama blo≡u kullan²r ve
  117.                             bu bayra≡² ayarlamaz.
  118.  
  119.                 0x0004    - Ar■iv kilidi ÷zniteli≡i
  120.                 0x0008    - Kat² ÷zniteli≡i (kat² ar■iv)
  121.                 0x0010    - Yeni cilt adland²rma plan² ('ciltad².partN.rar')
  122.                 0x0020    - Gerτeklik denetleme varl²≡²
  123.                             RAR 3.x bu bayra≡² ayarlamaz.
  124.  
  125.                 0x0040    - Kurtarma kayd² varl²≡²
  126.                 0x0080    - Blok ⁿstbilgileri ■ifrelenmi■
  127.                 0x0100    - ▌lk cilt (sadece RAR 3.0 ve sonras² taraf²ndan
  128.                             ayarlan²r)
  129.  
  130.                 HEAD_FLAGS'deki di≡er bitler dahili
  131.                 kullan²m iτin ayr²lm²■t²r
  132.  
  133. HEAD_SIZE       Ar■iv ⁿstbilgisi toplam boyutu, ar■iv aτ²klamalar² dahil
  134. 2 bayt
  135.  
  136. RESERVED1       Ayr²lm²■
  137. 2 bayt
  138.  
  139. RESERVED2       Ayr²lm²■
  140. 4 bayt
  141.  
  142.  
  143. Aτ²klama blo≡u (HEAD_FLAGS & 0x02) != 0 ise mevcuttur
  144.  
  145.  
  146.  
  147.    Dosya ⁿstbilgisi (Ar■iv iτindeki dosya)
  148.  
  149.  
  150. HEAD_CRC        HEAD_TYPE to FILEATTR CRC alanlar²
  151. 2 bayt          ve dosya ad²
  152.  
  153. HEAD_TYPE       ▄stbilgi tⁿrⁿ: 0x74
  154. 1 bayt
  155.  
  156. HEAD_FLAGS      Bit bayraklar²:
  157. 2 bayt
  158.                 0x01 - dosya ÷nceki ciltten devam ediyor
  159.                 0x02 - dosya sonraki ciltte devam ediyor
  160.                 0x04 - dosya parola ile ■ifrelenmi■
  161.  
  162.                 0x08 - dosya aτ²klamas² mevcut
  163.                        RAR 3.x ayr² bir aτ²klama blo≡u kullan²r ve
  164.                        bu bayra≡² ayarlamaz.
  165.  
  166.                 0x10 - ÷nce kullan²lan dosyalar hakk²nda bilgi (kat² bayra≡²)
  167.                        (RAR 2.0 ve sonras² iτin)
  168.  
  169.                 bit  7 6 5 (RAR 2.0 ve sonras² iτin)
  170.  
  171.                      0 0 0    - s÷zlⁿk boyutu   64 KB
  172.                      0 0 1    - s÷zlⁿk boyutu  128 KB
  173.                      0 1 0    - s÷zlⁿk boyutu  256 KB
  174.                      0 1 1    - s÷zlⁿk boyutu  512 KB
  175.                      1 0 0    - s÷zlⁿk boyutu 1024 KB
  176.                      1 0 1    - s÷zlⁿk boyutu 2048 KB
  177.                      1 1 0    - s÷zlⁿk boyutu 4096 KB
  178.                      1 1 1    - dosya bir dizin
  179.  
  180.                0x100 - HIGH_PACK_SIZE ve HIGH_UNP_SIZE alanlar²
  181.                        mevcut. Bu alanlar τok bⁿyⁿk (2 gb'den bⁿyⁿk)
  182.                        dosyalar² ar■ivlemek iτin kullan²l²r, kⁿτⁿk 
  183.                        dosyalarda bu alanlar yoktur.
  184.  
  185.                0x200 - FILE_NAME al²■²lm²■ ve kodlanm²■ Unicode ad²n²n
  186.                        ikisini birden iτerir ve s²f²r ile ayr²lm²■t²r.
  187.                        Bu durumda NAME_SIZE alan² al²■²lm²■ isim art²
  188.                        kodlanm²■ Unicode art² 1'e e■ittir.
  189.  
  190.                0x400 - ⁿstbilgi, dosya ad²ndan sonra ek olarak 8 bayt
  191.                        iτerir, bunlar ■ifreleme gⁿvenli≡i iτin gereklidir
  192.                        (bu sebeple 'salt' diye adland²rl²r).
  193.  
  194.                0x800 - Bu eski dosya sⁿrⁿmⁿdⁿr, sⁿrⁿm numaras² dosya ad²na
  195.                        ';n' ■eklinde eklenir.
  196.  
  197.               0x1000 - Uzat²lm²■ zaman alan² varl²≡².
  198.  
  199.               0x8000 - bu bit her zaman ayarl²d²r, bⁿtⁿn blok boyutu
  200.                        HEAD_SIZE + PACK_SIZE (ve e≡er 0x100 biti ayarl²ysa,
  201.                        art² HIGH_PACK_SIZE)
  202.  
  203. HEAD_SIZE       Dosya ad² ve aτ²klamas² dahil dosya ⁿstbilgisi tam boyutu
  204. 2 bayt
  205.  
  206. PACK_SIZE       S²k²■t²r²lm²■ dosya boyutu
  207. 4 bayt
  208.  
  209. UNP_SIZE        S²k²■t²r²lmam²■ dosya boyutu
  210. 4 bayt
  211.  
  212. HOST_OS         Ar■ivleme iτin kullan²lan i■letim sistemi
  213. 1 bayt                 0 - MS DOS
  214.                        1 - OS/2
  215.                        2 - Win32
  216.                        3 - Unix
  217.                        4 - Mac OS
  218.                        5 - BeOS
  219.  
  220. FILE_CRC        Dosya CRC'si
  221. 4 bayt
  222.  
  223. FTIME           Standart MS-DOS biτiminde tarih ve saat
  224. 4 bayt
  225.  
  226. UNP_VER         Dosyay² τ²kartmak iτin gereken RAR sⁿrⁿmⁿ
  227. 1 bayt
  228.                 Sⁿrⁿm numaras²
  229.                 10 * Bⁿyⁿk sⁿrⁿm + kⁿτⁿk sⁿrⁿm olarak kodlan²r.
  230.  
  231. METHOD          Paketleme y÷ntemi
  232. 1 bayt
  233.                 0x30 - depola
  234.                 0x31 - en h²zl² s²k²■t²rma
  235.                 0x32 - h²zl² s²k²■t²rma
  236.                 0x33 - normal s²k²■t²rma
  237.                 0x34 - iyi s²k²■t²rma
  238.                 0x35 - en iyi s²k²■t²rma
  239.  
  240. NAME_SIZE       Dosya ad² boyutu
  241. 2 bayt
  242.  
  243. ATTR            Dosya ÷znitelikleri
  244. 4 bayt
  245.  
  246. HIGH_PACK_SIZE  64 bit de≡erli s²k²■t²r²lm²■ dosya boyutunun
  247. 4 bayt          yⁿksek 4 bayt². ▌ste≡e ba≡l² de≡er, sadece
  248.                 HEAD_FLAGS biti 0x100 ise mevcut.
  249.  
  250. HIGH_UNP_SIZE   64 bit de≡erli s²k²■t²r²lmam²■ dosya boyutunun
  251. 4 bayt          yⁿksek 4 bayt². ▌ste≡e ba≡l² de≡er,
  252.                 sadece HEAD_FLAGS biti 0x100 ise mevcut.
  253.  
  254. FILE_NAME       Dosya ad² - string of NAME_SIZE bayt boyut
  255.  
  256. SALT            (HEAD_FLAGS & 0x400) != 0 ise mevcuttur.
  257. 8 bayt
  258.  
  259. EXT_TIME        (HEAD_FLAGS & 0x1000) != 0 ise mevcuttur.
  260. de≡i■ken boyut
  261.  
  262. di≡er yeni alanlar burada g÷rⁿnebilir.
  263.  
  264.  
  265.  ==========================================================================
  266.                              Uygulama notlar²
  267.  ==========================================================================
  268.  
  269.    1. SFX ar■ivi i■lemek iτin, ar■iv iτinde i■aretleyici blo≡u aramay²
  270. atlamal²s²n²z. SFX modⁿllerinde i■aretleyici blok s²ras²
  271. (0x52 0x61 0x72 0x21 0x1a 0x07 0x00) bulunmaz.
  272.  
  273.    2. CRC, standart polinom 0xEDB88320 kullan²larak hesaplan²r.
  274. CRC'nin 4 bayttan az oldu≡u durumlarda, sadece dⁿ■ⁿk s²ra baytlar
  275. kullan²l²r.
  276.