in Web Security

Menjebol Captcha dengan OCR

courtesy of e-ignite.co.uk

courtesy of e-ignite.co.uk

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

courtesy of ziddu.com

courtesy of 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:

capcay4

capcay3capcay2

capcay1

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:
capcaytest11

Dengan operasi threshold, gambar tersebut akan diconvert menjadi:

capcaytest2

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:

$ gocr captchatest.jpg
______r0_ __
_ _ '__,__ _ ___,;
__'_  ____
_   _ _ __ _
?n0_ __ __ 0_,;
 _  ___   _t_

Namun setelah diproses dengan threshold, maka hasilnya adalah:

$ 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.

Write a Comment

Comment

35 Comments

  1. Salut dengan mas rizki, saya baru tahu kalau ziddu.com bisa di jebol dengan teknik sederhana dan software free lagi.
    Terima kasih mas rizki atas artikelnya yang mencerahkan.terus berkarya

  2. aku juga pernah kpikiran model captcha sperti itu pasti bisa di jebol.. karna noise yang dihasilkan ga terlalu rumit.. dan juga dari karakter ke karakter lainnya linear,tanpa ada perubahan posisi dan bentuk karakter.. tp masih concept aja.. blum di floorkan..:D
    thx mas rizki.. bagus artikelnya..

  3. Artikelnya keren mas. Padahal aku dah nyari-nyari ke ujung dunia tentang decaptcha. PWNtcha dah terbukti mecahin banyak kode captcha, cuman gak ngerti cara akses ke subversionnya. Ajarin dong… Pake acara download gak (memori terbatas soalnya :-s)

    Btw, kalo mo bikin script breaking captcha apa perlu tahu nama pembuat captchanya? Trus captcha yang textnya rada mirip tapi background color beda, apa itu datang dari source yang beda?

    Trus, cara mengaplikasiin scriptnya gimana mas? Buat artikel lengkapnya dongg…

    Btw, hasil googling, ini script buat mecahin kode captcha di megaupload:
    http://userscripts.org/scripts/review/38736

  4. MANTAB…!! ternyata ada yg OCR opensource kemarin sempet bongkar pwntcha tp karena dibuat dari C ya jadi agak2 semerawut otak 😀

  5. Wah kalo banyak orang “pinter” kayak maz rizki bisa ribet juga ya?! Tau cara caranya menjebol captcha tapi ga tau/ga bisa ngasi pencerahan bagaimana caranya pake captcha yang aman, supaya maz rizki sendiri ga bisa menjebol. Salut buat maz rizki yg udah capek2 bikin postingan yg materinya tentang merusak situs orang lain.
    Memang merusak itu lebih mudah dan cepat, dibandingkan membuat ide ide yang bermanfaat bagi semua umat.

    • Saya kira artikel ini bermanfaat…
      Seseorang gk akan tahu kesalahannya kalo gk ada orang lain yang menegurnya. Mungkin aja pembuat capthca ziddu.com tidak memikirkan hal tersebut, tapi orang lain dapat memikirkannya.
      Thank’s buat rizki yg menulis artikel ini dan rizki” yg lain… jadi tambahan ilmu dan wawasan buat kami

    • Oon Lo, orang bikin artikel buat ngingetin, di sangka buat ngerusak, kalo smua yang belajar disini dipake buat ngerusak, mungkin gkn ada nama y situs2 besar kaya go0gly.com, Fasebug.com, dh gua haCk twuh sites,
      kalo lo bilang ne salah, mana artikel yang lo anggap benar?!

  6. boleh kursus gak nih, hehehe. nice post master. saya suka sekali jika masih monoton dan jelas, tidak memusingkan otak. trima kasih, salam security.

    • metode ini mengandalkan teknik OCR yang sama seperti ketika scanner mengubah gambar menjadi teks. kelemahannya bila gambarnya tidak jelas hurufnya, tidak akan terbaca dengan sempurna

  7. keren… sejauh ini biasanya spammer mengakali captcha dengan membayar orang-orang untuk melakukan spamming, namun ternyata ada juga teknologi nya untuk menembus captcha hanya dengan komputer…

Webmentions

  • Captcha Salah Kaprah di Republika.co.id dan InfoGue.com « Sahirul Techno September 13, 2015

    […] terlalu bersih, mesin bisa membaca dengan sempurna. Silakan baca artikel saya tentang bagaimana menjebol catpcha dengan OCR (optical character […]

  • Captcha Salah Kaprah di Republika.co.id dan InfoGue.com | Web Security | IlmuHacking.com September 13, 2015

    […] terlalu bersih, mesin bisa membaca dengan sempurna. Silakan baca artikel saya tentang bagaimana menjebol catpcha dengan OCR (optical character […]

  • Injecting Code via Http Header | Web Security | IlmuHacking.com September 13, 2015

    […] Menjebol Captcha dengan OCR […]