KeeLog decidiu publicar o projecto da versão anterior de keylogger de hardware, facilitando uma versão completa de firmware, códigos de fonte do software, esquemas eléctricos e documentação. Keylogger de hardware é um Open Source 100% eficaz e logger do teclado PS/2 experimentado, montado e utilizado por centenas de pessoas em todo o mundo. O funcionamento deste dispositivo parece-se com a versão KeyGrabber PS/2. Para descarregar e analisar os dados do keylogger proporciona-se uma aplicação especial KeyGrab. Recordamos entretanto, que o Keylogger de Hardware Open Source foi publicado "tal como é", com todos os defeitos e sem qualquer garantia.
Antes de começar a trabalhar, veja a lista abaixo e verifique se dispõe de todas as ferramentas e aptidões para realizar o projecto de Keylogger de Hardware Open Source:
Os seguintes subconjuntos são indispensáveis para a realização deste projecto:
Também é indispensável contar com uma protecção do logger. Seria boa ideia comprar um cabo de extensão PS/2 e um segmento de tubo termoretráctil de alguns centímetros de comprimento, com que se poderá cobrir termicamente o logger preparado.
A montagem deve começar com a programação de firmware do microcontrolador. Arranque a aplicação do programador, escolha o microcontrolador AT89C2051, e descarregue o programa usando o código em da versão binária ou da versão hex. Se tiver dúvidas, também poderá compilar o código novamente em da versão fonte usando o compilador adequado para a família 8051. A soldadura é provavelmente a etapa mais complexa e duradoura da montagem, posto que o keylogger de hardware deve ter as mínimas dimensões possíveis. Os diagramas de circuito do keylogger de hardware Open Source que se seguem demonstram o percurso das conexões entre os subconjuntos.
Solde os elementos começando pelo microcontrolador e pela memória EEPROM. Poderá eliminar os pinos que não vai utilizar. Assegure-se de que haverá acesso ao botão. Durante a montagem dos condensadores assegure-se de que estão polarizados correctamente.
O dispositivo deverá ser o mais pequeno possível, sem distâncias excessivas entre os elementos. É preciso evitar curto-circuitos, já que serão muito difíceis de eliminar mais tarde. Uma vez soldados os elementos principais, o keylogger de hardware deverá parecer-se com o protótipo demonstrado na fotografia.
A montagem da tomada e ficha PS/2 deverá realizar-se no final da operação. É uma boa ideia cortar a extensão PS/2 em duas partes e soldar os cabos de cada parte separadamente. Lembre-se de colocar o tubo termoretráctil numa das partes antes de começar a soldar. Solde todas as quatro linhas PS/2 a usar (CLK, DATA, VCC e GND) na tomada e na ficha (ligadas ao teclado e computador).
Antes de envolver termicamente o tubo termoretráctil ao redor do keylogger, seria boa ideia pôr uma pequena quantidade de cola ou resina entre os elementos para entesar toda a estrutura. No final da operação aqueça o tubo termoretráctil para que fique apertado ao redor do keylogger e recorte uma pequena abertura que permitirá acesso ao botão.
Keylogger de hardware Open Source começa a captar os dados do teclado no momento de ser ligado entre o computador e teclado. O keylogger é totalmente "transparente", não afectando de modo algum o funcionamento do computador ou teclado, nem pode ser detectado pelo software. Todos os dados do teclado são guardados na memória interna não-volátil EEPROM de 64kB. O modo de captação é independente do tipo do sistema operativo instalado no computador.
Encontre o conector do teclado PS/2 no computador.
Desligue o teclado.
Ligue o keylogger de hardware no lugar do teclado.
Ligue o teclado ao keylogger. O modo de captação arrancará no momento de ligar a alimentação.
Quando os dados do teclado forem guardados no modo de captação, poderão ser reproduzidos em qualquer computador PC que utilize o sistema operativo Windows 9X/Me/XP/2000. O keylogger de hardware fá-lo através da simulação do envio de dados através do teclado. Os dados transmitidos são captados pela aplicação KeyGrab. Quando todos os dados forem descarregados pelo computador, poderão ser processados e analisados. As seguintes instruções ilustram como é iniciado o modo de descarga de dados do keylogger.
Iniciar a aplicação KeyGrab.
Ligue o Keylogger de Hardware no lugar do teclado. Não ligue o teclado.
Clique na barra de título da aplicação KeyGrab para activá-la.
Carregue no botão no keylogger para iniciar a transmissão. Durante a descarga não troque a aplicação activa. Carregue no botão outra vez para terminar a descarga. É preciso fazê-lo quando os dados desejados forem descarregados ao computador.
Desligue o keylogger de hardware e ligue outra vez o teclado PS/2.
Durante a descarga de dados para a tabela principal da aplicação KeyGrab, os mesmos são processados automaticamente de forma a demonstrar as teclas tocadas no modo de captação. Os dados são transmitidos em ordem cronológica inversa para apresentar primeiro os dados captados mais recentes. Os dados que se descarregaram podem ser analisados manualmente. Também se pode aproveitar algumas opções de pesquisa incorporadas.
A informação mais interessante do ponto de vista do Utilizador é a coluna com as teclas (2) e com o incidente (3). Nestas colunas foi codificada a informação relativa aos sinais inscritos. Movendo a barra de deslocamento poder-se-á reproduzir a história do texto inscrito no modo de captação. Os dados do keylogger são transmitidos em ordem cronológica inversa (os dados mais recentes no início).
Aplicação para a descarga de dados do keylogger de hardware Open Source para Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)
O código fonte completo para o microcontrolador AT89C2051:
Código fonte - diy.asm
Firmware compilado para o microcontrolador AT89C2051:
ficheiro BIN - diy.bin, ficheiro HEX - diy.hex
É aconselhável ler as seguintes observações, graças às quais poderá evitar vários problemas relacionados com a utilização do keylogger de hardware.
Ao cortar o cabo de teclado PS/2, normalmente encontraríamos 6 fios dentro. Entretanto, apenas 4 destas linhas são importantes. Duas delas são de alimentação: massa (GND) e +5 Vóltios (VCC) gerados pela fonte de alimentação do computador. As duas restantes correspondem à transmissão assíncrona de dados: a linha de dados (DATA) e a linha de clock (CLK). Na figura do lado direito foi apresentada a correspondência entre as linhas e os pinos da ficha DIN (a) e miniDIN (b). A transmissão é bidireccional, mas o teclado desempenha o papel mais importante, enviando informação sobre os toques nas teclas e os desprendimentos das teclas. A porção de dados contém só um byte, precedido por um bit inicial e terminado com a paridade e um bit final. O teclado põe os consecutivos bits na linha de dados DATA e cronometra-os com impulsos negativos na linha de clock CLK. A frequência de clock é de 10...30 kHz. Este protocolo seria muito simples e elegante, se o computador não precisasse de enviar um dado para o teclado de vez em quando. Em tal caso põe a linha de clock CLK a zero por algum tempo e espera que o teclado comece a gerar impulsos. Quando começam os impulsos, o controlador do computador começa a pôr os seus próprios dados na linha DATA. As formas de onda da transmissão foram demonstradas nos diagramas a seguir: (a) do teclado ao computador, (b) do computador ao teclado. Este protocolo tem algumas excepções e complicações, tais como a interrupção da transmissão, repetição do sinal etc. No entanto, são casos pouco frequentes.
Quais são os dados que na realidade são transmitidos pelo cabo do teclado? No momento de arrancar, tanto o teclado como o computador enviam os dados inicias, proporcionando a informação sobre a sua situação. Quando o computador funciona normalmente, é só o teclado que envia os dados. Os dados referem-se a cada incidente que teve lugar no teclado. Como incidente considera-se a acção de carregar ou desprender a tecla. No caso de carregar na tecla, envia-se o seu "scan code". Cada tecla possui exactamente um scan code, o que compõe o mapa de scan codes. No caso de desprender a tecla, primeiro envia-se o byte especial 240 (hex F0), e a seguir o scan code do dado da tecla. Então, a acção normal de inscrever um carácter do teclado fará com que sejam enviados 3 bytes. No caso de manter a tecla carregada durante mais tempo, o seu scan code repetir-se-á com a frequência de repetição actualmente ajustada. Quando se desprender, o byte 240 será enviado, e finalmente o scan code. Seria um protocolo simples e agradável, se não houvesse certas teclas especiais, como Home, End, setas etc. Quando se carrega na tecla especial, envia-se o byte 224 (hex E0), e a seguir o seu scan code. Quando a tecla especial se desprende, envia-se a sequência 224, 240 (hex E0, F0), e a seguir o scan code da tecla. As teclas normais e especiais são comuns para todos os sistemas de teclados nacionais, de acordo com o mapa de scan codes. Para complicar as coisas mais ainda, existem duas teclas "super-especiais", Print Screen e Pause, que provocam o envio de toda a sequência de caracteres. Do ponto de vista da pessoa que faz o suporte lógico para a comunicação do teclado, é melhor fingir que estas teclas não existem.
O microcontrolador controla as linhas DATA e CLK durante todo o tempo, captando todos os dados. Os dados são guardados directamente na memória interna não-volátil, sem qualquer análise. Graças a isso, o utilizador poderá saber mais tarde sobre todos os incidentes que tiveram lugar no teclado. Quando o utilizador decidir que o processo de captação foi concluído e quando carregar no botão, o keylogger de hardware passará ao modo de descarga. O teclado deverá ser desligado antes. Caso contrário, começará a interpretar o fluxo de dados. Nesse caso o Keylogger começará a transmitir os dados da memória interna através da simulação do teclado. A aplicação KeyGrab deve ser uma aplicação activa no sistema para interpretar o fluxo de dados do keylogger de hardware. As teclas normais são enviadas directamente através do scan code, enquanto as teclas estendidas são enviadas através do código de dois bytes.