21/5/12

¿Cómo funciona una aplicación para mirar bajo los asteriscos (*)?

Quizá alguna vez te has hecho esta pregunta. Escribes tú contraseña, y se oculta de la vista, bajo una serie de caracteres, el estándar es el asterisco, pero podrá ser otro. Lo curioso es que hay programas que sí que son capaces de ver bajo ellos. ¿Por qué?

Realmente, donde estas escribiendo es una caja de textos, normal y corriente, con una propiedad, que es no mostrar el texto, para evitar que si tienes a tu primo encima del hombro, no tenga ni idea de que estas poniendo. Sin embargo, hay formas de conocer que has escrito, sin utilizar un keylogger, simplemente pidiéndole al programa que lo muestre.

Quizá, nunca has visto como se comunican las aplicaciones entre ellas, por lo que trataré de explicarlo. Tenemos una aplicación A que es un login, y nos permite acceder, y una aplicación B, que se encarga de leer bajo los asteriscos. Las conversación es así:



Aplicación A, te solicita que pongas tu contraseña, y presiones OK al terminar.

Aplicación B: -¿Oye… tengo yo una duda por aquí… podrías decirme en que cae el próximo jueves?
Aplicación A: -El próximo jueves, es día 5.
Aplicación B: -¡Por el cul…!
Aplicación A: -Tú siempre tan gracioso. ¿A ver, querías algo de verdad?
Aplicación B: -Pues ahora que lo dices… Si el jueves es 5, y le sumo 3…¿Qué día es? Bueno, a lo que vamos, necesito que me digas, para... emm... mis cosas... que es lo que ha escrito el tipo raro de bigote, ese que está entre la silla y el teclado... en la casilla esa que no veo bien desde aquí.
Aplicación A: -No sé de que casilla me estas hablando, tengo muchas. ¿Podrías especificar?
Aplicación B: -Sí, esa que pone justo al lado contraseña, y debajo tiene un botón que dice OK.
Aplicación A: ¿Cuánto texto te doy, 1 letra, 2, o lo quieres todo?
Aplicación B: Ponme cuarto y mitad… ¡Pues lo quiero todo…! Dame… 255 caracteres, más vale que sobre, que falte.
Aplicación A: Vale. ¿Dónde quieres que lo guarde, para que tú lo puedas ver?
Aplicación B: Déjamele… En un post-it debajo del monitor que eso creo que no lo hace casi nadie…
Aplicación B: -Muchas gracias, te debo una, bla bla bla

Como se puede ver, tienen un humor super original, pero las aplicaciones se pueden comunicar, y pueden enviarse mensajitos, sin que tú te estés dando cuenta –y no, esto no es cachondeo-


Para poder comunicarse, utilizan el sistema operativo, con una API, que se llama: SendMessage. Y tiene unos parámetros. Handle, que le indicaría a la aplicación A, a quien quieres preguntar, la casilla de texto de la contraseña. El ordenador, para identificarla usa un número que es único. Luego le envia el mensaje, indicando que lo que quiere saber es el texto. WM_GETTEXT. Como hemos visto, le indica el número de caracteres que quiere recibir, 255 –incluso hay forma de concretar, si es más largo o más corto- y por último, se le indica en que variable guardar el texto.

Dejo al final del todo, un rar, con el proyecto. Y un ejecutable, ya compilado, para que puedas probar. Todo el código está comentado, para facilitar su entendimiento.

PD:¡Esta prohibido criticar mi código! –lo sé, parece hecho por un equipo de 12 monos, pero no tengo dinero para contratar programadores, y como jefe, tengo que delegar –