| Artículos | 01 SEP 1995

Truco 135: Espía de teclado

Tags: Histórico
Aurelio Llorente.

El objetivo fundamental de este programa es enseñar las técnicas básicas de programación para el parcheo de las rutinas de tratamiento de interrupciones y de las técnicas usadas para crear programas residentes. También quiero que sirva para demostrar cómo la mayoría de los mecanismos de seguridad usados en los programas de gestión bajo DOS son inútiles por que están mal diseñados y por tanto son ineficientes. Así quiero que los usuarios que creen que su información está a salvo de miradas indiscretas, sepan que existen técnicas que soslayan los mecanismos de seguridad de sus programas de contabilidad, por poner un ejemplo, y estén alerta ante dicha posibilidad.

Se me puede acusar de publicar dichas técnicas, pero soy de la opinión de que la información es la mejor manera de luchar contra éstas (al igual que con los virus), y además, estas técnicas mostradas están al alcance de cualquier programador y técnico en ordenadores personales (PC).

Se trata de un programa que queda residente parcheando las INT 21h (servicios generales y documentados del DOS) y INT 09h (teclado) para obtener las primeras 50 teclas que se pulsan al comienzo de cada uno de los programas que se ejecuten bajo DOS. Esta teclas pulsadas, se guardan en el fichero C:\SEVLAC.BIN (con atributo de oculto), para poder ser examinadas más tarde.

Esto sirve para averiguar claves de entrada a programas, por ejemplo, mirando luego el contenido de SEVLAC.BIN mediante PCTOOLS u otra herramienta similar y analizando el contenido de dicho fichero. Por cada programa que se ejecuta bajo DOS, se graba una entrada en SEVLAC.BIN de manera que cada entrada en el fichero indica el nombre del programa ejecutado y debajo los códigos de las 50 primeras teclas pulsadas en ese programa.

El funcionamiento general del programa, una vez residente en memoria, es el siguiente:

Caza una llamada a la INT 09H (provocada por una pulsación de teclado), lee el carácter pulsado y lo guarda en un buffer. Hay dos funciones del DOS que hacen que se guarde el buffer en el fichero 'SEVLAC.BIN': Cuando se le pide una operación al DOS (INT 21H) de terminación normal de programa (función 4Bh) o de ejecución de un programa (función 4Ch , también llamada EXEC). La rutina que parchea la interrupción 21h, comprueba la función que se le pide al DOS, y en caso de que sea una de las dos mencionadas, se procede a guardar las teclas interceptadas al último programa ejecutado. En cualquier caso, la rutina que parchea la INT 21h pasa siempre, al terminar su trabajo, el control a la rutina primitiva de acceso al DOS, para que ésta haga el trabajo que le ha pedido el programa llamante.

Información y técnicas avanzadas

La forma de leer los caracteres pulsados en el teclado es accediendo al buffer que mantiene el BIOS en forma de cola circular, para más información ver la revista PC WORLD Nº 59 'La BIOS y su área de comunicaciones' y el libro "MS-DOS Avanzado" de Ray Duncan.

Posibles mejoras a este programa:

- Gestionar parámetros que indiquen por ejemplo, el tamaño deseado en bytes del buffer que almacena los códigos de las teclas pulsadas, o que admita una especificación de fichero en el que guardar los códigos de las teclas.

- Permitir desinstalar el programa de memoria principal.

- Mejorar el proceso para quedar residente, ahorrando espacio si se evita el código y los datos del proceso de instalación, dejando residente sólo el código y datos que gestionan las interrupciones parcheadas.

Modificaciones al programa:

- Si se quiere aumentar el número de teclas por programa, modificar la constante simbólica TAMANOBUFFER, recompilar y linkar.

- Si se quiere cambiar el nombre y emplazamiento del fichero donde se almacenan los códigos de las teclas, modificar la variable 'nombreFichero', recompilar y linkar.

Los códigos de error que devuelve el programa si no se puede instalar en memoria son:

1 Error en apertura/creación del fichero SAVLEC.BIN

2 Programa ya presente en memoria

3 Versión incorrecta del Sistema Operativo

Recomendación

Sitúe este programa en la última línea de su AUTOEXEC.BAT para una correcta comprobación de su presencia en memoria. No es fundamental pero sí recomendable. La línea a escribir, si el programa se encuentra en el directorio raíz, en su AUTOEXEC.BAT es:

c:\SEVLAC.EXE >nul

NOTA FINAL MUY IMPORTANTE

¡¡Ni el autor ni la revista PC World se hacen responsables del mal uso de este programa!!

Sergio Sánchez González

(Granada)

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información