使用语言:Python2.7
使用库:pythoncom,pyhook,win32clipboard,ctypes
使用范围:WindowXP以上
作者:天象独行
键盘记录功能,在终端运行纪录键击信息且输出。
如何确定记录哪个窗口?
怎么记录键盘操作?
系统的每个窗口的句柄是唯一的,可以使用句柄来定位窗口,使用钩子来监控键盘操作。编写钩子子程序来记录键盘操作。
**注释:“钩子是Windows 的消息处理机制中的一个监视点,应用程序可以在
这里安装一个监视子程序,这样就可以在系统中的消息流到达目的窗口过程前监控它们。”**
见附件
5.1;运行代码;
5.2;在任意窗口敲击键盘。
整个代码分为两个自定义函数。get_current_process()和KeyStroke(event)。其中前者是用来获取当前窗口的一些信息并且输出到界面当中。比如:进程PID,窗口进程等等。后者便是需要放入到钩子当中的子程序代码。用来记录键盘敲击的消息并且输出。下面我们来具体的分析一下这两个函数:
get_current_process() 函数当中主要是使用了windows API 函数进行操作。下面我来逐步阅读。首先使用GetForegroundWindow()函数来检索当前窗口的句柄。通过这里获取的句柄来通过函数GetWindowThreadProcessId() 来查询窗口的线程标识且保存在变量process_id 当中。解下来通过create_string_buffer() 来创建两个固定大小(512字节)的空间。用来保存进程信息,窗口标题信息。且通过OpenPress() 来打开窗口对象。并且通过GetModuleBaseNameA,GetWindowTextA来获取对应信息。之后print 输出。
在分析KeyStroke自定义函数之前,我们先看看库PYHOOK。
首先,我们来看一下pyHook库当中的一个类HookManager()。它的功能是注册和管理底层鼠标和键盘事件的回调。我们来看看其中的一些包含的方法。KeyDown 作用是将一个 将给定的函数注册为此键盘事件类型的回调函数,HookKeyboard方法作用是开始监视键盘事件。知道了这些之后。我们就很清楚的知道了该如何去记录一个键盘事件了。首先,我们编译一个自定义函数KeyStroke。该函数的功能是提取出键盘信息且输出。那么问题来了。刚刚我们说到,函数KeyStroke是提取键盘信息的。那么这里的键盘信息是从哪里来的呢?这里的参数event不是由您手动设置的,而是供事件处理程序读取和操作的。解下来就是利用pyHook库当中的类HookManager()来去监视键盘事件,将自定义函数KeyStroke挂在到钩子当中即可。通过pythoncom库当中的PumpMessages来抽取所有消息.
注释:知识点查询
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getforegroundwindow
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowthreadprocessid
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess
http://pyhook.sourceforge.net/doc_1.5.0/
http://timgolden.me.uk/pywin32-docs/pythoncom.html
文章参考书籍“Python黑帽子黑客与渗透测试编程之道”
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
admin | 50.00 | 0 | 2020-10-26 15:03:48 | 支持分享 |
打赏我,让我更有动力~
Key.7z File Size:0.001M (Download Count:7)
© 2016 - 2024 掌控者 All Rights Reserved.