Home > Web Security > Menjebol Captcha dengan OCR

Menjebol Captcha dengan OCR

January 12th, 2009 By Rizki Wicaksono

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:

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.

Share and Enjoy:
  • Slashdot
  • StumbleUpon
  • del.icio.us
  • Digg
  • Facebook
  • MySpace
  • Technorati
  • Google Bookmarks
  • Reddit
  • Live
  • YahooMyWeb
  • Mixx

Baca juga:

  1. Captcha Salah Kaprah di Republika.co.id dan InfoGue.com
  2. Membuat Web dengan Otentikasi berbasis Token

 Berlangganan Artikel Terbaru

Mau pinter hacking? Jangan ketinggalan artikel-artikel menarik seputar hacking lainnya. Dapatkan artikel IlmuHacking.com terbaru di inbox anda.

 

Web Security , ,

  1. January 13th, 2009 at 11:34 | #1

    wah jadi teringat belajar jaringan saraf tiruan. Menarik sekali!

  2. January 15th, 2009 at 16:18 | #2

    Sampe saat ini design recaptcha spt nya masih yang paling baik utk captcha

  3. January 23rd, 2009 at 14:43 | #3

    mas, Artikel Nya Menarik sekali .. Boleh saya tulis ulang .. :)

  4. May 2nd, 2009 at 15:09 | #4

    Bagus banget mas artikelnya..
    Namun apa mungkin membuat script anti-captcha dengan php ya???
    mohon pencerahannya….

    • May 7th, 2009 at 00:46 | #5

      bisa banget,dalam artikel ini memang saya jelaskan cara breaking captcha secara manual, namun dengan script breaking captcha bisa dilakukan dengan lebih cepat.

  5. May 7th, 2009 at 16:21 | #6

    Bisa dijelaskan code untuk memecahkan kode captcha tersebut dengan php mas?
    atau sudah ada contoh scriptnya mungkin??

  6. May 20th, 2009 at 10:25 | #7

    Waah ternyata situs sebesar ziddu pun menggunakan sistem pengamanan yang tidak terlalu aman…

  7. June 1st, 2009 at 11:18 | #8

    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

  8. badrun
    June 28th, 2009 at 22:40 | #9

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

  9. July 24th, 2009 at 03:36 | #10

    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

  10. Decode
    July 27th, 2009 at 16:26 | #11

    Tolong dong mas Rizki dibahas untuk memecahkan Captcha dengan menggunakan script php..

    thanks..

  11. August 11th, 2009 at 07:06 | #12

    Menari sekali artikelnya, copy boleh yah…?buat baca-baca…
    Lalu bisa dijelasin gak CAPTCHA yang aman tuh kriterianya kaya gimana?

  12. gina
    August 31st, 2009 at 01:18 | #13

    Mas, boleh tahu referensi2 yang dipakai? Makasih

  13. vie
    November 26th, 2009 at 14:02 | #14

    wah,thanks mas..jd nambah pengetahuan nih soal captcha..

  14. rio
    December 11th, 2009 at 08:28 | #15

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

  15. January 31st, 2010 at 15:21 | #16

    wahh…
    mantab neh…
    ada program buat crack captcha yang pakai kalkulasi gak?
    misalnya 4 + 1

  1. January 21st, 2009 at 22:41 | #1
  2. May 19th, 2009 at 11:30 | #2
  3. February 17th, 2010 at 13:03 | #3