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.

Keylogger de Hardware Open Source

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:

  • experiência básica na electrónica (sobretudo com respeito a hardware)
  • ferro de soldar para circuitos integrados
  • programador de microcontroladores (compatível com a família Atmel AT89CXX51)
Keylogger de Hardware Open Source - subconjuntos

Os seguintes subconjuntos são indispensáveis para a realização deste projecto:

  • microcontrolador Atmel AT89C2051 (ou AT89C1051, AT89C4051)
  • memória EEPROM tipo AT24C512 (ou compatível)
  • oscilador de cristal 12 MHz
  • 2x condensador 33p
  • condensador 10 uF
  • resistência 10 k
  • botão pequeno
Keylogger de Hardware Open Source - tomada e ficha PS/2 (p.ex. do cabo)

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.

Keylogger de Hardware Open Source - experiência básica na electrónica (sobretudo com respeito a hardware)

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.

Keylogger de Hardware Open Source - a soldadura

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.

Keylogger de Hardware Open Source - conectores

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).

Keylogger de Hardware Open Source

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.

Keylogger de Hardware Open Source - instalação 1

Encontre o conector do teclado PS/2 no computador.

Keylogger de Hardware Open Source - instalação 2

Desligue o teclado.

Keylogger de Hardware Open Source - instalação 3

Ligue o keylogger de hardware no lugar do teclado.

Keylogger de Hardware Open Source - instalação 4

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.

Keylogger de Hardware Open Source - Modo de captação 1

Iniciar a aplicação KeyGrab.

Keylogger de Hardware Open Source - Modo de captação 2

Ligue o Keylogger de Hardware no lugar do teclado. Não ligue o teclado.

Keylogger de Hardware Open Source - Modo de captação 3

Clique na barra de título da aplicação KeyGrab para activá-la.

Keylogger de Hardware Open Source - Modo de captação 4

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.

Keylogger de Hardware Open Source - Modo de captação 5

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.

Keylogger de Hardware Open Source - Análise de dados

1 - A posição na memória ocupada por um dado captado (formato hex).
2 - Tecla captada.
3 - Incidente captado - o de carregar na tecla ou de desprender a tecla.
4 - Scan code da tecla no barramento PS/2 (formato hex).
5 - Última posição guardada na memória (formato hex).
6 - Tamanho da memória não-volátil EEPROM (em kilobits).

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

Keylogger de Hardware Open Source - KeyGrab

É 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.

Responsabilidade legal

  1. Cada país tem a sua própria legislação relativa ao registo dos dados provenientes do teclado. O desconhecimento da lei não desobriga do seu cumprimento. É favor conhecer o Contrato de Licença do Utilizador.
  2. A empresa KeeLog não assume qualquer responsabilidade pelos danos e prejuízos ou perda de saúde ou bens, resultantes da utilização deste keylogger de hardware.
  3. O Keylogger de Hardware Open Source não deve ser utilizado para a captação ilegal dos dados alheios, sobretudo senhas, dados bancários, correspondência confidencial, etc. Em muitos países o referido é considerado infracção.

Aquisição de dados

  1. O Keylogger de Hardware tem 64 kB da memória não-volátil tipo EEPROM. Quando esta memória estiver cheia, iniciar-se-á uma nova gravação a partir da primeira localização da memória. Os dados mais antigos perder-se-ão.
  2. Os primeiros 128 bytes da memória ficam reservados para os dados de configuração, sobretudo o tag que contém o endereço da última gravação na memória. Este tag é actualizado cada 10 segundos aproximadamente.
  3. Não deixe o keylogger de hardware ligado no modo de captação quando não é preciso. Se o fizesse, a memória ficaria cheia sem necessidade e os dados antigos, muitas vezes importantes, poderiam ficar sobrescritos.

Transmissão de dados

  1. Para a descarga de dados do keylogger de hardware é preciso um computador PC de ao menos 100 MHz com o sistema operativo Windows 9X/Me/XP/2000 instalado.
  2. Para a descarga de dados do keylogger de hardware utiliza-se a simulação do teclado. Por este motivo o teclado real deverá estar desligado durante a transmissão.
  3. Durante a descarga de dados a aplicação activa deve ser KeyGrab. Caso contrário, o sistema Windows ou outra aplicação activa estarão a interpretar cada toque na tecla que ocorrer.
  4. Os dados registados no modo de captação são reproduzidos em ordem cronológica inversa para que se possa demonstrar os dados mais recentes no início do processo de transmissão. Para poder recuperar os dados mais antigos, é indispensável esperar até que termine todo o processo de transmissão. O processo de descarga de dados pode demorar até 20 minutos.
  5. A descarga de dados deve ser concluída carregando no botão outra vez. É preciso fazê-lo quando os dados começarem a ser duplicados.

Funcionamento do teclado PS/2

  1. O funcionamento do teclado tipo PS/2 é mais complicado do que possa parecer no início. Isto pode ser observado ao analisar os dados brutos guardados por Keylogger de Hardware. Cada vez que se carregue numa tecla, o teclado gera um carácter, o chamado "scan code". Cada vez que se desprenda a tecla, o carácter será gerado novamente, mas precedido pelo carácter 240 (hex F0). Também existem as teclas estendidas, para as quais se usa o carácter 224 (hex E0). Mais informação está disponível na secção Protocolo de teclado PS/2.
  2. Keylogger de Hardware Open Source tem 64 kB de memória, o que não significa porém, que possa recordar 64 mil toques nas teclas. Uma sequência de carregar e desprender a tecla ocupa 3 bytes para uma tecla normal e 5 bytes para uma tecla estendida. O registo foi optimizado consideravelmente nas versões comerciais.

Bases

Keylogger de Hardware Open Source - sinais do barramento PS/2

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.

Keylogger de Hardware Open Source - formas de onda

Dados no barramento

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.

Registo de dados

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.