Captcha ja miten se ohitetaan

Captcha.. ah tuo helvetin ärsyttävä pieni kuva joka estää monien wannabe blackhättien toimet. Captchasta mennään oikeasti läpi todella helposti. Tai ainakin suurimmista osista. Sitten on jotain näitä todella hankalia kuten MySpacen captcha joka ei ainoastaan vaihdu olikohan 25 sekunnin välein vaan tekee twirlin random asetuksilla captchalle lennossa mikä tarkoittaa sitä, että kirjaimet vääntyvät aina hieman eri tavalla riippuen missä päin kuvaa ne ovat.

Tänään puhutaankin näistä hieman helpommista captchoista ja siitä miten niistä mennään läpi todella helposti ja aikaa koodaukseen menee korkeintaan pari tuntia. Tässä muuten taas nostaa päätänsä se piru, että on todella vaikea tehdä elantonsa blackhättinä jos ei osaa koodata. Joutuu katsos nojaamaan täysin muiden tekemiin työkaluihin ja yllätys yllätys, toimivia työkaluja ei paljoa ole liikkeellä.

Tähän käy erittäin hyvin Magick++ tai GD PHP:lla mutta totta kai C++ on HUOMATTAVASTI nopeampi kuin PHP. Lisäksi GD vaatii huomattavasti enemmän kikkailua ja ellei satu olemaan PHP5:sta imagefilter() funktiolla, joudut käymään kuvat pikseli pikseliltä läpi jokaisessa vaiheessa joka tietysti hidastaa hommaa todella paljon.

Eikohän aloiteta PHPBB 3:lla…

Kaikki alkaa siitä, että captcha napataan sivuilta. Tällä kertaa saimme vastaamme tälläisen kaverin:
phpbb3.png

PHPBB3:ssa uutena tuli tuo neliökuvio fontteihin, mutta ei siitä vielä sen enempää. Ensimmäisenä heikkoutena tässä captchassa on heti solidi background väri. Se pois ja sen jälkeen kuva vedetään mustavalkoiseksi ja kontrastia korotetaan että erot saadaan paremmin näkyviin. Meille jää käteen tälläinen kuva:
phpbb3bw1.png

Nyt meillä on ongelmana nuo poikittaiset viivat. Niiden poistaminen onnistuu siltikin helposti. Tehdään funktio johon asetetaan tietty määrä pikseleitä kuten esimerkiksi 5 pikseliä ja jos väri on eri kuin pohjaväri (musta), tarkistetaan vielä että +-1 viereistä pikseliä on pohjan värisiä. Jos nämä täyttyvät, 5 pikseliä täytetään pohjavärillä. Sen jälkeen meille jää muutama pikseli sinne tai tänne kun ei jaksa viilata täydellistä mutta GOCR ei huomioi niitä jos pistää hieman dust settingiä. Onhan skanneissakin aina jotain paskaa välillä seassa.

Tämän jälkeen meillä on musta kuva jossa tunnistettavat kirjaimet on koottu neliöistä. Tuo ei oikein toimi hyvin GOCR:n kanssa joten tehdäänpä nopea funktio joka täyttää neliöt. Tämä on todella kömpelö 10 minuutin härväys koska PHPBB3 on tällä hetkellä ainoa captcha minkä tiedän missä noita neliöitä käytetään joten pahoittelut ettei jälki ole täydellistä. Se ei kuitenkaan menoa haittaa, koska GOCR koulutetaan kuitenkin erikseen näitä fontteja varten.

Kun raot on täytetty ja viivat poistettu, jää jäljelle tälläistä:

Tämän jälkeen kirjaimet täytyy erotella toisistaan ja kääntää "suoraan" jotta GOCR:n koulutus olisi helpompaa ja tehokkaampaa. Tämä captcha on siitä todella helppo ettei kirjaimet mene toistensa päälle. Se laskee oikeinmenemisprosenttia TODELLA paljon koska GOCR:n kouluttaminen vie aikaa ja eri kirjaimien yhdistelmiä on todella paljon. Tässä tapauksessa voidaan tehdä yksinkertainen funktio joka mittaa pystyviivoja ja jos viiva sisältää muuta kuin pohjaväriä, otetaan kohta ylös ja mitataan montako pikseliä kestää että tavataan toinen pystyviiva joka on kokonaan pelkkää pohjaväriä, siinä meillä on nyt yksi kirjain.

