December 13, 2011

Digital File Signatures: Magic Numbers


Haizz.. lembab btul courier service nie. Kang aku dah nak shutdown baru la hegeh-hegeh gegar pintu. So, ada 100plus + Nescafe + Asap.. Meh aku nak citer sket pasal file.

Files/data dalam computer disimpan dalam bentuk binary. '1' atau '0'. Time skolah dulu memang dah ada blaja benda nie.. 1 + 1 = 10, 10 + 01 = 11, etc.. every tempat '1' atau '0' = bit. Computer akan groupkan 8-bit jadi 1 byte. Untuk Hexadecimal (16-bit) memerlukan 2-byte (8-bit + 8-bit).

Dulu-dulu, time awal-awal dulu. Setiap programmer mesti tau benda nie untuk read/baca atau save/simpan file. Nie adalah benda yang paling asas. Coding read/save file nie dibuat dalam C/C++, Pascal, PHP, ASP, VB dan almost semua languages.

Setiap jenis file/file type boleh dikenal pasti dengan mudah melalui extension. Contohnya macam 'Awek01.jpg', 'exAwek.png' atau 'Surat.doc'. '.jpg', '.png' '.doc' adalah extension file tersebut. Berbeza dengan extension '.txt', file-file tersebut tidak dapat dilihat dengan mata kasar without decoding. Content file tersebut disimpan dan dibaca oleh computer dalam bentuk 'Hex' atau 'Hexadecimal'.

Computer tak kisah sangat pasal extension yang korang taruk. Computer akan buka file tu dan baca header atau permulaan file tu. Header nie dipanggil 'File Signature' atau 'Magic Number'. Handphone pun macam tu jugak. Dia akan check file signature. File signature ini biasanya mengandungi format file, compression, file structure dan lain-lain.

Ada banyak tools untuk bukak/edit file dalam bentuk 'Hex'. Contohnya.. wxHexEditor http://www.wxhexeditor.org (Free, OpenSource, Linux, Windows, Mac) - download jer la sesuka hati!

wxHexEditor in action. (in Windows XP)

Benda nie pun boleh digunakan untuk modified game/program, hacking, inject virus, tukar highscore kat game, taruk cheat, etc. apa-apa pun boleh (kecuali memasak, basuh keta, usha awek yg jaga tol belah utara, etc.)

So, pada permulaan file yg dapat dilihat kat nilai Hex adalah 'File Signature' atau 'Magic Number'.

Contohnya:

  • jpg = FF D8 FF E0 ?? ?? 4A 46 49 46 00 
    (dan seterusnya adalah data image, compression, etc.)
  • png = 89 50 4E 47 0D 0A 1A 0A 
    (dan seterusnya adalah data image, etc.)
  • ico = 00 00 01 00 
    (file icon, dan seterusnya adalah data image, etc.)
  • pdf = 25 50 44 46 
    (dan seterusnya adalah content pdf, etc.)

Sama la jugak dengan bermacam-macam jenis file-file yang lain yang tak menggunakan text format (yang tak boleh dibaca/disimpan tanpa decoding/encoding)

Ia juga digunakan dengan meluas time upload gambar pastu automatic resize, automatic taruk watermark, embed-code, etc. Tak kira la korang pakai Linux ke, Windows ke, Mac ke, nie sumer kira standard aa..

Adios!

No comments: