Vargas Software Development

Software is just a story about winners and glory and you know that it’s true

Un candidato a peor "captcha" de la historia

Antes de empezar, me gustaría agradecer a mi compañero de la B1.30, David “Chope” Ventura ,que me comentara lo que a continuación os voy a describir.

Si algo me gusta de este país es lo chapuceros que podemos llegar a ser cuando nos lo proponemos y la famosa técnica de las Matrioshkas para que los proyectos sean la subcontratas de la subcontratas de la subcontratas de la subcontratas de la subcontratas de la … ad infinitum.

La cuestión es que con tanta gente en la cadena alimenticia, al final los requisitos se pierden en la traducción y nos encontramos páginas como http://www.citapreviadnie.es/.

Cita Previa DNIe es un servicio que el gobierno ha puesto para que los ciudadanos puedan solicitar el DNI electrónico.

PopUpCitapreviadnie

Nada más entrar, la página intenta abrirte un pop-up para darte la bienvenida. Sinceramente, me parece un error imperdonable en estos años en los que vivimos. En primer lugar, cualquier navegador actual bloquea los pop-up y la gente no sabe cómo abrirlos (por mucho que Internet Explorer, FireFox u otros) muestren una barra amarilla en la parte superior de la ventana).

Pero quizás, lo que más nos llegue al corazón, es el detalle del captcha que utilizan.

CaptchaDeRisa

Si te permites el lujo de abrir la página, verás que no es un captcha, sino una tabla con letras en texto plano. Simplemente utiliza el FireBug o cualquier otra cosa que te permita explorar el DOM de la página y te encontrarás algo como esto:

   1: <table width="300" height="60" border="0" background="https://www.citapreviadnie.es/captcha.gif">
   2:  <tbody>
   3:   <tr>
   4:    <td align="center" style="font-size: 30pt; font-family: Courier; color: blue;">T</td>
   5:    <td align="center" style="font-size: 30pt; font-family: Arial; color: blue;">B</td>
   6:    <td align="center" style="font-size: 30pt; font-family: Arial Black; color: blue;">I</td>
   7:    <td align="center" style="font-size: 30pt; font-family: Arial Black; color: blue;">J</td>
   8:   </tr>
   9:  </tbody>
  10: </table>

Pero si no fuese suficiente este captcha además no sirve absolutamente para nada, sino para complicar la vida al usuario. Ya que para más INRI se genera en cliente con JavaScript (luego podríamos enviar lo que quisieramos al servidor, este pseudo-captcha no nos detendría).

   1: var clave="";
   2: var DivImagen="";
   3: var DivTexto="";
   4: var NumeroLetras = 4;
   5: var letra="";
   6:
   7: function generaCapt()
   8: {
   9:     clave = GeneraClave(clave);
  10:     DivTexto = texto(DivTexto);
  11:     DivImagen = Imagen(DivImagen);
  12:     document.getElementById("imagendni2").innerHTML = DivImagen + DivTexto;
  13: }
  14:
  15: function GeneraClave(clave)
  16: {
  17:     var cont1;
  18:     var cadenaTexto = "ABCDEFJHIJKLMNPQRSTUVWXYZ123456789";
  19:     var numero;
  20:     var letra;
  21:     for (cont1=1; cont1<NumeroLetras+1; cont1 ++)
  22:     {
  23:         numero = Math.random() * cadenaTexto.length;
  24:         numero = Math.floor(numero) ;
  25:         if (numero == 0)
  26:         {
  27:             numero = 1;
  28:         }
  29:
  30:         if (numero > cadenaTexto.length)
  31:         {
  32:             numero = cadenaTexto.length;
  33:         }
  34:
  35:         clave = clave + cadenaTexto.substring(numero,numero+1);
  36:     }
  37:
  38:     return clave;
  39: }
  40:
  41: function texto(DivTexto)
  42: {
  43:     var TamFuente;
  44:     var Fuente = new Array("Courier", "Arial  Black", "Arial");
  45:     var Fase = new Array(10, 20, 30, 40);
  46:     var cont1, cont2, cont3;
  47:     for (cont1=0; cont1<NumeroLetras; cont1 ++)
  48:     {
  49:         TamFuente = Math.random() * 36;
  50:         TamFuente = Math.floor(TamFuente);
  51:         if (TamFuente < 30)
  52:         {
  53:             TamFuente = 30;
  54:         }
  55:
  56:         if (TamFuente > 46)
  57:         {
  58:             TamFuente = 46;
  59:         }
  60:
  61:         cont2 = Math.random() * Fuente.length;
  62:         cont2 = Math.floor(cont2);
  63:
  64:         if (cont2 > Fuente.length - 1 )
  65:         {
  66:             cont2 = Fuente.length - 1;
  67:         }
  68:
  69:         cont3 = Math.random() * 4;
  70:         cont3 = Math.floor(cont3);
  71:         if (cont3 > 4)
  72:         {
  73:             cont3 = 4;
  74:         }
  75:
  76:         DivTexto = DivTexto + '<td align="center" style="width:70; height: 50; font-size: ' +  TamFuente + 'pt; font-family: ' + Fuente[cont2] +    '; color: blue; ' +        'Filter:Wave(Add=0, Freq=0, LightStrength=10, Phase=' + Fase[cont3] + ', Strength=5)">' +        clave.substring(cont1,cont1+1) + '</td>';
  77:     }
  78:
  79:     DivTexto = '<div style="position:relative;">' + '<table background="https://www.citapreviadnie.es/captcha.gif" border="0" width="300" height="60"> <tr>' + DivTexto + '</tr></table>' +       '</div>';
  80:     return DivTexto;
  81: }
  82:
  83: function Imagen(DivImagen)
  84: {
  85:     DivImagen = '<div style="position:relative; ; left: 200px; top: 0px;"></div>';
  86:     return DivImagen;
  87: }
  88:
  89: function VerificaCaptcha()
  90: {
  91:     document.documento.D6.value = document.documento.D6.value.toUpperCase( );
  92:     if (clave != document.documento.D6.value)
  93:     {
  94:         document.documento.D6.value = " ";
  95:     }
  96: }

