PDA

Orijinalini görmek için tıklayınız : Captcha ve Captcha'nın OCR ile Analizi



kazanova21641
01.Haziran.2015, 14:16
Captcha Nedir?


Captcha Completely Automated Public Turing test to tell Computers and Humans Apart kelimelerinin kısaltmasıdır. Web tabanlı uygulamalarında uygulamayı çalıştıranın bir insan mı yoksa bir bot mu olduğunu tespit etmek için kullanılan bir güvenlik uygulamasıdır. Bundan dolayı her Captcha testinin çözülmesi yapay zekâ adına atılmış önemli bir adımdır.


Captcha Mantığı


Sistemin çalışması kısaca şöyledir. Sunucu rastgele bir resim oluşturur, istemci tarafındaki kişiden bu resimdeki yazıyı okuyup, ilgili alana girmesi istenir. Buradaki basit mantık o resimde sadece insan tarafından okunabilecek, bir program tarafından okunması zor olan bir kelime oluşturmaktır. OCR (optik karakter okuyucu) programları, düzgün bir formda yazılmış yazıyı bir resmin içinden okuyabilirler. Bu sebeple sunucu tarafından üretilen resmin içindeki yazının bir insan tarafından okunabilecek fakat OCR programları tarafından okunamayacak kadar zor, karışık, anlaşılmaz, gürültülü ve bozulmuş olması gerekir. Gerçekten de üretilen karakterlerin bazen okunamaması veya çok gelişmiş OCR programları tarafından bazen resimlerin okunabiliyor olması gibi zayıflıklarına rağmen, DYPM (Did You Pass Math, “3 artı sekiz kaç eder?” gibi sorular yönelterek otomatik yazılımları engelleyen.) veya resimler arasından duygusal bazı kriterlerle seçim yapılmasını isteyen v.b. gibi alternatif yöntemlerden şu an için daha kullanışlı olmaya devam etmektedir.


Captcha oluşturma adımları
. Bitmap nesnesi oluşturulur
. Bu bitmap nesnesinin Font, Stil vs gibi özelikleri setlenir.
. Bir random nesnesi oluşturulup bu random nesnesinin aralık değerlerini oluşturulur.
. Random değişkeni oluşturulur.
. Bu random string’i session’a eklenir karşılaştırma için, böylece kullanıcının doğru
giriş yapıp yapmadığını öğrenmiş oluruz.
. En sonunda isteğe göre gürültü eklenir ve istenilirse karakter belli bir acı ile
döndürülür OCR yazılımlarına önlem olarak.


Captcha Çeşitleri


Mat Captcha :"10 + 15' in sonucu nedir gir buraya " ya da "yirmi bölü on kaç eder" gibi kontrollere dayanıyor.Tabii ki gene de klasik botların hepsini engelleyecektir ancak siteye özel botlar bunu basitçe geçebilir.


Asirra :Microsoft Research ekibi Asirra adında Captcha benzeri bir sistem yapmış. Klasik Captcha sistemlerinin aksine mantık üzerine kurulmuş sistemde kullanıcı açılan resimlerden kedi resimlerini seçiliyor. Resimleri petfinder.com'dan alan sistem her yükleyişte farklı resimler yüklüyor böylece sistemi bir resim veritabanı oluşturarak kırma yöntemini imkansız hale getiriyor. Yalnız bu yöntemde de kedi tanıma bot programı yapmak mümkün.


KittenAuth :KittenAuth Captcha’nın yetersiz kaldığı yerde devreye giriyor. Captcha ya karşı yapılan yazılımlar artık resimleri okuyabiliyor ve buna karşın Captcha resimleri zorlaştırıyor yamultuyor silikleştiriyor ve harfleri birbirine geçiriyor işe bu noktada aslında sadece bilgisayarın okumasını engellemiyor kullanıcıcında okumasını engelliyor böylece captcha’nın amacından sapma oluyor. Bazı resimler o kadar zor ve anlaşılmaz bir hale geliyor ki kullanıcı okumakta zorluk çekiyor. İşte bu noktada KittenAuth sistemi devreye giriyor. KittenAuth da Captcha nın aksine kullanıcıya resimde görünen yazı veya harfleri yazdırmıyor. Birkaç tane resim çıkarttırıp içlerinden doğru resmin tıklanmasını istiyor.


Captcha Kırılması




Captcha'yı kırmada önemli olan şey mesajda ne yazdığını okumak değildir, bunu insanların en az yüzde ++++eni zaten yapabilir. Asıl zor ve önemli olan insanların bu işlemi nasıl yaptığını bilgisayara öğretmektir. Captcha'yı kırmaya niyetlenen programcı, bu problemi fazlar şeklinde değerlendirmelidir. Ona uygun algoritma tasarlamalıdır. Bu senaryoya göre, ilk adım resmi siyah beyaz tonlara çevirmek olabilir. Yani uygulama, resimdeki tüm renkleri ortadan kaldırmalı. Böylece Captcha'nın koyduğu engellerden biri olan renklerden kurtulmuş olunur. Sonra, algoritmanın diğer adımı bilgisayara ortaya çıkan şekildeki dokuları tespit etmesini emretmek olacaktır. Yani program her harfi gerçek harflerle bir-bir kıyaslayıp her harfin en çok hangi harfe benzediğini bulmak olacaktır.Bu resimler php, asp, cgi, perl gibi programlama dilleri ile dinamik oluşturuluyor ve içinde bulunan metin, oturum verileri (session data) ile yine kullanıcıya özgü olmak kaydı ile sunucuda tutuluyor. Düzgün yapılandırılmış bir sunucudan bu resimleri oluşturan kodları veya oturum bilgilerini alamayacağınız düşünülürse geriye sadece resim işleme (image processing-yapay zeka teknikleri) yöntemleri kalıyor. İşte bu resim işleme metotlarını da engelleyebilmek için resimlerin arka planlarında yazıların okunmasını zorlaştıracak, renk dağılımları ya da karakter olmayan simgeler bulunur. Resim işleme kodu eğer bu yanıltıcı simgeleri de temizleyebilecek şekilde geliştirilmişse ki bu durum yapay sinir ağları konusuna girer, yani ancak bir yapay zeka deneme yanılma (ya da öğrenme) metodu ile bunları ayıklar, bu sistem bu metodu aşabilir.