Agregar sistema de verificación humana

Iniciado por Mad Antrax, 11 Julio 2006, 20:12 PM

0 Miembros y 1 Visitante están viendo este tema.

Mad Antrax

Bueno, primero lo primero: que es un sistema de verificación humana?

Es un pequeño código que muestra un texto (o una serie de caracteres) distorsionados y deformados.

Para que sirve este sistema de verificación?

Esto nos asegura que detrás de nuestro programa hay una persona humana, y que un robot o script no podrá hacer uso de él.

Para que entornos nos sirve esto?

Por ejemplo, si tenemos un formulario donde un usuario puede hacer una petición o un registro. Es bueno asegurarnos que quien se va a registrar es una persona humana, y no un robot o script malicioso que pretende hacer un flood.



Bien, pues he querido programar una función similar para VB6, el sistema es sencillo y tampoco nos asegura al 100% que sea efectivo (un usuario puede crackear la funcion, por ejemplo). Los códigos que genera son parecidos a estos:



Supongo que se podría mejorar el programa (se aceptan mejoras y criticas ;)). Os dejo adjunto el código fuente y el programa compilado para que veais como funciona.

Decirme vuestra opinion ;D
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

NYlOn

Esta muy bueno, felicitaciones. Si se permiten criticas constructivas:
En muchas ocasiones las lineas y circulos no permiten la lectura del codigo (cuando digo 'muchas' me refiero a mas de lo que esperaba :P).
Otra cosa, y se que es un programa de prueba, pero en mi opinion, cuando vayas a utilizar el sistema seria bueno que el programa se cerrara a los 4 o 5 intentos, para evitar cualquier intento de automatizacion.
Son solo ideas :P

Un saludo y gracias por el codigo.-

Mad Antrax

Jejej, gracias por tus comentarios. Es cierto que aveces las lineas y circulos son excesivos xD. Puero siempre puede hechar mano del modulo y rebajar el numero de lineas:


Function ImagePass_Lines(ThePicture As PictureBox)
    Randomize
    ThePicture.DrawWidth = Int(Rnd * 2) + 1
    ThePicture.Line (0, Int(Rnd * ThePicture.Height))-(ThePicture.Width, Int(Rnd * ThePicture.Height)), QBColor(Int(Rnd * 15)), B
    For i = 1 To 5 'REBAJA ESTE NUMERO, PON UN 2 ENVES DE UN 5 !!!!
        Var = Int(Rnd * 15) + 1
        ThePicture.DrawWidth = Int(Rnd * 2) + 1
        If Var Mod 3 = 0 Then
            ThePicture.Line (Int(Rnd * ThePicture.Width), 0)-(Int(Rnd * ThePicture.Width), ThePicture.Width), QBColor(Int(Rnd * 15)), B
        Else
            ThePicture.Line (Int(Rnd * ThePicture.Width), 0)-(Int(Rnd * ThePicture.Width), ThePicture.Width), QBColor(Int(Rnd * 15))
        End If
    Next i
End Function


Y evidentemente que hay que poner lo que nos comentas, un sistema que al 3º o 4º intento se cierre por completo o mejor aun: si se equivoca 5 veces que se genere una imagen nueva :P

Gracias :)
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

<--v1c1ous-->

No lo probe pero al parecer te quedo bien, solo lei el codigo.

El unico problema es que para Software's es inutil, en el unico lugar que vas a encontrar Bot's o Scripts automaticos es el las webs.
Los pocos Software's que usan esta tecnica es para tratar de prevenir el crackeo a la hora de poner serials por ejemplo, haciendo que ademas de un serial sea necesaria la intervencion humana directa. Aunque esta tecnica igualmente es inservible ya que un crack hace todo completo.


Igualmente me parece un buen trabajo, tendria buena funcionabilidad si se lo volcara en un programa que manda mail's anonimos para prevenir el mail bomber por ejemplo.

Con seis caracteres como minimo no seria necesario cerrar el programa, solo cambiar la imagen cada x intentos, ya que si llega a ser intervencion de un script no va a adivinar los caracteres y talvez solo se alla confundido varias veces la intervencion humana mareado por tanto color y figura.


NekroByte

Ve »Aki« y cuando esté cargada la página das Edición/Buscar y tecleas: "Pueden ver como los caracteres están rotados o girados en cierto grado." Y checa por esa zona para que inspecciones los tips sobre las APIs.

Hilsen.

<--v1c1ous-->

Cita de: NekroByte en 12 Julio 2006, 07:09 AM
Ve »Aki« y cuando esté cargada la página das Edición/Buscar y tecleas: "Pueden ver como los caracteres están rotados o girados en cierto grado." Y checa por esa zona para que inspecciones los tips sobre las APIs.

Hilsen.

Bueno, esa es otra manera para que ningun soft pueda leer los caracteres impresos en una imagen, pero en un caso concreto simplemente se volveria a rotar la imagen ciertos grados por vez hasta lograr leer los caracteres impresos, con tan solo rotar el texto no basta.
No es factible.


Mad Antrax

Pero si juntamos la opción de rotar con los colores, lineas, circulos, puntitos, tamaño de letra, tipo de letra... (y todas las demás opciones que puedas meterle) conseguimos un sistema de protección bastante alto :)
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

<--v1c1ous-->

Estas en lo cierto, pero recorda que tambien bastante molesto y en un software algo inutil.

Hay que encontrar un equilibrio, por ejemplo usando una fuente distinta a la normal, de esta manera solo el usuario humano la entenderia, un soft en una fuente rebuscada no lo lograria.


Mad Antrax

Exacto, o usar 2 o más fuentes distintas para generar una sola imagen (asi el robot tendría que interpretar varias fuentes distintas). Pero como dices, este método para un soft es algo inútil, y es solo aplicable por web o similares.

Pero no se, lo he visto como un reto personal y me he decidido a programarlo ;D aunque no sirva para nada xD
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

<--v1c1ous-->

Me parece una buena forma de experimentar.

Ojo con el tema de las fuentes, cualquier soft de interprete de caracteres en la pantalla del genero imagen no es que identifica una sola fuente, sino la forma de la fuente, por ejemplo, interpreta cualquier fuente del tipo Verdana, times, arial.
Con tipo de fuente me refiero a por dar un ejemplo tonto, Gottica, esto haria que el interprete humano la interpretace sin problemas pero un soft encontraria un tipo de fuente con muchos dibujos y rebuscada.

Claro que siempre esta la posibilidad que el soft este programado para ese tipo de letra en particularidad.