Senin, 25 Maret 2013

Membuat Harddisk Terbaca di Mac

Baru-baru ini saya dimintai tolong oleh teman saya untuk membuat harddisknya terbaca dan dapat ditulis baik di Mac maupun Windows. Karena harddisk yang diformat di Mac enggak bisa dibaca di windows, sedangkan harddisk yang diformat oleh Windows enggak bisa ditulis oleh Mac. Sebenarnya saya langsung suspect pasti filesystem yang digunakan beda. Jadi saya nyari-nyari filesystem yang digunakan oleh kedua OS ini..

Jadi ternyata MacOS itu menggunakan filesystem yang namanya Hierarchial File System (HFS) sedangkan Windows saat ini menggunakan filesystem NTFS. Secara implementasi detilnya, kalau HFS menggunakan B - tree sedangkan NTFS menggunakan B+ - tree.

Karena keduanya menggunakan filesystem yang berbeda, bagaimana kita dapat membuat harddisk tersebut dapat dibaca oleh kedua OS tersebut?

Setelah saya cari-cari ternyata saya menemukan bahwa format filesystem lama yang dipakai windows yaitu FAT32 dapat dibaca di Mac. Dengan fakta ini, maka kalau mau membuat harddisk kita dapat dibaca di kedua filesystem tersebut, formatlah dengan FAT32. Namun FAT32 ini memiliki masalah klasik yaitu semakin sering dipakai untuk transaksi keluar masuk file, kecepatan loading dari sebuah file di sistem tersebut akan lebih lama karena terjadi fragmentasi. Jadi harus sering-sering di defragment supaya tidak lambat :)

Minggu, 24 Maret 2013

Styling is Important

Seringkali programmer-programmer pada sebuah tim tidak memiliki standar yang baik dalam menuliskan kode. Sehingga dampaknya bagi orang yang akan mengembangkan program yang kita buat merasa kebingungan dengan makna dari program kita, bagaimana standar penulisan nama fungsi atau variabel hingga masalah bagaimana flow dari program yang kita buat.

Hal ini dirasa cukup penting, karena akan membentuk sebuah kultur tim yang baik. Apalagi kalau sudah taraf perusahaan. Nah, ternyata saya menemukan bahwa di Google ada SOP dalam pembuatan sebuah program Google Style Guide. Menarik sekali bahwa di Google bahkan hal-hal kecil saja diatur dengan rapi. Tak heran Google adalah salah satu perusahaan terbesar di IT saat ini.

Nah, bagi kita. Mulailah membuat kode sesuai standar yang baik agar orang lain mudah untuk membacanya #notetomyself. Sebuah kultur yang baik pasti dapat meningkatkan produktivitas dari tim tersebut.

Minggu, 03 Maret 2013

Menyembunyikan dan Mengenkripsi Pesan melalui Media Video

Pada semester 6 ini, saya mendapatkan tugas yang sangat menarik, yaitu menyembunyikan dan mengenkripsi pesan melalui media video. Tugas besar mata kuliah kriptografi ini merupakan salah satu tugas yang menarik bagi saya. Bagaimana di dalam sebuah video kita bisa menyembunyikan sebuah pesan dalam bentuk tulisan (.txt, .html, .pdf, dsb),  musik (.mp3, .wav, dsb), video (.mp4, .avi, dsb), dan bentuk penyimpanan elektronik lainnya. Dalam kasus ini saya akan menggunakan file .avi sebagai media penyimpanan.

Bagaimana kita dapat menyembuyikan sebuah pesan di dalam sebuah video format .avi ?

Sebuah berkas AVI (Audio Video Interleave) terdiri atas beberapa kanal yang masing-masing menyimpan informasi yang berbeda. Kanal-kanal utama yang terdapat pada AVI adalah kanal citra dan kanal suara. Kanal citra pada dasarnya merupakan sebuah deretan citra bitmap yang masing-masing mewakili satu buah frame pada video. Gambar yang tampak bergerak dihasilkan dari pergantian frame tersebut.

Setiap frame video AVI merupakan citra dengan format bitmap. Sehingga bila saya ingin menyembunyikan pesan pada video AVI, saya harus bisa menyimpan pesan tersebut pada bitmap-bitmap penyusunnya. Menyembunyikan pesan pada sebuah file berformat bitmap dapat menggunakan metode modifikasi LSB (Least Significant Bit). Dengan metode ini, pesan dipecah menjadi potongan byte, setiap byte tersebut dipecah dalam potongan bit. Bit-bit inilah yang disembunyikan pada pixel-pixel sebuah file bitmap.

Misalkan kita ingin menyembunyikan 1 byte (8 bit) : 10010101. Sebuah pixel bitmap memiliki 3 properti angka, yaitu Red, Green dan Blue. Sehingga untuk menyembunyikan 1 byte tersebut kita membutuhkan 3 pixel dari bitmap, sebagai contoh:

R: 10001010 10001010 00101001
G: 11100001 10011110 00001010
B: 10100011 11100001 11110101

diubah menjadi berikut (angka yang tebal adalah pesan yang disembunyikan)

R: 10001011   10001011   00101000
G: 11100000   10011110   00001011
B: 10100010   11100001   11110101


Ekstraksinya lebih mudah dilakukan karena kita tingal mengambil tiap digit dari pixel-pixel tersebut untuk diproses kembali menjadi file digital awal.

Dengan cara tersebut, kita dapat menyembunyikan pesan digital apapun selama medianya memiliki size sekitar 10 lebih besar. Tentunya dengan membagi byte dari pesan digital tersebut pada LSB media yang kita gunakan.

Selain menyembunyikan pesan, kita juga mengenkripsi pesan digital tersebut menggunakan algoritma kriptografi klasik Vigenere Cipher. Sehingga data yang kita kirimkan lebih sulit untuk dipecahkan. Detil dari algoritma Vigenere Cipher dapat dilihat pada link berikut ini: Vigenere Cipher. Aplikasi yang saya buat untuk mengenkripsi data menggunakan Vigenere cipher dapat dilihat pada link berikut VigenereCipherApplet

Pengerjaan tugas ini menggunakan framework .NET dan bahasa C#. Untuk  membantu melakukan modifikasi file AVI, kita menggunakan library AVIReader. Hasil dari program yang dibuat adalah Stegosaurus