"Por supuesto el formulario de registro debe tener un control captcha, es decir, un obstáculo que solo es capaz de sortear un humano. Solo así puede estar un formulario protegido en Internet." "Es un pequeño programa en lenguaje PHP, orientado para su uso en páginas web, que permite adjuntar a un formulario una imagen aleatoria de un animal que cualquier humano conoce, y sin embargo un robot es incapaz de identificar." El código está disponible, listo para pwnear, y aquí hay un ejemplo: www.teoriza.com/captcha/example.php
Muy barato, sencillo e infalible.
Moraleja: Toda descripción de cualquier sistema de seguridad debe incluir un análisis de los posibles ataques.
Lo de entrenar un sistema con "trabajadores del tercer mundo"... normal, son humanos, ahí es vulnerable cualquier captcha.
Quizá no he conseguido difuminar perfectamente cada imagen, tengo poca experiencia con GD, pero en teoría si consigo mejorarlo lo suficiente cada imagen presentada será única y muy distinta de la misma foto en otra ocasión.
Un saludo y gracias por las sugerencias!
Como dice #6 parece hacer una difuminación a la imagen con lo que cambiaria la "secuencia de bits" como comentas (Yo pensé por ej en la posibilidad del md5 de la imagen para identificarla), pero con esa pequeña difuminación aleatoria ya cambia el hash.
Lo que no se es si a pesar de esa difuminación no habría partes del formato de la imagen que "coincidirian" lo suficiente como para poder "romper" el sistema ?
Voy a esforzarme en difuminar más a fondo las imagenes y entonces creo que problema resuelto.
Alguna vulnerabilidad más? :P
Veamosss..... ayudadme: el gallifante, era un gallo con piernas de elefante, o un elefante con pico de gallo? xD
xD
#15 Los acentos son indiferentes, osea que deberia haber funcionado, lo habia probado. Quiza hay algun pequeño bug ahi, lo resuelvo enseguida.
p.d.:no me hagáis caso, deliro.
www.labnol.org/internet/favorites/cats-inside-rapidshare-captcha-image/
#23 Yo tengo la teoría de que Rapidshare intenta deshacerse de descargas gratuitas, porque cada vez lo hacen más difícil. Primero eran letras, luego letras con gatos y perros y luego esas letras deformes en las que los gatos se ven muy parecidos a los perros.
P.D: Con la orca, no me acepta "ballena asesina", independientemente de la ortografía.
Ah, ¿y qué tal añadiendo, además, algo de texto en cada imagen?
Además, el sistema tiene el bonus añadido de que sirve para vetar la entrada a los hoygans, con animales como "horca", "girafa", "helefante", "leon", u "ornitorinko". :)
#29 También muy interesante tu aportación. Estudiaré eso de Dither, para implementarlo.
Copio de: en.wikipedia.org/wiki/Captcha#Image-recognition_CAPTCHAs
Causing minor changes to images each time they appear will not prevent a computer from recognizing a repeated image as there are robust image comparator functions (e.g., image hashes, color histograms) that are insensitive to many simple image distortions. Warping an image sufficiently to fool a computer will likely also be troublesome to a human.
Por cierto, tambien acepta Girafa, error que nunca cometeria un bot, pero si un humano hoygan :D
#34 Gracias! Estoy al tanto de que la modoficacion actual no es 100% efectiva, pero poco a poco conseguiré modificar hasta el histograma de colores :)
Por ejemplo, en el supuesto captcha de Microsoft, bastaría con contestar siempre GATO o PERRO para obtener un elevado porcentaje de éxito.
Al final vamos a acabar cerrando todas las webs con acceso con DNI y fotocopia del libro de familia.
Aparte de mis elucubraciones festivas, la idea mola, al menos es mas original que el sistema de la suma.
#43 Las imágenes salen aleatoriamente, he hecho varias decenas de animales, pero faltan muchos más! podría llegarse a la centena fácilmente. además se podría extender a objetos: mesa, puerta, silla, tejado, televisión.... tiende a infinito.
#44 En un mundo feliz debería ocurrir así, pero explica a Africa la importancia de controlar sus redes, por ejemplo...
yo no tengo ni idea de como va esto, pero es increíble, rapidshare hace lo de números con gatitos, pero esto esta mejor! :)
Si pones 2 fotos tampoco es muy dificil, tardaria un poco mas pero poco mas
Y de 3 en adelante aunque para el bot sea mas dificil para el usuario tambien es una tocada de huevos.. si para pasarlo tengo que escribir: leon aguila perro gato, cuando podria escribir AB54AZ...
Ahora está asi para que sea mas intuitivo el test. En ningun caso seran necesarias dos o mas imagenes.
Gracias por lo de Wolf, no se porque google no me lo traducía y no me acordaba que era Wolf! lo añado ya.
Por cierto, en ingles se dice turtle, tortoise y terrapin, y su uso depende de si es en USA o GB.
Pero la verdad es que no me gustaría que se implementara en todos los sitios, sobre todo los que no tengan el idioma en Español, porque aunque sé algunos nombres de animales en Inglés, no me sé todos, y tendría que estar todo el día con el Google Translator.
Lo que comenta #43 y #50 eso ya tiene solución desde hace mucho tiempo, simplemente, si el bot o la persona falla, por ejemplo, 3 veces pues se le hace un baneo temporal a esa IP durante un tiempo x, pasado ese tiempo puede volver a reintentarlo. Esto se usa en la mayoría de sistemas de seguridad para evitar ataques de fuerza bruta o por diccionario.
(De la voz min, para llamar al gato).
1. m. coloq. gato (‖ mamífero félido).
Tener un amplio vocabulario te convierte en bot. :(
Jo, felino tampoco me lo admite.
Igual que colega buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2a
Si a eso llamas tener un vocabulario amplio...
Quiza el consumo de trafico si es ligeramente superior a imagenes GIF alfanuméricas y al ser un poco mas grandes, pero lo he conseguido optimizar hasta un resultado de 4kb de peso por cada imagen. Infimo tamaño.
De todas formas, el sistema de respuestas correctas puede ser modificado y ampliado a medida. Hasta el infinito y mas alla! Aunque siempre se necesitaría conocer bastante a fondo el idioma en cuestión.
* Las imágenes, a pesar de ser distintas cada vez que aparecen, son muy parecidas unas a otras. Esto lo debilitaría frente a algún ataque que utilice información de los colores de la imágen. Sería una forma poco efectiva de hacerlo pero podria combinarse con otras.
* Se puede buscar la distancia mínima entre dos imágenes, pero no comparando la secuencia de bits del JPG generado sino la imágen una vez es descomprimida. Tal cual es el algoritmo actual, esta forma garantizaría un éxito casi seguro. Dos imágenes del mismo animal son extremadamente parecidas, así que habiendo almacenado una en algúna bas... » ver todo el comentario
Si, ya se, ya se, no me lo expliqueis. Solo queria indicar que el sistema no es perfecto ;)
El idioma es el Español de España, según la RAE.
Seguro que ahí no se colaba un bot
www.google.es/search?q=define%3Achanchoa
La pregunta es... en Sudamérica llaman al cerdo "chancho" de forma habitual? antes que cerdo? mmmm
De todas formas quien quiera implementar localismos puede hacerlo.
#78 En sudamèrica, no sé. En centroamérica, sí.
depressedprogrammer.wordpress.com/2008/04/20/worst-captcha-ever/
Asi que me gustaría recordar en este caso que no se olviden de implementarle sistemas de accesibilidad.
GONZO, echa un vistazo a tratamiento de imágenes por ordenador para hacerlo mas fuerte (cambiando un color de fondo, usando múltiples representaciones de un mismo animal...)
TODOS los captchas basados en imagenes fijas (con ligeras variaciones) son bastante fáciles de saltar con dedicarle un poco de tiempo, es por eso que el mas extendido es el basado en reconocer caracteres de texto.
Sobre lo segundo que dices, porque va a ser mas facil ofuscar graficamente un codigo alfanumerico que una fotografia? creo que es al contrario. Obviamente en mi ejemplo no lo consigo, pero estoy en ello. Solo tengo que conseguir el mismo nivel de ofuscacion que el habitual en captchas alfanumericos.
Mi plan es crear polígonos aleatorios transparentes que aleatoricen la imagen de manera mucho mas avanzada y efectiva que la actual.
Como siempre, la seguridad reñida con la facilidad de uso.
En un futuro, se podrá romper este captcha. La investigación en visión por computador ya está consiguiendo buenos resultados en distinguir "categorías" de fotos, y en particular de animales. El caso más clásico es perros vs. gatos. Aún es un tema muy de investigación, pero quien quiera, y tenga paciencia y ganas de leer cosas técnicas puede poner "generic visual categorization" en Google www.google.com/search?hl=ca1
Antes de comprender imágenes comprenderán los actuales captchas alfanuméricos, ¿no crees?
Por otro lado, realmente crees que una maquina va a comprender de aquí a 15 años por ejemplo que esta imagen es un gato?
www.teoriza.com/captcha/animal/gato-cat.jpg
Por cierto, acabo de ver la mención al artículo y de "sistema bastante complejo" nada. Eso lo puedes hacer con Matlab y similares en un pis pas y totalmente automatizado.
Lo tengo casi a punto de conseguir que cada imagen presentada a un usuario sea UNICA... :)
Quito lo de bastante complejo, ok
gato
crab@debian:/tmp/kkfuti$ php tracatru.php
aguila
crab@debian:/tmp/kkfuti$ php tracatru.php
tortuga
crab@debian:/tmp/kkfuti$ php tracatru.php
lovo
crab@debian:/tmp/kkfuti$ php tracatru.php
ni puta idea
crab@debian:/tmp/kkfuti$ php tracatru.php
ni puta idea
crab@debian:/tmp/kkfuti$ php tracatru.php
conejo
No me malinterpretes, me parece una idea cojonuda, pero con fallos. Para empezar las imagenes no son únicas cada vez, mantienen ciertos pixeles intactos. Aquí el cutre codigo que he usado:
<?php
$im = ImageCreateFromJpeg("www.teoriza.com/captcha/animal-captcha.php;
$rgb = ImageColorAt($im, 119, 119);
$r... » ver todo el comentario
#92 He aqui un estudio de la ultima version (es la del example.php, pero codigo no publicado aun).
he cogido 4 imagenes aleatorias de un mismo animal (shark) y luego 3 animales distintos aleatorios para poder comparar y tener referencia.
www.teoriza.com/captcha/test-histogramas.php
¿a que conclusión llegas? :)
PD: te invito a hacer tus propios histogramas si quieres, te he facilitado una forma de obtener imagenes de un mismo animal. Ejemplo: www.teoriza.com/captcha/animal-captcha.php?animal=leon-lion )
Creo que has trabajado descargandote la version actual 1.0 pero esa no corresponde con la que hay ahora mismo rulando en el ejemplo, esta será la futura 1.1 en la que estoy trabajando. Si quieres te la puedo pasar via email, como si fuese una beta, para que hagas tu test.
Yo he realizado tu test y no he conseguido que acierte nunca (sobre la futura version 1.1 insisto). He probado con varios animales, mira:
www.teoriza.com/captcha/test-bits.php?animal=shark1.jpg
www.teoriza.com/captcha/test-bits.php?animal=random1.jpg
www.teori... » ver todo el comentario
crab@debian:/tmp/kkfuti$ php trukutru2.php
ni puta idea
crab@debian:/tmp/kkfuti$ php trukutru2.php
leon
crab@debian:/tmp/kkfuti$ php trukutru2.php
leon
crab@debian:/tmp/kkfuti$ php trukutru2.php
leon
crab@debian:/tmp/kkfuti$ php trukutru2.php
leon
<?php
$im = ImageCreateFromJpeg("www.teoriza.com/captcha/animal-captcha.php?animal=leon-lion;
$rgb = ImageColorAt($im, 119, 119);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if($r=="125" && $g=="106"){
echo "leon";
}else{
echo "ni puta idea";
}
echo "n";
?>
Y he generado 3 imagenes del leon. Probemos:
www.teoriza.com/captcha/test-bits.php?animal=leon1.jpg
www.teoriza.com/captcha/test-bits.php?animal=leon2.jpg
www.teoriza.com/captcha/test-bits.php?animal=leon3.jpg
Wops... test no superado :)
Tienes razon... a ver como superamos esto.
----
Ahhhh ya entiendo tu truco, pillas el ultimo pixel (abajo derecha) xDD, el cual es improbable que sea modificado por los poligonos aleatorios... Osea que he de modificar toda la imagen completa. Buenisima leccion!!!1 Contrastes a mi!
---
Joder, me acabo de dar cuenta de que he escrito lobo con !V¡ ¡AAAAAAAAHHHHHHHHHHH!
Si tuviese el tiempo o los recursos suficientes haría un complemento con sonido, sin duda (quizá en un futuro lejano...), pero hasta entonces lo que hay es esto. Para mi no existe la posibilidad de "no entra nadie" así que entran todos o los que puedan! Lo siento de verdad. (si me quedo ciego algún día... oh wait!)
Sobre el OCR, bueno, si lees los últimos comentarios de esta excelente conversación verás que hemos profundizado en aspectos técnicos, más allá de lo que comentas.
Lo del archivo de sonido... pues supongo que tengas razón y no sea tan difícil como ahora imagino. Quizá hay algún desarrollo por ahí. Un saludo!