Selasa, 10 Januari 2012

Ekstensi ZIP



       I.            Pendahuluan

Zip adalah file format yang digunakan untuk kompresi data. Sebuah file zip berisi satu atau lebih file yang telah dikompresi, untuk mengurangi ukuran file, ataupun disimpan.Format file zip melakukan kompresi dengan cara menggunakan algoritma kompresi.
Format ini awalnya diciptakan pada tahun 1989 oleh Phil Katz, dan pertama kali diimplementasikan dalam utilitas PKZip PKWARE itu, sebagai pengganti atau penyempurna format kompresi ARC sebelumnya diciptakan oleh Thom Henderson.

Format zip sekarang didukung oleh banyak utilitas perangkat lunak lain dari PKZip. Microsoft telah termasuk SO yang mendukung zip (dengan nama "compressed folders") dalam versi Microsoft Windows sejak tahun 1998. Apple juga mendukung zip di Mac OS X 10.3 (melalui BOMArchiveHelper, sekarang Archive utility) dan kemudian,berkembang bersama dengan format kompresi lainnya.

File Zip umumnya menggunakan ekstensi file "zip." Atau "ZIP." Dan jenis media MIME aplikasi / zip. Zip digunakan sebagai format file base oleh banyak program, biasanya di bawah nama yang berbeda sesuai dengan software developer asal (7-Zip,WinZip, dll).

Format ZIP adalah yang paling populer. Sebagai contoh, kebanyakan arsip di Internet adalah arsip berformat ZIP. Jika Anda akan mengirimkan suatu arsip RAR ke seseorang, mungkin saja teman Anda tidak mempunyai WinRAR untuk mengekstrak muatan yang ada dalam arsip RAR, hal ini bisa saja membuat Anda untuk memilih format ZIP. Pada sisi lain, Anda dapat mengirimkan suatu arsip yang berjenis self-extracting (dapat mengekstrak dirinya sendiri). Arsip self-extracting memiliki sedikit ukuran yang lebih besar, tetapi dapat mengekstrak dirinya tanpa bantuan program apa pun.
Keuntungan ZIP yang lain  adalah kecepatan. Proses penciptaan arsip ZIP lebih cepat dari arsip RAR.
    II.            Desain Format File Zip
Zip merupakan format arsip sederhana yang menyimpan beberapa file. Zip memungkinkan file yang terkandung untuk dikompresi menggunakan metode yang berbeda, serta hanya menyimpan file tanpa kompresi. Setiap file disimpan secara terpisah, memungkinkan file yang berbeda dalam arsip yang sama yang akan dikompresi menggunakan metode yang berbeda.

Direktori ditempatkan di akhir sebuah file zip. Ini mengidentifikasi file apa yang di zip dan mengidentifikasi di mana dalam zip file berada. Hal ini memungkinkan pembaca zip ke memuat daftar file tanpa membaca seluruh arsip zip. Zip arsip juga bisa memasukkan data tambahan yang tidak terkait dengan arsip zip. Hal ini memungkinkan untuk zip arsip untuk dibuat menjadi self-extracting arsip, aplikasi yang terkandung dekompresi data mereka, dengan memasukkan kode program dalam arsip zip dan menandai file sebagai executable (yaitu, dengan ekstensi exe.). Di sisi lain, juga memungkinkan untuk sebuah file berbahaya, seperti file gambar GIF, untuk menyembunyikan kode berbahaya dengan membuat file arsip zip.

Format zip menggunakan algoritma 32-bit CRC dan mencakup dua salinan dari struktur direktori dari arsip untuk memberikan perlindungan lebih besar terhadap kehilangan data.
 III.            Metode Kompresi (DEFLATE)
Deflate adalah Algoritma kompresi bersifat data lossless yang menggunakan kombinasi dari algoritma LZ77 dan Huffman coding. Algoritma asli seperti yang dirancang oleh Katz telah dipatenkan sebagai US patent 5051745 dan diberikan hak  untuk PKWARE.
a)      Stream format
Sebuah aliran Deflate terdiri dari serangkaian blok. Setiap blok didahului oleh sebuah header 3-bit:
1 bit: sebagai  bit penanda dan berada di akhir streams format:
        
    1:         ini adalah blok terakhir di streams format
        
   0:         ada blok lagi untuk memproses setelah yang satu ini.
