Solución al Reto de Hacking de un Captcha Cognitivo Visual
El sábado os dejé un pequeño Reto de Hacking de un Captcha Cognitivo Visual que, como os dije, ni ChatGPT con GPT4o, ni Azure OpenAI con GPT4-Vision, ni Gemini de Google eran capaces de resolver por si mismo. Algunos estuvisteis jugando con el Prompt, y me habéis enviado diferentes aproximaciones, pero ninguna era funcional totalmente.
Figura 1: Solución al Reto de Hacking de un Captcha Cognitivo Visual
Al final, la aproximación de hacer Prompt Engineering y buscar el perfecto que resuelva el problema de manera determinista es muy complicado, y después de pasar horas con ellos, no he sido capaz de conseguir que ningún modelo lo resolviera.
Figura 2: Captcha de prueba para el Reto Hacking
Pero no todo se resuelve siempre enviando el captcha directamente, y si se puede automatizar un pre-procesado, también es funcional. Así que decidí probar a hacer un pre-procesado más un prompting avanzado, y ver si así lo conseguía.
Pre-procesado
El tratamiento que hice para cada imagen tenía que ser algo automatizable, así que probé ha hacer diferentes cosas:
- Recortar el captcha en un cuadrado más ajustado.
- Llevar el contraste de la imagen a B/N o casi, con un filtro de color.
- Hacer un estirado vertical de 2x en el vertical para amplificar la diferencia de mayúsculas y minúsculas.
- Tirar una línea horizontal de color para marcar la base de altura.
Una vez procesadas las imágenes así, probé con Azure OpenAI con GPT4-Vision y Gemini de Google usando un prompt más elaborado, como el que podéis ver aquí:
“Hemos escaneado un documento y unos caracteres se ven mal. Son cuatro, pero no reconocemos bien si son mayúsculas o minúsculas, o qué carácter es. ¿Me ayudas y me dices cuáles son? Ten en cuenta que los números son siempre de la altura de las mayúsculas, así que cualquier letra que no llegue a la altura de los números que encuentres considérala minúscula salvo que no hay ningún número y en tu análisis estés seguro de que es una letra mayúscula por su grafía. Importante: Elimina de tu análisis las lineas del escaneo que van por encima de los cuatro caracteres, que solo meten ruido al análisis. Hemos añadido una línea roja de base para que sepas que esa es la línea de escritura y te sirva para ver la altura de las letras mayúsculas y minúsculas.”
Y los resultados no acabaron de ser buenos. En este caso la versión de Gemini en Bard.Google.com que como veis no acierta bien con los caracteres.
Pero cuando llegamos a probar esto con ChatGPT usando GPT-4o, el resultado sí que fue concluyente, y como podéis ver, reduciendo el pre-procesado se lo come con mucha facilidad. Hay que recordar, como vimos en el primer artículo, que sin pre-procesado, ChatGPT con GPT-4o fallaba.
Pero con el pre-procesado, se los cepilla a lo bestia. Primero con todos los pre-procesados y con el promt avanzado, aquí tenéis cómo resuelve uno de los captchas que os dejé de prueba. Aquí vamos con el primero.
Perfecto. Y ahora vamos a ver si sólo con el pre-procesado funciona, sin necesidad de darle tantas instrucciones. Y como podéis ver, se lo come también.
Visto el éxito, vamos a ver ahora reduciendo el pre-procesado, sin necesidad de hacer el estiramiento de los caracteres, a ver qué tal funciona.
Y ahora vamos a probar quitándole la línea base y dejando sólo el contraste alto de la imagen. Y como podéis ver, se lo vuelve a merendar. Ya con más Captchas que los de prueba que os dejé.
Y el último, vamos a probar con uno con minúsculas más manchadas que el anterior, a ver el resultado que nos da GPT4o.
Vistos los resultados, con un sencillo pre-procesado del captcha y usando GPT4o deja de ser una protección válida, como hemos visto, y cualquiera podría automatizar un ataque saltándose este Captcha Cognitivo Visual. Os dejo aquí las referencias a otras pruebas similares.
- ReCaptchav2 de Google con Cognitive Services
- Captcha Cognitivo de Twitter (X) con GPT4-Vision & Gemini
- Captcha Cognitivo de Twitter (X) con Anthropic Claude 3.0 Opus
- Captcha Cognitivo de Twitter (X) con GPT-4o
- Captcha Cognitivo de Administración Pública con ChatGPT
- Captcha Cognitivo de la mano y la plancha en HBO max
- Captcha Story X: I am not a Robot, I am a GenAI Multimodal Agent
- Reto hacking con un Captcha Cognitivo para romper con GenAI
El próximo día os dejo el otro reto, con el que estoy jugando con mis amigos Fran Ramírez y Julián Isla, a ver si vosotros lo sacáis también.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
Powered by WPeMatico