Tämän jälkeen käydään reunoja läpi ja koska suurimmassa osassa kirjaimista on suoria reunoja, voidaan niiden avulla kääntää fontti oikein päin. Tässä pitää ottaa hieman kulmia huomioon ja muuta pientä härväystä - tämä on minulle yksi vaikeimmista osioista koko hommassa ja tässä minulla on vielä paljon opettelemista, varsinkin koodin optimoinnissa.

Kun kirjaimet on eroteltu ja meillä on kattava setti eri kirjaimia, koulutetaan GOCR ja tämän prosessin jälkeen PHPBB3 captcha murtuu alle 2 sekunnissa noin 92% oikeinmenoprosentilla. Suurin osa virheistä tulee itse asiassa ihan siitä että en ole jaksanut panostaa tuohon kirjaimen rotaatioon niin se tekee välillä virheitä. Lisäksi muutama kirjain teettää aina vaikeuksia missä ei ole selviä suoria reunoja. Kuten esimerkiksi O, o, 0, w, W jne.

Mutta siinä se nyt lyhyesti ja ytimekkäästi. Kuten huomaatte, captchat on tehty rikottaviksi ja älkää aliarvioiko sitä mitä pelkällä PHP:llä voi saada aikaan.

Jos pidit artikkelista, ole ystävällinen ja auta miestä mäessä: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Wists
  • feedmelinks
  • Furl
  • Netscape
  • NewsVine
  • Reddit
  • Simpy
  • Spurl
  • StumbleUpon
  • Technorati
  • YahooMyWeb