2 bit: Encoding metode yang digunakan untuk jenis blok:
         00: bagian yang disimpan / baku / literal, antara 0 dan 65.535 byte
 
         01: static Huffman compressed block, menggunakan pohon Huffman
         10: compressed block complete dengan tabel Huffman
         11:
tidak digunakan.
Sebagian besar blok akan berakhir menjadi dikodekan menggunakan metode 10, pengkodean Huffman dinamis, yang menghasilkan sebuah pohon Huffman dioptimalkan disesuaikan untuk setiap blok data individual.



Kompresi dicapai melalui dua langkah
·         Pencocokan dan penggantian string duplikat dengan pointer
·         Mengganti simbol dengan yang baru, simbol tertimbang berdasarkan frekuensi   penggunaannya.

b)     Duplicate string elimination
Dalam blok yang sedang dikompresi, jika terlihat suatu byte yang ganda / duplicate  (repeated strings), maka metode back-referensi dimasukkan, menghubungkan ke lokasi sebelumnya bahwa string identik sebagai gantinya. Metode back referensi dapat dibuat di sejumlah blok, selama jarak muncul dalam 32 kB terakhir dari data terkompresi decode (disebut sliding window).

c)      Bit Reduction
Tahap kedua terdiri dari kompresi menggantikan simbol yang umum digunakan dengan representasi simbol pendek dan kurang umum digunakan dengan representasi lagi. Metode yang digunakan adalah pengkodean Huffman yang menciptakan pohon unprefixed non-overlapping interval, di mana panjang setiap urutan berbanding terbalik dengan kemungkinan bahwa simbol yang perlu dikodekan. lebih besar kemungkinan simbol harus dikodekan, maka akan semakin pendek urutan bitnya.

Sebuah pohon dibuat yang berisi ruang untuk 288 simbol:
0-255: mewakili byte literal / simbol 0-255.
256: ujung blok - pengolahan berhenti jika blok terakhir, jika tidak mulai memproses blok berikutnya. 257-285: dikombinasikan dengan ekstra-bit, panjang pertandingan 3-258 byte.
286, 287: tidak digunakan, bagian pendiam dan ilegal tapi masih pohon.

Sebuah kode panjang pertandingan akan selalu diikuti dengan kode jarak jauh. Berdasarkan pada jarak kode dibaca, lebih "ekstra" bit dapat dibaca dalam rangka untuk menghasilkan jarak akhir. Pohon Jarak berisi ruang untuk 32 simbol:

    
     0-3: jarak 1-4
     4-5: jarak 5-8, 1 bit tambahan
     6-7: jarak 9-16, 2 bit ekstra
     8-9: jarak 17-32, 3 bit ekstra
     ...
     26-27: jarak 8,193-16,384, 12 bit ekstra
     28-29: jarak 16,385-32,768, 13 bit ekstra
     30-31: tidak digunakan, bagian pendiam dan ilegal tapi masih pohon.

Perhatikan bahwa untuk simbol pertandingan jarak 2-29, jumlah bit ekstra dapat dihitung sebagai
: 22/2 - 1

d)      Encoder/compressor
Selama tahap kompresi, encoder yang memilih jumlah waktu yang dihabiskan untuk mencari pencocokan string. Implementasi referensi zlib / gzip memungkinkan pengguna untuk memilih dari skala geser mungkin mengakibatkan tingkat kompresi vs kecepatan encoding. Pilihan berkisar dari -0 (jangan mencoba kompresi, hanya menyimpan terkompresi) ke -9 mewakili kemampuan maksimum dari implementasi referensi dalam zlib / gzip.

Encoders Deflate lainnya telah diproduksi, yang semuanya juga akan menghasilkan sebuah bitstream kompatibel mampu didekompresi oleh decoder Deflate yang ada. Implementasi yang berbeda mungkin akan menghasilkan variasi pada akhir dikodekan bit-stream diproduksi.


 IV.            Struktur Zip
