File Format

Sekarang ayo kita membahas sedikit tentang format file. Apa itu format file? Jadi klo secara sederhana, format file itu ya sejenis .exe, .doc, .xls, dll, dsb, dst. Pernahkah kebayang, sebenarnya apa yang terjadi di dalam komputer ketika kita mengetik? Atau nggak usah jauh-jauh deh, pernahkah kebayang apa yang sebenarnya disimpan oleh komputer ketika kita menyimpan ketikan kita? Misalnya gini, ada sebuah file gambar, GUA.JPG, terus didobel klik. Tak lama akan keluar program penampil gambar ples gambarnya. Nah, sekarang coba file tadi dirubah namanya jadi GUA.DOC, terus coba diklik. Pasti hasilnya akan ada surat love dari planet mars muncul di komputermu. Atau file teksmu yang berformat .DOC dirubah ke .JPG, pasti yang muncul tulisan No preview available. Atau hasil ketikanmu di file .DOC terus kamu coba ganti jadi .TXT, terus kamu klik. Pasti akan keluar surat love dari mars lagi.

Nah, di sinilah intinya. Ketika kita mencoba menelanjangi apa isi file yang selama ini kita buat dengan nyamannya, ternyata berisi kode-kode yang cukup membuat mata kita serasa berada di surga. Bisa dibilang, welcome to machine languange~… Hwawawa… Gak jelas. ==’ Dan kalau kita coba-coba mengedit tulisan-tulisan tak terbaca ini, dan menyimpannya di text editor, pasti gak akan sukses dibuka untuk kedua kalinya walaupun format filenya dikembalikan lagi.

Itulah fungsinya identitas. Karena bagaimana-bagaimanapun juga, komputer membutuhkan sebuah identitas untuk mengenali dan membedakan setiap file yang ada, luar dalam. Dari sisi luar, kita cukup melihat ekstensinya, seperti akhiran nama file. Tapi itu belum cukup, karena bisa jadi ada orang yang sengaja merubah ekstensi file biar filenya gak bisa dibuka sembarangan. Sedangkan dari sisi dalam, identitas file umumnya bisa kita baca langsung dari baris-baris pertama header file. Nah, untuk membaca isi file secara murni dan asli tanpa konstaminasi tambahan dari atribut-atribut tidak perlu di sistem operasi kita, kita perlu editor khusus, bisa pakai hex editor (ini banyak beredar di internet, banyak pilihan, tinggal donlot).

Kenapa harus hex editor? Sebelum menjawab itu ada baiknya kita pahami apa itu hex. Hex adalah bilangan berbasis 16, dari 0 sampai f a.k.a. 0123456789abcdef. Artinya, dalam bilangan satuan, nilai tertingginya bukan 9, seperti di basis 10 biasa, tapi nilai tertingginya f, yang setara dengan nilai 15 di basis 10. Lebih jauh tentang hex, tanya aja ke tante wiki, ok. Selanjutnya, setiap karakter latin standar yang kita inputkan ke komputer kita menghabiskan memory sebesar 1 byte. Dan 1 byte itu sama dengan 8 bit. 1 bit itu cuma bisa diisi dua nilai, 0 atau 1. Nah, kan tadi satu karakter 1 byte = 8 bit, berarti kita bisa representasikan dia sebagai 2 angka dalam bilangan hex. 4bit-4bit. Karena 4 bit merepresentasikan 2^4, a.k.a. 16, sehingga basis hex sangat cocok digunakan dalam representasi kode. Dan untuk melihat kode-kode tadi dalam mode hex, kita butuh tool tambahan, yaitu hex editor, bukan notepad ataupun vi. Jadi, kalau kita mengetik sebuah karakter di text editor biasa, yang ditulis bukan karakter itu sendiri, tapi kode karakter itu.

Contoh,
Ketika menekan [spasi], kode yang disimpan di komputer adalah 20.
Ketika menekan [enter], kode yang disimpan di komputer adalah 0d 0a.
Ketika menekan [tab], kode yang disimpan di komputer adalah 09.
Ketika menekan [A], kode yang disimpan di komputer adalah 41.

Nah di sinilah ada saat-saat kita agak tidak bisa dibohongi. Misalnya ada seseorang menyembunyikan identitas filenya, dengan cara menghapus ekstensi filenya. Sehingga tidak ketahuan sebetulnya file itu formatnya apa. Nah, untuk melihat file itu bertipe apa, kita memang bisa menggunakan tool tambahan untuk mengecek langsung dia itu file bertipe apa. Tapi kan gak seru klo gak tahu cara kerjanya. 😛 Jadi, pertama buka hex editornya, terus buka file mencurigakan tadi. Nanti akan muncul baris-baris secara membujur dan melintang berisi kode-kode hex gak jelas… Nah, karena kebanyakan file dikenali dari headernya, jadi liat aja baris-baris awal kode-kode hex tadi. Dan identitas dari dalam file tadi pasti tertulis di sana.