En fin, ya veis a dónde van nuestros impuestos y cómo funciona la administración.

¡VIVA ESPAÑA!

Filed under: Captcha

42 Responses - Comments are closed.

  1. Haz un POC de como explotarlo. Hasta entonces, aun a pesar de que ya te he dicho que es una chapuza, no es la peor chapuza de la historia.

  2. Jose says:

    Sí que sirve para algo: para adornar…

    Saludos.

  3. cau says:

    Bueno no es ninguna novedad que en la administracion publicar los “proyectos” (por llamarlos de alguna forma) se suelen adjudicar en funcion de los beneficios que podra sacar al persona que lo adjudica. Un presupuesto de 2.000 euros para un “proyecto” de capcha que acabara gastando….5 horas? 30-50 euros?

  4. Brito says:

    Bueno, es un captcha feliz ^^ Ha sido el producto de elaboradas elucubraciones ingenieriles. Seguramente, muchos conceptos de usabilidad han estado involucrados en su creación. La evolución natural de este captcha es “el captcha invisible”. Se espera con ansiedad.

  5. [...] captcha de la historia Posted Mayo 14, 2008 Esto si que es un [...]

  6. haplito says:

    A lo mejor la complejidad reside en la sencillez…

  7. clio5mil says:

    No puedo dejar de explamar: ¡Dios Santo! ¡Que chapuza!

    – Y eso que soy ateo –

    Clio5mil

  8. kikerino says:

    Por cierto, probad a pulsar el boton derecho sobre la página…

    XD

  9. Alfredo says:

    Madre de dios, como todo lo de la AEAT esté hecho así…

  10. proyecto says:

    alguien deberia explotar ese bug… y que lo tubieran que arreglar si o si… y como lo pagamos todos… alguien deberia denunciar al chapuzas que hizo eso

  11. Chechu says:

    Pues no os perdáis “salir de la página”. No hay ninguna opción para salir de la página y no continuar con el proceso. Si intentas cerrar el navegador por la X de la esquina, te aparece un mensaje que indica que “NO es recomendable salir de esta forma de la página”. ¿Y cómo se sale? ¿apagando el ordenador?

  12. r0s says:

    Que fueeeeeeeeeeeeeeeeeeerte!!! (es lo unico ke nos sale de la boca a un par de compañeros que acabamos de leer tu entrada)

    Hay que ser cutre madre de dios… xD

  13. Puisía says:

    Pero… ¿para qué puñetas quieren un captcha? ¿No es suficiente con tener que dar los datos del nº del DNI, equipo de expedición, fecha de validez, nº de soporte…?

  14. WOOOOW says:

    Soy al único que le duele la vista al leer el captcha.

  15. Guti says:

    Brito:

    Eres listísimo, pero puede (sólo puede) que precisamente no hayan intervenido ingenieros (o ingenieros pero no en informática). Puede, digo.

  16. kodec says:

    Ains! a mi me ha dado lástima.
    Seguro que lo han hecho con toda la buena intención. Les ha sonado la flauta en plan ¡Hagamos esto que se ve en todas partes para que parezca más seguro! pero probablemente no sabrán ni que se denomina “captcha”.
    jo, pobres.

  17. Pedro Gimeno says:

    OMFSM… ¿Y estos son los encargados de la seguridad del DNIe?

    Menos mal que entiendo un poquito de X.509 y esas cosas, porque la imagen que da esto es como para temblar…

    ¿No será una venganza?

  18. El Abuelo says:

    ¿Algún sorprendido por el funcionamiento de la susodicha página Web?

  19. Mario says:

    Igualmente aunque no fuera javascript me apuesto lo que sea a que con cualquier ocr es posible leerlo. Solamente hay que filtrar en primer lugar los colores de la imagen y dejar solo el tono azul oscuro, posteriormente lo pasamos a blanco y negro y woalaaaaaaaaaa! seguro que lo lee :D

    Saludos,

  20. evita107 says:

    Con C de cutre, y curioso. Smile, you´re in spain…

  21. Emilio says:

    Esos colores no causarán epilepsia, no?

  22. pippolippi says:

    Alfredo, la AEAT es peor, y con diferencia.

  23. Brito says:

    @Guti: Sin duda que tú también eres listísimo. Ingenieros o no, creo que duermen tranquilos, satisfechos con la popularidad adquirida por su producto ^^

    @Chechu: Es un concepto moderno de los estudiosos de la usabilidad. Para salir, presiona Abajo, Izquierda, A, B, Select y luego Start.

  24. MAD-Max says:

    Joer, tanto elogiar el código abierto, tanto adorar código abierto, y cuando la administración pone el código abierto en su páginas, van y se quejan

    Si es que no sabéis lo que queréis ;-) XD XD XD

  25. jose miguel says:

    Script con Python / Xul o javascript que hace la búsqueda en el árbol dom (XML básicamente) tal y como FireBug hace y modificar el campo de texto para actualizar el atributo con el valor de las letras.

    Sencillo y rápido, no hace falta PoC.

  26. Lightkun says:

    Cu ññaaaaaaa aaaa!

    El de la idea jugaba con el Detectinova de pibe xDD

  27. Morghost says:

    acojonante pensar el pastón que habra cobrado alguna charcutera por esa chapuza

  28. Brito says:

    @MAD-Max: XD XD XD

  29. Andrés says:

    Mucho criticar a la administración y meterse con los funcionarios pero, en este caso, el proyecto lo han hecho empresas privadas: Indra, El Corte Inglés y Software AG. Así que, para todos aquellos que se meten con los funcionarios, los inútiles esta vez no son funcionarios sino “expertos” programadores de grandes empresas…

  30. Interesante comentario el de Andrés… ¿No son los mismos responsables de la chapuza hace un año en la web del Congreso?

  31. Fernando says:

    Soy el único al que se le ha ocurrido copiar y pegar? Porque dejar, deja!

  32. JP says:

    A mi los captchas me sirven para ensayar mecanografía XD

  33. [...] un poco y buscando algún CMS para .NET como alternativa a DotNetNuke me encontré con el post Un candidato a peor “captcha” de la historia (http://rafavargas.wordpress.com/2008/05/14/un-candidato-a-peor-captcha-de-la-historia/), la verdad [...]

  34. txo says:

    Becarios…

  35. Xanadú says:

    Esto va para Andrés, no serias tu el que puso como requerimiento que se pueda copiar y pegar pa no tener que escribirlo no?

    Este es el típico que se ha dado por aludido.

  36. Salfredo says:

    ¿pero bueno esto que es,un blog de informática o uno de humor XD?

  37. Pablo says:

    La idea sería buena si hubiera montado una imagen con tablas pero en lugar de con texto utilizar cada celda como un pixel… finalmente sería igual: una imagen. Pero dado su formato particular se lo pondría mas dificil a los típicos bots.

  38. OzX says:

    http://foro.new-bytes.net/f27/bypass-catpcha-www-uploadsourcecode-com-ar-209/

    XD¡. muchas webs tienen un catpcha bastante malo..

    Hasta sistema de Pagados tiene catpchas que son muy violables.
    http://foro.new-bytes.net/f27/bypass-catpcha-perldesk-v-4-21-131/

    Si no vulnerados, via logica, como son estos.. tambien estan los que analizan la img pixel a pixel…

    Insisto los Catpchas en si no Sirven. Si son creados por Humanos, van a ser vulnerados por Huamanos.

    new-bytes.net¡
    OzX¡

  39. JOSE says:

    Lo han cambiado!! lo han cambiado!!!! MENEAME funciona mejor que ninguna otra web…!!! Ha sido publicarlo y lo han cambiado!!…. Sinceramente yo tuve que pedir cita hace poco tiempo para renovar el DNI y vi esta página pero no la utilicé porque la vi tan poco segura que pensé que era algún “espabilao” que la había colgado para recopilar datos personales de la gente. Hasta que no llamé a la comisaria y me dieron un teléfono donde llamar en el que me indicaron que podía reservar cita a través de esta web no estuve 100% convencido de utilizar este canal para la cita previa del DNI.

    Ahora acabo de entrar y ya han cambiado el captcha.

  40. el mallas says:

    Que sabrás tu si eso es seguro, listo de los huevos.

  41. [...] Fonte: Vargas & Software Development (via WordPress.com) [...]

Archives

About me

My name is Rafa Vargas. I'm an undergraduate student of Computer Science at University of Seville, Spain. I am mainly interested in computer security, usability and the business of software.

Click here to read the full story.

Recently on twitter