Captchas auslesen via OCR Software

Autor: Christian Ahmer, erstellt: 27.11.2010, zuletzt geändert: 16.09.2014
Kategorien: Web, Linux

Im Internet ist es ja seit vielen vielen Jahren ein echtes Problem mit Formularen in Webanwendungen und Webseiten.
Bots lesen die Captchas automatisiert aus und man ist gezwungen, andere Wege zu gehen, teilweise Fragen mit passenden Antworten dem Besucher zu präsentieren oder auch extensiv Javascript basierte Lösungen zu verwenden, damit die meisten Bots einfach ausgeschlossen werden können.

Schön und gut, aber wie funktioniert so ein automatisches Auslesen einer Zahlen / Buchstaben Kombination überhaupt? Unter Linux / Ubuntu ist es ganz leicht:

Zunächst einmal speichert man sich einmal ein Bildchen heraus, welches man geknackt haben möchte. Ich nenne es hier einfach einmal captcha.png. Dieses Captcha ist ein buntes Bildchen mit zahlen und Buchstaben, welche der normale Anwender entziffern muss, wenn er das Formular absenden möchte.

Um das Bild auszulesen, muss man sich eine Software installieren, das frei verfügbare tesseract tut da einen sehr guten Job beim auslesen von Captchas.
Unter Ubuntu kann man es einfach so installieren:

sudo apt-get install tesseract-ocr

Folgende Schritte müssen nun nur noch gemacht werden:
1) Das Bild in ein Graustufen TIFF wandeln (etwa via GIMP oder automatisiert via convert aus dem ImageMagick Paket).
2) Tesseract auf das Bild loslassen:

tessseract captcha.tif loesung.txt

In loesung.txt steht dann das Wort. Simpel, aber klappt sehr oft ohne nennenswerte Probleme und automatisieren lässt sich sowas auch mehr als trivial.

Bots, die sich solcher Tricks bedienen, kann man nur mit sehr verzerrten (und daher auch für den Menschen schwerer lösbaren) Buchstaben / Zahlenkombinationen, Javascript oder anderen Tricks eins auswischen.

Ich verwende auf meiner Seite hier für die Kommentarfunktion übrigens eine Mischung aus Javascript und Figlets,
Mehr über Figlets hier: http://www.figlet.org/