21 Responses to “Captcha ja miten se ohitetaan”

  1. Tulipas muuten mieleeni tuosta captchasta mikä tässä kommentoinnissa on käytössä, että eipä ole järin vaikea tuotakaan murtaa. Siinä on yksi dead giveaway.. kaikki kirjaimet ovat omalla värillään selvästi viivojen seassa. Eli ei muuta kuin mittaa vaan, että missä sama väri jatkuu +-1 pikseliä joka suuntaan ja muut värjätään mustaksi. Sitten vaan pieni funktio joka värjää jokaisen pikselin valkoiseksi joka ei ole musta ja lopputulos näyttääkin tältä (kuvanmuokkaus eli en ole tehnyt tätä koodilla):

    Varmaan arvaatte jo loput..

  2. Jees.. Poika jaksaa pelleillä :D Kerrotko jossain vaiheessa hiukan että miten tätä asiaa voidaan käytännössä soveltaa.. Mitkä ovat siis ne hyödyt mitä tällä saavutetaan?

  3. Tätä voidaan soveltaa kaikessa missä halutaan automatisoida joku tietty tapahtuma, mutta siihen on lyöty captcha estämään spämmereiden touhut.

    Eli nyt jos suoralta kädeltä mietitään yksinkertaista ja täysin whitehat esimerkkiä niin joissakin mestoissa loginit on suojattu captchalla. Kun sulla on se 40+n paikkaa mistä pitäisi statsit käydä tsekkaamassa aina vähän väliä niin statistiikka skreipperin rakentaminen tulee ajankohtaiseksi.

    Greyhattia jos mietitään niin esim. automaattinen directory submitteri tiettyyn directory softaan onnistuu.

    Blackhattiä jos mietitään niin kaikki spämmäys ja automaatio alkaa nykyään edellyttämään captcha breakkereita.

  4. Nojaa, vai että captchan joutuu ohittamaan. Kyllä comment kahunalla pärjää aika pitkälle, vai kuinka helvetin black hat oikein olet?

  5. Kysehän on siis ihan siitä miten oma aika hinnoitellaan. Minulla on (valitettavasti) niin paljon tekemistä nykyään, että kaikki mikä voidaan automatisoida, automatisoidaan. Joten ihan aikuisten oikeasti jos sinulla on aikaa comment kahunalla surfailla ja manuaalisesti noita laitella niin nauti ajastasi. Kunhan on enemmän projekteja alla niin tuohon ei vaan ole aikaa. Toki tietysti voisi outsorsata mutta mitäpä sitä turhaa kun omat työkalut tekee työtä 24/7 ilmaiseksi.

    Lisäksi kun sukellat BH maailmaan niin tulet huomaamaan, että kaikki mikä on helppoa ja yleisesti kaikkien saatavilla, ne on raiskattu jo kauan aikaa sitten kannattamattomiksi. Esimerkiksi guestbook spämmi ei ole enää kovin fiksua ellei sitä sitten tee todella suuressa mittakaavassa. Viime testini käsitti noin 2 miljoona guestbookkia (ilman captchaa yleisillä työkaluilla mitä on jaossa) ja tuon jälkeen noiden linkkien arvo oli noin sama kuin 100 high trust, high auktoriteetti blogin do-follow kommenttilinkkien.

  6. Ihanaa kun teillä on niin kova tarve todistella kuinka kiireisiä olette. Mulla itselläni ei ole koskaan kovinkaan kiire. Kysyisinkin seuraavaa: onko se jonka täytyy tehdä paljon menestyneempi, kuin se joka pärjää tekemällä töitä hieman vähemmän?

  7. Kysyä aina saa. Se nyt on vaan köyhien harhaluulo, että rahaa voi tehdä tekemättä töitä. Jossain vaiheessa ne työt on tehtävä kuitenkin. Jos Kodja on tyytyväinen nykyisiin tuloihinsa niin ei siinä mitään, onneksi olkoon vaan. Minä kuitenkin pyrin koko ajan parantamaan tulosta ja tulemaan tehokkaammaksi ja tämä valitettavasti tuntuu vievän aikaa :(

    Btw, ei mulla kyllä ole mitään sitä vastaan, että olisi vähemmän kiirettä. Kerkeisi vähän heilua riippumatossa ja katselemaan taivasta. Sitä nyt vaan tuppaa olemaan ihan liikaa projekteja kerralla tulessa.

  8. Jos sulla on jatkuvasti kova kiire, niin todennäköisesti teet jotain väärin, näin on viisaammat joskus sanoneet.

    Fakta kuitenkin, että tämmöinen automatisoitu linkkispämmi on menettämässä arvoaan, varsinkin jos sitä koitetaan soveltaa suomeen. Ulkomaalaiset paskalinkit kun eivät ole kovinkaan arvokkaita nykyisin, oikeastaan päinvastoin.

  9. Sama artikkeli taisi muuten olla hetken aikaa sitten bluehatseossa.

  10. Ettei olisi ollut phpbb2 captcha eikä phpbb3 captcha bluehätissä? Otetaan nyt se silmä käteen siellä ennen kuin floodaillaan.

    Linkkispämmi kommenttiin että keep telling yourself that ;)

  11. Sääli vain, että linkkispämmi menee laittomaksi, "Sähköisen viestinnän häirintä" -nimikkeen alla. ;)

    Tai no, valalle en menisi ja IANAL mutta ainakin Suomi24 spämmäyksessä oli esillä, että sitä tutkittaisiin sellaisena. Siinä tosin spämmäys oli kohdistettu tiettyyn verkkopalveluun, eli siitä tilanne vähän eri.

  12. Niin siis meinaat että sulla on joku tsäänssi itse asiassa saada osaava spämmeri kiinni? Spämmäykset menee IP kloakattujen redirect domainien tai piggyback domainien kautta. Jos pystyt spooffaamaan itsesi Googlen botin IP:n kanssa sisään ja väistämään muut tunnistukset (esim. hiiren kursori tms.) niin sitten pääset vielä selvittämään sivuston oikean omistajan fake whoissistä :D

  13. Muistin väärin :)

    Dark SEO Programmingissa se olikin…

    http://www.darkseoprogramming.com/

  14. Pitäisiköhän sun Juha oikeasti nyt vetää se pää perseestä ja opetella lukemaan? Katsoppas huviksesi päivämääriä. Tämä postaus on julkaistu 2008-04-15 ja DarkSEO:n noin KUUKAUSI MYÖHEMMIN 2008-05-12.

  15. Vaikeaa :) Yleensä sun jutut on ripattu jostain ebookista suoraan joten trackkaaminen on vaikeampaa, tämän muistelen nähneeni jossain ennen postaustasi :)

    Joten huvittavinta sun postauksia lukiessa on sen päätteleminen, että mistä ebookista ne on ripattu :)

  16. Eli siis toisin sanoen et tiedä itsekkään mistä puhut? :D Voi jeesus Juha sun yritykset on säälittäviä.

    btw, kuulisin muuten mielelläni jotain faktaa noiden väitteittes taakse että jutut on ripattu ebookeista. Kerro nyt ihmeessä mikä juttu on ripattu ja mistä niin ehkä sua ei pidettäis ihan niin yleisesti pellenä joka kiertää muiden blogeja ja kommentoi epätoivoisesti yrittäen "provota" ja dissaa muita bloggaajia hatuista vedetyillä jutuilla.

  17. Miksiköhän muuten poistit mun kommentin missä sanoin, että oot vaan matkinut ton sun artikkelin, sen jälkeen kun Elin saitti hakkeroitiin ja se julisti kaikki captchat rikottaviksi.

    Ihan kiva kun kerrot näitä itsetäänselvyyksiä myös suomeksi, mutta lähteet kannattaisi mainita.

  18. Miksiköhän mulla ei ole mitään hajua mistä sä puhut? Miksi ihmeessä mä poistaisin sun kommentteja? Liekkö nyt jollakin on hieman turhan kova käsitys omien kommenttiensa arvosta :D

    Eli siis jos Eli julisti että kaikki captchat on tehty rikottaviksi niin tämä artikkeli on itsestäänselvyys ja matkittu Eliltä? Mitä vittua sä oikeasti horiset?

    Sinuna muuten olisin hyvin hiljaa itsestäänselvyyksien ja kopioitujen artikkelien tekemisestä kun katsoo sun uusinta tuotostas mahdottoman hienosta Markovista ja webarchiven käytöstä. Elin desert scraping anyone? :D Varsinkin kun et selvästikkään edes asioista mitään ymmärrä kun tuota "sun" juttuas lukee. Kuka vittu käyttää enää jotain default markovia tai yacgia? Tervetuloa 2005 vuoteen.

    Oikeasti, ole nyt vittu hiljaa tai kirjoittamatta mitään jos sulla ei ole mitään fiksua sanottavaa tänne.

  19. Ja ihan muuten tiedoksi, että tämä artikkeli sai alkunsa siitä että lueskelin neuraaliverkoista ja niiden hyödyntämisestä captchan purussa. Joko Eli tai DarkSEO:n tyyppi sanoi että phpbb3:n captcha näyttää helpolle/mielenkiintoiselle noiden neliöistä tehtyjen kirjainten takia. Joten päätin ottaa haasteen vastaan ja kikkailla sen auki.

    Tämä artikkeli on muuten varmaan 1kk vanhempi kuin milloin tämä on julkaistu. Tuli tuossa mieleen, että julkaisin tämän postauksen kahteen kertaan hieman eri tavalla kirjoitettuna koska vaihdoin serveriä ja siinä hävisi se alkuperäinen jostain syystä ja jäljelle jäi vain draft jossa oli muistaakseni pari ekaa kappaletta kirjoitettu. Joten ehkäpä Olli on kommentoinut sitä ensimmäistä versiota? Tosin olet saanut olla aika nopea koska se oli linjoilla ainoastaan parisen tuntia ennen kuin se hävisi.

  20. Jeah, no en mä tosiaan voi siitä valittaa, että käännetään settiä suomeksi, koska itehän just kerron blogissani noita perusjuttuja, mitä ei suomeksi löydy mistään.

    Mutta kommenttien poistaminen vaan saa homman näyttämään siltä, ettet halua ihmisten pääsevän ns. alkuperäisen kirjoittajan luokse. Toisaalta kaikkihan loppujen lopuksi kopioivat tai vähintään kopioivat ja yhdistelevät vanhoja ajatuksia.

    Jos kommentit on tosiaan kadonneet serverin vaihdoksessa, niin eipä siinä mitään.

    Rakkauta ja rauhaa vaan kaikille

  21. Joo no mä nyt pyydän anteeksi tuota mun kiehahdusta. Oli paska päivä puolin ja toisin, mutta rehellisesti sanottuna en kyllä ole ikinä poistanut mitään muuta kuin spämmikommentteja. Se nyt on vaan niin kovin typerää poistella kommentteja.

    Mä luulin että mä olen mun "vaikuttajat" tuonut aika selvästä esille mutta ilmeisesti en sitten. Tosiaan, kuten sanottu niin Elin postauksesta mä alunperin sain idean murtaa tuo PHPBB3:n captcha mutta ei kukaan mun tietääkseni ollut kirjoittanut aiemmin tälläistä "näin murrat phpbb3 captchan" postausta.

    Mä kuitenkin kirjoitan juuri sen takia aika harvoin, että kun harvemmin tulee eteen juttuja mitä oikeasti on järkeä kertoa ja ne ei ole sitä 100+n blogissa jo läpikäytyä shittiä.

Leave a Reply




Captcha
Enter the letters you see above.