Menjebol Captcha dengan OCR
Oleh
chmood
T.I Sniper |
Banyak orang menyangka asalkan situsnya dijaga captcha, maka spammer tidak akan bisa menembusnya. Padahal ini salah besar! Captcha memang menyulitkan, namun tidak sembarang captcha, bila captcha tidak dibuat dengan benar dan asal-asalan, maka spammer bisa dengan mudah menembusnya.
Captcha Basics
Captcha adalah akronim dari Completely Automated Public Turing test to tell Computers and Humans Apart, yaitu sebuah test/ujian yang “fully automated” untuk membedakan manusia dan komputer. Ujian captcha dibuat sedemikian rupa sehingga teknologi komputer saat ini belum bisa mengerjakan dengan benar, namun manusia bisa dengan mudah menyelesaikan dengan sempurna.
Captcha ini dibuat oleh komputer secara otomatis, namun komputer sendiri sebagai pembuat soal malah tidak bisa mengerjakannya… Aneh!
Umumnya captha berbentuk gambar yang di dalamnya terdapat kode. Kode ini bisa dengan mudah dibaca manusia, namun komputer akan kesulitan membaca kode dalam gambar itu. Dengan cara ini, hanya manusia yang bisa melanjutkan prosesnya, sedangkan komputer/robot akan gagal.
Bagi komputer, sebuah gambar hanyalah kumpulan kode-kode warna dari setiap pixelnya. Dibutuhkan proses yang cukup rumit untuk bisa mengenali objek pada gambar, apalagi untuk memahami arti sebuah gambar. Sedangkan bagi manusia hanya dalam hitungan seper sekian detik kode dalam gambar sudah terbaca.
Selain berbentuk gambar, captcha juga ada yang berbentuk suara. Secara prinsip sama saja dengan gambar, komputer perlu melakukan proses yang rumit untuk mengenali percakapan dalam file suara.
Optical Character Recognition (OCR)
OCR adalah teknologi untuk mengubah gambar menjadi teks. OCR biasanya dipakai untuk mengubah file gambar dari dokumen yang discan menjadi file teks untuk diolah secara digital.
Tidak semua gambar bisa dibaca dengan sempurna oleh OCR. Sama seperti manusia, bila kita membaca buku yang masih baru dan cetakan yang baik, maka mudah bagi kita untuk membacanya. Namun bila buku sudah tua, tintanya sudah pudar dan banyak noda, maka sulit untuk kita membacanya dengan sempurna. Begitu juga dengan captcha, bila captcha mengandung banyak distorsi, kemiringan, variasi ukuran font dan noise, maka OCR akan kesulitan membacanya.
Program OCR yang saya pakai dalam menembus captcha adalah GNU OCR. Seperti program OCR lainnya, GOCR hanya dapat membaca captcha dengan baik bila gambarnya tidak banyak gangguan. Untuk itu biasanya sebelum gambar dilempar ke GOCR, sebelumnya diolah dulu untuk meminimalkan gangguan agar hasil pembacaan GOCR bisa maksimal.
Dalam artikel ini saya akan jelaskan bagaimana captcha bisa ditembus dengan GOCR di sistem operasi Linux. Sebagai contoh saya akan gunakan captcha yang ada di situs sharing Ziddu.com.
Captcha Ziddu.com
Penggunaan captcha pada ziddu sangat vital karena situs ini membayar pemilik file setiap kali ada orang yang mendownload file tersebut. Bisa dibayangkan bila tanpa captcha, maka orang dengan mudah bisa membuat script untuk melakukan download secara otomatis.
Namun dari FAQ yang saya baca, ziddu hanya membayar berdasarkan ip address yang unique dalam satu hari. Jadi bilapun ada script yang bisa melakukan download berulang kali, tetap tidak dianggap selama berasal dari ip address yang sama.
Contoh gambar captcha ziddu antara lain:
Setelah saya cari di google file CaptchaSecurityImages.php ternyata adalah library open source untuk men-generate captcha, namanya PHP Captcha Security Image . Library ini cukup populer dan banyak dipakai di situs luar maupun situs lokal. Situs iklan gratis banyak juga yang pakai captcha ini, silakan cek sendiri.
Kelemahan Captcha Ziddu
Beberapa kelemahan captcha yang dipakai ziddu adalah:
Objek dan Background Terpisah: Sepintas terlihat captcha ziddu cukup rumit karena banyak gangguan berupa coretan dan bintik-bintik. Namun sebenarnya gangguan itu tidak ada artinya karena terpisah jelas dengan warna yang berbeda cukup kontras. Jadi antara objek dengan background terpisah dengan baik, dengan sedikit pengolahan akan didapatkan gambar yang bersih dari gangguan.
Tidak adan rotasi, semua karakter horisontal posisinya, tidak ada yang miring ke atas atau ke bawah.
Font yang monoton dan konsisten.
Warna yang konsiten.
Persiapan Gambar dengan Utility Convert
Convert adalah utility command line dari ImageMagick yang bisa melakukan berbagai jurus pengolahan gambar, dari yang sederhana hingga yang rumit. Untuk memecahkan captcha ziddu kita tidak perlu jurus tingkat tinggi, cukup operasi sederhana saja. Kita pakai operasi threshold, operasi ini bekerjanya sangat sederhana. Kita hanya perlu menetapkan suatu nilai batas, kemudian semua pixel yang memiliki kode warna di bawah atau di atas nilai itu akan diubah menjadi warna putih atau hitam.
Dari contoh-contoh captcha yang ada terlihat bahwa warna yang paling gelap adalah warna kode, kemudian diikuti dengan warna noise dan yang paling terang adalah warna background. Dengan demikian kita bisa tetapkan warna teks sebagai nilai threshold (batas), kemudian semua pixel yang memiliki warna lebih terang dari itu akan diubah menjadi putih. Dengan cara ini maka yang tertinggal hanyalah warna teks, warna background dan warna noise akan lenyap karena warnanya jadi putih.
Langkah pertama adalah kita harus mendownload gambar captcha yang asli, di URL:
http://www.ziddu.com/CaptchaSecurityImages.php?width=100&height=38&characters=5
Contoh gambar captcha yang asli adalah:
Dengan operasi threshold, gambar tersebut akan diconvert menjadi:
Terlihat jelas gambar kedua lebih mudah dibaca oleh GOCR karena noise yang ada di gambar asli sudah dihilangkan. Perintah untuk melakukan operasi threshold di atas adalah:
$ convert captchatest.jpg -white-threshold 20000 captchatest2.jpg
Opsi white-threshold 20000, itu artinya semua pixel yang nilai warnanya lebih tinggi (lebih terang) dari itu, akan diubah menjadi putih. Hasilnya terlihat bahwa pada gambar ke-2 terlihat noise dan background menjadi putih bersih karena warna background dan noise lebih tinggi dari 20000.
Breaking Captcha dengan GOCR
Kini setelah gambar dibersihkan dari gangguan, telah siap untuk dibaca dengan GOCR. Mari kita lihat kemampuan GOCR membaca captcha yang asli, bila GOCR mencoba membaca gambar yang asli, hasilnya adalah karakter kacau seperti di bawah ini:
1 2 3 4 5 6 7
$ gocr captchatest.jpg ______r0_ __ _ _ '__,__ _ ___
,; __'_ ____ _ _ _ __ _ ?n0_ __ __ 0_,; _ ___ _t_
Namun setelah diproses dengan threshold, maka hasilnya adalah:
1 2
$ gocr captchatest2.jpg qc32ts
Wow, ternyata hasilnya sempurna. Setelah captcha terbaca selanjutnya terserah anda. Anda bisa melakukan register di ziddu.com dengan script. Ini sangat berbahaya, sebab seseorang bisa mendapatkan komisi dari setiap orang yang register di ziddu bila mendaftar melalui affiliate link. Bayangkan apa yang terjadi bila seseorang membuat robot yang melakukan registrasi dari link affiliate sebanyak 1 juta kali, padahal setiap orang yang mendaftar dari affiliate mendapat $0,1 artinya dia akan mendapat $100,000 atau 1 miliar.
Kesimpulan
Anda telah melihat sendiri betapa mudahnya captcha dijebol dengan software gratisan. Jangan pernah mengira bahwa hanya dengan memasang captcha asal-asalan spammer tidak akan bisa menembus. Pilihlah captcha yang baik dan sulit untuk ditembus.
Banyak situs-situs besar dalam dan luar negeri seperti detik.com, liputan6.com, ziddu.com, feedburner.com yang masih menggunakan captcha yang mudah ditembus. Di majalah underground info saya menulis tentang breaking captcha detik.com untuk mengakali hasil polling. Bahkan captcha detik.com jauh lebih mudah ditembus dibanding captcha ziddu.
Category
Komentar