Berikut adalah kode-kode hex dari the most popular file in the world. 😀
(*Perjanjian cara baca! Anggap kita punya matrix 2×2 dengan lebar dari 00 sampai 0f dan panjang tak terbatas atau kondisional.)

1. Microsoft Office 2007 (.DOCX, .XLSX, .PPTX, dll)
Di headernya mereka punya kode yang sama sepanjang alamat (00,00) sampai alamat (00,0d), yaitu 50 4b 03 04 14 00 06 00 08 00 00 00 21 00. Bedanya adalah dari alamat (00,0e) sampai (10,07).
.DOCX = dd fc 95 37 66 01 00 00 20 05 .. .. .. ..
.XLSX = c2 4f 28 c4 b3 01 00 00 94 08 .. .. .. ..
.PPTX = 63 1a a1 2c d4 03 00 00 e7 25 .. .. .. ..
dll

2. MP3 << File musik paling sering diputer di seluruh dunia deh keknya…
Inilah contoh kode-kode di baris awal mereka
ff fa 92 40 78 05 00 00 .. .. .. ..

Adakah kemungkinan kodenya lain? Oh, ada dong, Seperti ini misalnya.
ff fb b2 00 00 00 04 9f .. .. .. ..

Khusus format mp3 akan dibahas lebih dalam di tulisan berikutnya.

3. PDF
Ini malah sangat jelas sekali headernya. 4 baris awal kode hexnya adalah,
25 50 44 46

yang kalau diterjemahkan ke ASCII menjadi
%PDF

Cuman, dia diikuti oleh versi format PDF-nya, misal %PDF-1.4 atawa %PDF-1.6. Jadi bisa jadi 8 baris awal kode hexnya 25 50 44 46 2d 31 2e 34 atawa 25 50 44 46 2d 31 2e 36.

4. EXE
Setiap pengguna wendos pasti tahu file satu ini, karena setiap program induk yang dijalankan di windows a.k.a. bisa diklik, biasanya berakhiran .EXE. Inilah baris awal kode mereka.
4d 5a 90 00 03 00 .. .. .. ..

5. File-file terkompresi (.TGZ, .ZIP, .RAR, .7Z)
Kita mulai dari yang paling jadul ke yang paling baru.
.TGZ = 1f 8b 08 00 ad d2 42 46 .. .. .. ..
.ZIP = 50 4 03 04 14 00 00 00 .. .. .. ..
.RAR = 52 61 72 21 1a 07 00 cf .. .. .. .. a.k.a. Rar!….
.7Z = 37 7a bc af 27 1c 00 03 .. .. .. .. a.k.a. 7z……

6. File Gambar (.BMP, .JPG, .GIF, .PNG, .TIFF)
Untuk masalah format file gambar nanti Agi juga bahas lebih lanjut lagi.
.BMP = 42 4d ce ca .. .. .. ..
.JPG = ff d8 ff e0 .. .. .. ..
Sisanya buat PR. Hehehe… 😛

Dan masih banyak format file yang laen. Seperti A/V AVI, MPEG, MOV, atawa database, java, dll.

Sekarang setelah tahu identitas dalamnya, apa yang bisa kita manfaatkan selanjutnya? Ini dia serunya, karena bisa kita buat sebagai proteksi sederhana. Tahu format QuickTime yang baru di Apple? Di Apple.com kan biasanya ada trailer tuh, dan setiap kali diklik kita bisa putar trailer secara langsung. Tapi buat pengguna QuickTime yang bukan Pro version, trailernya gak bisa disimpen, harus diupgrade ceunah. Walaupun kita bisa dapatkan file yang berformat QTCH-nya dari cache QuickTime, kita nggak bisa langsung comot ganti ekstensi dari QTCH ke MOV atau AVI buat di-play. Soalnya, headernya diganti sama si Applenya. ==’ Capek deh… Jadi, kita harus ganti dulu baris-baris awal kode hex-nya ke salah satu format tertentu baru bisa kita play. Masalahnya~…, kita nggak tahu dia itu format filenya apa dan model header yang dipake yang model gimana. Di sinilah serunya, karena kita bisa trial and error buat ganti header satu-satu. Hwawawa… Ada cara cepetnya juga sih, tapi kata orang kadang-kadang cara cepetnya gak berhasil (cara cepetnya tanya aja google ato wiki). Tapi ada juga cara cepet yang pasti langsung berhasil. Upgrade aja QuickTimenya ke versi pro dengan membeli di Apple. Dan Apple memang cerdas. ==’

Yaudah deh, sampai di sini dulu tentang format filenya. Kapan-kapan disambung lagi. 😀

Advertisements