Sebuah file zip adalah diidentifikasi dengan adanya direktori pusat yang terletak di ujung struktur dalam rangka untuk memungkinkan menambahkan file baru. Direktori pusat menyimpan daftar nama-nama entri (file atau direktori) disimpan dalam file zip, bersama dengan metadata lain tentang entri, dan offset ke file zip, menunjuk ke entri data aktual. Hal ini memungkinkan daftar file arsip yang akan dilakukan relatif cepat, karena seluruh arsip tidak harus dibaca untuk melihat daftar file. Entri dalam file zip juga mencakup informasi ini untuk redundansi.
Urutan entri file dalam direktori tidak perlu bertepatan dengan urutan entri file dalam arsip.
Setiap entri diperkenalkan oleh sebuah header lokal dengan informasi tentang file seperti ukuran, komentar file dan nama file, diikuti oleh opsional "Extra" bidang data, dan kemudian, mungkin terkompresi file data dienkripsi mungkin."Ekstra" bidang data adalah kunci untuk diperpanjang dari format zip. "Ekstra" bidang dieksploitasi untuk mendukung format Zip64, WinZip-kompatibel enkripsi AES, atribut file, dan lebih tinggi resolusi NTFS atau Unix cap waktu file. Ekstensi lain yang mungkin melalui bidang "Extra". Zip alat yang diperlukan oleh spesifikasi untuk mengabaikan bidang ekstra mereka tidak mengenali.
Format zip menggunakan spesifik 4-byte "signatures" untuk menunjukkan berbagai struktur dalam file. Setiap entri file ditandai dengan tanda tangan khusus. Awal direktori pusat ditandai dengan tanda tangan yang berbeda, dan setiap entri dalam direktori pusat ditandai dengan tanda tangan lain khususnya 4-byte.
Tidak ada BOF atau EOF penanda dalam spesifikasi zip. Seringkali hal pertama dalam file zip adalah entri zip, yang dapat diidentifikasi dengan mudah oleh signature. Tapi itu tidak selalu terjadi bahwa file zip dimulai dengan entri zip, dan tidak diperlukan oleh spesifikasi pos.
Tools yang benar membaca arsip zip harus memindai signatures dari berbagai bidang, zip direktori pusat. Mereka tidak harus memindai entri karena hanya menentukan direktori mana file yang sepotong dimulai. Pemindaian dapat menyebabkan positif palsu, sebagai format data lainnya memungkinkan untuk menjadi antara potongan.
Spesifikasi juga mendukung arsip rar menyebar di beberapa filesystem file. Awalnya ditujukan untuk penyimpanan file zip besar di beberapa disk 1,44 MB floppy disk, fitur ini sekarang digunakan untuk mengirim arsip zip di bagian melalui email, atau melalui mengangkut lain atau removable media.
FAT filesystem DOS memiliki resolusi timestamp dari hanya dua detik; zip file catatan meniru ini. Akibatnya, built-in timestamp resolusi file dalam sebuah arsip zip adalah hanya dua detik, meskipun bidang tambahan dapat digunakan untuk menyimpan cap waktu lebih akurat.
Pada bulan September 2007, PKZip merilis sebuah revisi dari spesifikasi zip yang berisi ketentuan untuk menyimpan nama file menggunakan UTF-8, akhirnya menambahkan kompatibilitas Unicode untuk zip.
Capture.PNG





VI.             Kombinasi dengan format lain.

Format file zip memungkinkan untuk memberi komentar yang berisi semua data pada akhir file setelah direktori pusat. Selain itu, karena direktori pusat menentukan offset setiap file dalam arsip yang berkaitan untuk menjalankan, ada kemungkinan dalam praktek untuk masuknya file pertama harus mulai padaoffset lain dari nol.

Hal ini memungkinkan data acak akan terjadi di file baik sebelum dan setelah data, untuk arsip masih dapat dibaca oleh aplikasi zip. Sebuah efek samping dari hal ini adalah mungkin untuk title sebuah file yang kedua bekerja sebagai arsip zip dan format lain, asalkan format lain mentolerir data yang acak di ujungnya, awal, atau tengah. Self-extracting arsip (SFX), dari bentuk didukung dengan WinZip dan DotNetZip, mengambil keuntungan dari ini. Exe file yang sesuai dengan spesifikasi AppNote.txt PKZip dan bisa dibaca oleh alat zip yang sesuai.

Properti dari format zip, dan dari format JAR yang merupakan varian dari zip, dapat dimanfaatkan untuk menyembunyikan kelompok Java yang berbahaya dalam file yang tampaknya tidak berbahaya, seperti gambar GIF yang di upload ke web. GIFAR dapat disebut juga sebagai sebuah serangan efektif terhadap aplikasi web seperti Facebook.

Tidak ada komentar:

Posting Komentar