Keelog ha decidido publicar la versión anterior de su familia de keylogger por hardware, facilitando la versión completa de firmware y el código fuente del software, los esquemas eléctricos y la documentación. Este keylogger PS/2 es un dispositivo 100% operativo y probado, instalado y utilizado por cientos de personas en todo el mundo. El funcionamiento de este keylogger por hardware es parecido a la versión KeyGrabber PS/2. Para registrar y analizar los datos de las pulsaciones de teclas les proporcionamos la aplicación KeyGrab. No obstante, recordamos que este keylogger por hardware tipo DIY se entrega tal como está, con todos sus defectos y sin garantía ninguna.
Antes de proceder a trabajar mire el listado de abajo y compruebe si dispone de todas las herramientas y habilidades necesarias para realizar el proyecto de Keylogger por Hardware Open Source:
Los siguientes componentes son necesarios para realizar el proyecto de keylogger por hardware:
También es necesaria una protección para el keylogger. Una buena idea sería comprar un cable de extensión PS/2 y un trozo de tubo termorretráctil de unos 10 centímetros. Este tubo se contraerá con el calor, cubriendo el listo keylogger.
Empiece por programar el firmware del microcontrolador. Lance la aplicación del programador, seleccione el microcontrolador AT89C2051 y cargue el programa utilizando el código en la versión binaria o en la versión hex. También se puede recompilar la fuente utilizando el código fuente y un compilador 8051. El estañado es probablemente la parte más difícil del proyecto, dado que el keylogger por hardware debería ser el más pequeño posible. En el esquema eléctrico abajo se puede ver cómo deben quedar las conexiones entre los componentes del keylogger por hardware.
Estañe los componentes empezando por el microcontrolador y la memoria EEPROM. Se puede eliminar los pines que no se utilicen. Asegúrese de que haya acceso al pulsador. Al montar los condensadores compruebe si están polarizados correctamente.
Intente hacer el dispositivo lo más compacto posible, sin embargo, evitando los cortocircuitos, ya que una vez montado el dispositivo éstos serán difíciles de eliminar. Después de estañar los componentes principales el keylogger debería ser parecido al prototipo en la foto.
Al final proceda a estañar los conectores PS/2 al keylogger. Es recomendable cortar un cable de extensión PS/2 en dos y estañar cada parte por separado. Recuerde situar el tubo termorretráctil en una parte del cable. Conecte los cuatro pines de PS/2 utilizados (CLK, DATA, VCC y GND) a ambos conectores (el del teclado y el del ordenador).
Antes de cubrir el keylogger con el tubo termorretráctil es recomendable aplicar un poco de cola o resina entre los componentes para darle más rigidez al dispositivo. Finalmente sitúe el tubo termorretráctil en los componentes estañados y caliéntelo para que cubra bien los componentes. Corte un orificio pequeño para asegurar acceso al pulsador.
El keylogger por hardware empezará a registrar las pulsaciones de teclas una vez enchufado el ordenador y el teclado. El keylogger no influye de ninguna forma en el funcionamiento del ordenador y no puede ser detectado por software. Todos los datos de las pulsaciones de teclas mandados por el teclado serán grabados en la memoria no volátil EEPROM de 64 kB. El modo de registro es totalmente independiente del sistema operativo instalado en el ordenador.
Localice el conector PS/2 de teclado en el ordenador.
Desenchufe el teclado.
Conecte el keylogger por hardware en el lugar del teclado.
Conecte el teclado al keylogger. El registro de datos empezará en el momento cuando se ponga el ordenador en marcha.
Una vez los datos del teclado han sido grabados en el modo de registro, se pueden reproducir en cualquier PC que utilice el sistema operativo Windows 9X/Me/XP/2000. El keylogger por hardware lo realiza simulando las pulsaciones del teclado. Los datos de las pulsaciones del teclado que se transmiten son capturados por la aplicación KeyGrab. Una vez transmitidos al ordenador, estos datos podrán ser procesados y analizados. Para iniciar la descarga de datos siga las instrucciones a continuación.
Lance la aplicación KeyGrab.
Conecte el keylogger por hardware en el lugar del teclado. No conecte el teclado.
Haga click en la barra de título de la aplicación KeyGrab para activarla.
Presione el pulsador del keylogger para iniciar la descarga de datos. Durante la transmisión no cambie la aplicación activa. Vuelva a presionar el pulsador para terminar la transmisión cuando los datos deseados hayan sido transferidos al PC.
Desconecte el keylogger por hardware y vuelva a conectar el teclado PS/2.
Durante la descarga de datos a la tabla principal de la aplicación KeyGrab estos datos son automáticamente procesados para mostrar las teclas pulsadas durante el registro. Los datos se transmiten en el orden inverso, para que las teclas pulsadas últimamente aparezcan como primeras. Los datos sobre las pulsaciones de teclas de hace mucho tiempo serán mostrados como últimos. La tabla se puede analizar manualmente o utilizando las opciones de búsqueda.
Las únicas columnas que pueden ser de interés para el usuario son la Tecla (2) y la Acción (3). Estas columnas codifican qué teclas han sido presionadas y liberadas. Utiliza la barra de desplazamiento para ver la historia de teclas pulsadas en el modo de registro. Los datos del keylogger se transmiten en el orden inverso (las teclas presionadas últimamente aparecerán como primeras).
La aplicación para la descarga y análisis de datos del keylogger por hardware tipo DIY para Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)
El código fuente completo para el microcontrolador AT89C2051:
Código fuente - diy.asm
Firmware precompilado para el microcontrolador AT89C2051:
fichero BIN - diy.bin, fichero HEX - diy.hex
Le animamos a leer esta sección, lo que le puede ayudar a evitar algunos problemas que puedan surgir a la hora de utilizar el keylogger por hardware.
Al cortar un cable de teclado PS/2 probablemente encontraremos dentro 6 alambres. Solamente 4 de ellos son significativos. Dos de ellos son líneas de alimentación: la de tierra (GND) y la de +5 voltios (VCC), que van de la fuente de alimentación del ordenador. Los dos alambres restantes son líneas de transmisión asíncrona: la línea de datos (DATA) y la del reloj (CLK). En la figura a la derecha se puede ver la correspondencia entre estas líneas y los pines conectores DIN (a) y miniDIN (b). La transmisión es bidireccional, no obstante, el teclado es superior. El teclado envía la información sobre las teclas presionadas y liberadas. El bloque de datos consiste de un solo byte, precedido por un bit inicial y seguido por una paridad y un bit final. El teclado manda los sucesivos bits por la línea de DATA, y los temporiza con impulsos negativos en la línea CLK. La frecuencia del reloj es de 10...30 kHz. Esto sería un protocolo de serie muy bonito, si no fuera por el ordenador, que de vez en cuando quiere mandar información al teclado. En tal caso, el PC pone la línea CLK a cero por un tiempo y espera a que el teclado empiece a generar impulsos. Cuando empiezan los impulsos, éste pone sus propios datos en la línea de DATA. En la figura abajo se pueden ver los diagramas de estado de la transmisión del teclado al host y del host al teclado. Evidentemente, este protocolo tiene un par de excepciones, por ejemplo, interrupción de la transmisión, caracteres repetidos, etc. No obstante, estos casos son muy poco frecuentes.
Pues ¿qué datos se transmiten realmente por las líneas del teclado? Al ponerse en marcha tanto el teclado como el ordenador envían unos datos de iniciación, informando que están en buenas condiciones. Cuando el ordenador trabaja normalmente, sólo el teclado manda datos. Estos datos conciernen a todas las acciones que tuvieron lugar. Una acción se considera una pulsación o liberación de una tecla. Si se presiona una tecla estándar, se envía su, así llamado, "scan code". Cada tecla tiene exactamente un scan code, creando así un mapa de scan codes. Si se libera una tecla, primero se envía un especial byte 240 (F0 hex), y después se envía el scan code. Así que una pulsación de tecla ocasiona el envío de 3 caracteres por línea. Si se mantiene una tecla presionada por un cierto tiempo, su scan code se generará constantemente, repitiéndose con una frecuencia determinada. Cuando finalmente se libera esta tecla, se mandará el carácter 240 (F0 hex), y después el scan code. Este protocolo seguiría siendo muy bonito y agradable, si no fuera por unas teclas especiales del teclado estándar del PC, tales como, por ejemplo, las teclas Inicio, Fin, las flechas, etc. Cuando se presiona una tecla especial, se genera el byte 224 (E0 hex), seguido por el scan code. Cuando se libera una tecla especial, se lanza la secuencia 224, 240 (E0, F0) seguida por el scan code. Respecto al mapa de scan codes las teclas normales y las especiales son comunes para todas las distribuciones nacionales del teclado. Para hacer las cosas un poco más complicadas, existen dos teclas superespeciales, la de Imprimir Pantalla y la de Pausa, que provocan la transmisión de una entera secuencia de scan codes. Para la persona que prepara la comunicación con el teclado es mejor pretender que estas teclas no existen.
El microcontrolador controla las líneas DATA y CLK todo el tiempo, capturando todos los datos. Los datos se graban en la memoria no volátil EEPROM a medida que llegan por la línea. Gracias a ello el usuario podrá enterarse de todas las acciones que fueron llevadas a cabo en el teclado. Cuando el usuario decida que el registro está terminado, el keylogger por hardware cambiará al modo playback. El teclado tiene que estar desconectado, en caso contrario empezará a interpretar el flujo de datos. El keylogger iniciará la simulación de las pulsaciones de teclado utilizando para ello su memoria interna hardware. La aplicación KeyGrab tiene que estar activa, para procesar el flujo de datos que llegan del keylogger por hardware. Las teclas normales se simulan tal como habían sido registradas en la memoria, mientras que las teclas especiales se transmiten utilizando un código hex de dos bytes.