Blog >  SEO >  Lamanie captcha "dla bystrzakow" czesc 2 analiza

Lamanie captcha "dla bystrzakow" czesc 2 analiza

W pierwszej części kursu zostały przedstawione narzędzia dzięki którym złamiemy captcha skryptu PHPLD. Wiemy już czego uzyć aby osiągnąć swój cel. Pora na analizę naszego "przeciwnika" czyli captcha skryptu PHPLD. 

Tak się składa że jestem posiadaczem komercyjnej wersji tego skryptu który w najtańszej wersji 4.1 kosztuje 30$ więc jeżeli kogoś stać to na potrzeby nauki może sobie kupić najnowszą wersję, natomiast jeżeli ktoś nie chce wydawać pieniążków to do analizy może użyć dostępnej za darmo starej wersji 2 w której samo captcha prawie się nie zmieniło. W każdym razie sama analiza jest bardzo ważnym elementem i pominięcie jej sprawiłoby, że byłoby o wiele trudniej.

Niezależnie jaką wersję phpld posiadamy w folderze "libs->captcha->fonts" znajdują się nazwy fontów jakie są używane przy tworzeniu kodu obrazkowego. Captcha PHPLD używa następujących czcionek:

- bediz

- devgothic

- freeboot

- geo9

Dlaczego jest to ważne ? Dlatego, że Tesseract aby w miarę dobrze odczytywał tekst, musi zostać wytrenowany dla poszczególnych czcionek. Mniej czasu zajmie trening Tesseract'a dla określonych typów czcionek niż np. obróbka tekstu w niestandardowej czcionce tak aby przypominał bardziej standardową czcionkę, odczytywaną z łatwością przez Tesseract'a. 

Wiemy już, że captcha używa niestandardowych czcionek. Co jeszcze możemy zobić aby sobie ułatwić życie ? Zainstalować skrypt PHPLD i lekko zmodyfikować plik php captcha a dokładnie plik captcha.php znajdujący się w folderze głównym katalogu PHPLD. Do wytrenowania Tesseracta będziemy potrzebowali litery alfabetu i cyfry czyli znaki alfanumeryczne, ponieważ raczej nie używa się w kodach captcha innych znaków. Wystarczy więc zmodyfikować jedną linijkę kodu:

$captcha->phrase = $phrase;

zamienić na 

$captcha->phrase = 'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ123456789';

dzięki czemu nasz skrypt będzie zawsze generował wszystkie znaki alfanumeryczne.

Ponadto bawiąc się zmiennymi domyślnymi w tym pliku oraz pliku libs->captcha->captcha.class.php powinniśmy doprowadzić do sytuacji gdy captcha będzie generowana na białym tle.

Dlaczego właśnie tak ? Ponieważ mniej więcej tak będzie wyglądała captcha po obróbce przez ImageMagick. Uzyskamy czarne litery w różnych czcionkach na białym tle.

Gdy już uzyskamy pożądany efekt generujemy klika różnych captcha dla danej czcionki. Ograniczyć czcionki możemy najprościej poprzez zostawienie tylko jednej czcionki w folderze fonts, wygenerowanie kilku captcha, następnie wgranie innej czcionki itd.

Wygenerowane w ten sposób captcha łączymy w jakimś programie graficznym w 1 plik który powinien wyglądać mniej więcej w tym stylu:

set1.jpg

 

Rozdzielczość powinna być lepsza niż w powyższym przykładzie który został pomniejszony na potrzeby www. Dla każdej czcionki powinniśmy mieć co najmniej jeden w ten sposób wygenerowany plik. Można tą metodę udoskonalać, generować captcha z tłem następnie obrabiać przez ImageMagick tak aby jak najmocniej obrazek przypominał to co będziemy uzyskiwać automatem po usunięciu tła itd. Tym niemniej przedstawiłem to w ten sposób, dla celów szkoleniowych w zupełności wystarcza. Podstawową i najważniejszą rzeczą jaką należy wiedzieć jest to aby po analizie captcha potrafić wygenerować zestaw plików dla treningu Tesseracta, ponieważ zadowalające wyniki z tym programem będziemy w stanie uzyskać jedynie po wytrenowaniu go dla określonych czcionek. Między bajki można włożyć opowieści o tym, że wszystko zależy od wstępnej obróbki captcha. Żywym przykładem tego może być Scrapeboard gdzie twórcy zlekceważyli możliwość treningu OCR, stawiając na samą obróbkę wstępną obrazu.

W następnej części pokażę jak wytrenować Tesseract.

c.d.n.

 

Comments

There are no comments

Post a comment