Captcha me if you can

Published on Sunday, 13 January 2013 in Python ; tagged with python, captcha, ocr, pytesser, tesseract ; text version

How to read captchas

I've always wondering how can the bots on the internet crack captchas. How can a algorithm read an image.
Then I heard about OCRs (Optical Character Recognition) which are developped in order to do such tasks.

The captcha below will be our example:

Captcha test

Homemade algorithm

First I tried to follow the article decoding captcha's and to develop a homemade algorithm.

After creating a kind of database of the letters, the result was clearly bad. I mean I had 0 cracked captcha...
The main fact is that I assumed the text was horizontal but it's not always the case.
Moreover, the space between the letters is really thin sometimes.
So when the algorithm was trying to split the letters, some of them were gathered by 4.

Continue reading


Hook avec LD_PRELOAD

Published on Sunday, 06 January 2013 in Trick ; tagged with ld preload, unix, hook, bypass, trick ; text version

Comment hook une fonction standarde avec LD_PRELOAD

Futex m'a parlé il y a peu d'un trick unix qui m'était inconnu jusqu'alors : poser un hook avec LD_PRELOAD. Pour faire simple, LD_PRELOAD permet de charger une lib avec celles standardes. Cette méthode peut être utile si vous voulez modifier le comportement d'un programme de manière simple mais efficace. Pour cela, il suffit de créer une fausse lib contenant votre fonction maison ayant le même nom que celle que vous voulez hook et renseigner le chemin d'accès vers celle-ci dans la variable d'environnement LD_PRELOAD.

La méthode est applicable seulement si le programme cible a été compiler pour pouvoir utiliser des lib partagées. C'est généralement le cas puisque les fonctions standardes de C comme printf, strcmp, etc. sont contenues dans ce type de lib. Donc si la cible les utilise alors vous pouvez appliquer ce trick. Pour en être certain il suffit d'utiliser le tool file et de regarder si c'est le cas.

$ file example
example: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=0x24a0e0e2aa5e5603263aa9f6e89d839dc1eb4090, not stripped

Continue reading



contactdepier.re About me License WTFPL2