Nomor Ajaib Kode Rahasia yang Disembunyikan Pemrogram di PC Anda
Sejak orang pertama menulis 5318008 pada kalkulator, kutu buku telah menyembunyikan nomor rahasia di dalam PC Anda, dan menggunakannya untuk menegosiasikan jabat tangan rahasia antara aplikasi dan file. Hari ini kita akan melihat beberapa contoh yang lebih menghibur.
Apa itu Angka Ajaib?
Sebagian besar bahasa pemrograman menggunakan tipe integer 32-bit untuk mewakili tipe data tertentu di belakang layar - secara internal nomor tersebut disimpan dalam RAM atau digunakan oleh CPU sebagai 32 dan nol, tetapi dalam kode sumber itu akan dituliskan dalam format desimal biasa, atau sebagai format heksadesimal, yang menggunakan angka 0 hingga 9 dan huruf A hingga F.
Ketika sistem operasi atau aplikasi ingin menentukan jenis file, itu dapat melihat ke awal file untuk penanda khusus yang menandakan jenis file. Misalnya, file PDF mungkin dimulai dengan nilai hex 0x255044462D312E33, yang sama dengan "% PDF-1.3" dalam format ASCII, atau file ZIP dimulai dengan 0x504B, yang sama dengan "PK", yang turun dari utilitas PKZip asli. Dengan melihat "tanda tangan" ini, jenis file dapat dengan mudah diidentifikasi bahkan tanpa metadata lainnya.
File Java Class yang dikompilasi dimulai dengan CAFEBABE"File" utilitas Linux dapat digunakan dari terminal untuk menentukan jenis file - pada kenyataannya, ia membaca angka ajaib dari file yang disebut "magic."
Ketika suatu aplikasi ingin memanggil suatu fungsi, ia dapat meneruskan nilai ke fungsi itu menggunakan tipe standar seperti integer, yang dapat diekspresikan dalam kode sumber dalam format heksadesimal. Ini terutama berlaku untuk konstanta, yang merupakan pengidentifikasi yang didefinisikan dengan nama yang dapat dibaca manusia seperti AUTOSAVE_INTERVAL, tetapi mereka memetakan ke nilai integer (atau tipe lainnya) yang sebenarnya. Jadi alih-alih seorang programmer mengetik nilai seperti 60 setiap kali mereka memanggil fungsi dalam kode sumber, mereka bisa menggunakan konstanta AUTOSAVE_INTERVAL untuk keterbacaan yang lebih baik. (Konstanta biasanya mudah dikenali karena ditulis dalam huruf kapital semua).
Semua contoh ini dapat termasuk dalam istilah Angka Ajaib, karena mereka mungkin memerlukan angka heksadesimal khusus agar fungsi atau tipe file berfungsi dengan baik ... jika nilainya tidak benar, angka itu tidak akan berfungsi. Dan ketika seorang programmer ingin bersenang-senang, mereka mungkin mendefinisikan nilai-nilai ini menggunakan angka heksadesimal yang mengeja sesuatu dalam bahasa Inggris, atau dikenal sebagai hexspeak.
Bersenang-senang dengan Angka Ajaib: Beberapa Contoh Penting
Setiap AppleScript diakhiri dengan FADEDEADJika Anda melihat sekilas kode sumber Linux, Anda akan melihat bahwa pemanggilan sistem _reboot () di Linux membutuhkan variabel "ajaib" yang harus dilewati yang sama dengan angka 0xfee1dead heksadesimal. Jika sesuatu mencoba memanggil fungsi itu tanpa terlebih dahulu memasukkan nilai ajaib itu, itu hanya akan mengembalikan kesalahan.
GUID (pengidentifikasi unik global) untuk partisi boot BIOS dalam skema partisi GPT adalah 21686148-6449-6E6F-744E-656564454649, yang membentuk string ASCII "Hah! IdontNeedEFI", sebuah kiasan terhadap fakta bahwa GPT biasanya akan digunakan di komputer yang menggantikan BIOS dengan UEFI, tetapi tidak harus seperti itu.
Microsoft terkenal menyembunyikan 0x0B00B135 dalam kode sumber pendukung mesin virtual Hyper-V mereka yang dikirimkan ke Linux, kemudian mereka mengubah nilainya menjadi 0xB16B00B5, dan akhirnya mereka mengubahnya menjadi desimal sebelum dihapus dari kode sumber sama sekali..
Contoh lebih menyenangkan termasuk:
- 0xbaaaaaad - digunakan oleh iOS crash logging untuk mengindikasikan bahwa log adalah stackshot dari keseluruhan sistem.
- 0xbad22222 - digunakan oleh iOS crash logging untuk menunjukkan bahwa aplikasi VoIP telah terbunuh oleh iOS karena melakukan kesalahan.
- 0x8badf00d - (Makan Makanan Buruk) yang digunakan oleh crash log iOS untuk menunjukkan bahwa aplikasi terlalu lama untuk melakukan sesuatu dan terbunuh oleh timeout pengawas.
- 0xdeadfa11 - (Dead Fall) yang digunakan oleh iOS crash logging ketika aplikasi dihentikan secara paksa oleh pengguna.
- 0xDEADD00D - digunakan oleh Android untuk mengindikasikan abort VM.
- 0xDEAD10CC (Kunci Mati) yang digunakan oleh iOS crash logging ketika aplikasi mengunci sumber daya di latar belakang.
- 0xBAADF00D (Makanan Buruk) yang digunakan oleh fungsi LocalAlloc di Windows untuk debugging.
- 0xCAFED00D (Cafe dude) digunakan oleh kompresi pack200 Java.
- 0xCAFEBABE (Cafe babe) digunakan oleh Java sebagai pengidentifikasi untuk file kelas yang dikompilasi
- 0x0D15EA5E (Penyakit) yang digunakan oleh Nintendo pada Gamecube dan Wii untuk mengindikasikan boot normal terjadi.
- 0x1BADB002 (1 boot buruk) digunakan oleh spesifikasi multiboot sebagai angka ajaib
- 0xDEADDEAD - digunakan oleh Windows untuk mengindikasikan crash debug yang dimulai secara manual, atau dikenal sebagai Blue Screen of Death.
Ini bukan satu-satunya di luar sana, tentu saja, tetapi hanya daftar pendek contoh yang tampak menyenangkan. Tahu lagi? Beritahu kami di komentar.
Melihat Contoh untuk Diri Sendiri
Anda dapat melihat lebih banyak contoh dengan membuka hex editor dan kemudian membuka sejumlah jenis file. Ada banyak editor hex freeware yang tersedia untuk Windows, OS X, atau Linux - pastikan Anda berhati-hati saat menginstal freeware agar tidak terinfeksi crapware atau spyware..
Sebagai contoh tambahan, gambar pemulihan untuk ponsel Android seperti ClockworkMod mulai dengan "ANDROID!" Jika dibaca dalam format ASCII.
catatan: jangan mengubah apa pun saat Anda melihat-lihat. Editor hex dapat memecahkan banyak hal!