Captcha Kodu Çözmek ? (Captcha Doğrulamasını Aşmak)

Merhabalar,

Bu yazıda basit bir Captcha kodunu çözeceğiz.

 

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) Carnegie Mellon School of Computer Science tarafından geliştirilen bir projedir. Projenin amacı bilgisayar ile insanların davranışlarının ayırt edilmesidir ve daha çok bu ayrımı yapmanın en zor olduğu web ortamında kullanılmaktadır.

 

Burada yapacağımız işlem image’ın pixel koordinatlarını karşılaştırmak.

Öncelikle toplamamız gereken sayıları, bir metod ile yerlerinden kırparak çıkarıyorum, benim çözmem gereken Captcha’da neyse ki bu rakamların yerleri konumları sabit.

 

birinci ve ikinci sayıyı yerlerinden kırpıyorum.

 

Benim çözmem gereken doğrulama resimlerindeki sayılar 1’den 8’a kadar oluşuyordu, bu sebepten 1’den 8’e kadar tüm sayıları kırparak elimize alıyorum.

 

Kırptığım her resim 15 * 18 pixel çözünürlüğünde oluyor.

Sonrasında ise png olan bu image’da yatay ve dikey olarak pixelin AlphaBlend olan veya AlphaBlend olmayan pixellerini belirliyorum ve bu bilgiyi List<int[]> içerisinde saklıyorum.

AlphaBlend olan pixel için 0 , AlphaBlend  olmayan pixel için 1 değeri veriyorum.

Örenğin 1 rakamının List<int[]> dizisi bu şekilde oluyor.

 

1’den 8 ‘e kadar tüm sayılar için bu tespiti yapıyoruz. Bu kısım biraz amelelik ancak, sürekli Captcha kodu girmek daha fazla amelelik 😉 robotlara robot olmadığımı kanıtlamak insanın zoruna gidiyor bazen…

 

Bu tespitleri yaptıktan sonra , geriye kalan yatay ve dikey olarak for döngüsü ile, elde ettiğimiz List<int[]> ile , Captcha kodundan kırptığımız image’ın pixellerini kıyaslamak.

Her rakamın pixel sayısı farklı olduğu için, 1,2 fark tolerans ile benzeştiğinden emin olmak.

 

önce kırptığımız birinci ımage’ı, daha sonra ikinci ımage’ı, kontrol ediyoruz.

 

 

burada bizim yardımımıza koşan Bitmap’ın GetPixel(x, y); izelliği,  GetPixel(x, y) geriye ilgil pixelin RGBA (Red,Green, Blue, AlphaBlend  ) değerlerini bize dönecektir.

 

 

ve bu şekilde GetCaptcha metodumuza ilgili png imeg’ın path’ini vererek kullanabiliyoruz.

 

Projenin tamamının c# kodları bu şekildedir.

 

 

 

yhackup

Site Kurucusu & Yöneticisi Yazılım Geliştiricisi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir