Banner 1

Redes Neuronales + OCR en Javascript = FAIL de megaupload


Uno de los posts más visitados de nuestro blog es el que escribió nuestro compañero Alejandro Ramos sobre el sistema de captchas utilizado por megaupload.com, servicio de descargas directas por excelencia junto con rapidshare.com. Alejandro desarrolló un script en bash mediante el cual era posible saltarse la protección mediante captcha para evitar la descarga masiva, y mediante bots, de ficheros hospedados allí.

Pues bien, al hilo del mismo tema, Shaun Friedle nos ha sorprendido con la publicación de un script para el add-on greasemonkey del navegador Mozilla Firefox ( y ahora también en Google Chrome...), que mediante unas "cuantas" líneas de código Javascript, incluyendo una red neuronal y una especie de sistema de OCR realizado para la ocasión, es capaz de resolver automáticamente los captchas, tan solo visitando la web de megaupload. Recordaros que greasemonkey, si dispone de este javascript instalado y activado, detectará cuando se visita la web, y automáticamente ejecutará dicho script.

Los pasos que realiza grosso modo son:
  1. Pasar la imagen del captcha a una escala de grises
  2. Separar cada uno de los tres carácteres en una matriz de píxeles individual, mediante su color, que recordemos, siempre es el mismo según la posición.
  3. Seguidamente, tras "limpiar" los pixeles de las matrices que no correspondan con los carácteres (mediante la función clean_noise del script), se procede a la detección de los lados de la forma (función find_edges del script), obteniendo así una matriz de 20x25 pixeles con un rectángulo en blanco y negro.
  4. Se extraen ciertos puntos estratégicos, que harán de receptores de la red neuronal(función check_receptors del script) y que serán los que sirvan de entrada para dicha red, definiendo así un conjunto de estados, pudiendo establecer si por ejemplo el valor del pixel en la posición con coordenadas XxY es un '1' o un '0'. Con ello, conseguimos aproximadamente unos 64 estados, más fácilmente computables que no una matriz de píxeles.
  5. Para adivinar la letra, se introduce en la red los 64 valores, junto con otros valores ya pre-computados (función create_net del script), y que podemos encontrar en el código fuente, en forma de constantes. En las comprobaciones, a cada letra se le otorgará una especie de puntuación, que no llega nunca al 100% pero que se aproxima bastante, obteniendo así los tres caracteres buscados de entre los ganadores.
No puedo decir la frase de "sencillo y para toda la familia", pero lo que si puedo decir es que es increible lo que es capaz de crearse mediante un simple navegador web, y lo que esto puede dar de si.

En la web del autor, se puede visitar una demo de como calcula, mostrando los receptores de cada letra, los captchas que muestra en la parte superior. Incluye la comparación tanto por redes neuronales como por comparación de píxeles. En la mayoría de los casos, el resultado mediante comparación de píxeles sería suficiente, pero tiene pinta de que mediante el método de redes neuronales, los resultados serán mucho más exactos.

[+] Script Megaupload auto-fill captcha

http://www.securitybydefault.com/2009/01/redes-neuronales-ocr-en-javascript-fail.html?widgetType=BlogArchive&widgetId=BlogArchive1&action=toggle&dir=open&toggle=YEARLY-1199142000000&toggleopen=MONTHLY-1230764400000

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay