pythonでpyHookを使ってキーロガーを作る (Windows)
キーロガーを作るためにpythonのライブラリであるPyHookを用いる。
PyHookはネイティブWindowsAPIのSetWindowsHookExを使っている。
まずPyHookをpipでインストールしようと思ったがうまくいかなかった。
> pip install pyhook ERROR: Could not find a version that satisfies the requirement pyhook (from versions: none) ERROR: No matching distribution found for pyhook >
そこでwhlファイルで直接インストールするとうまくいった。
> pip install .\pyHook-1.5.1-cp37-cp37m-win32.whl Processing c:\-------------\pyhook-1.5.1-cp37-cp37m-win32.whl Installing collected packages: pyHook Successfully installed pyHook-1.5.1 >
それではキーの取得、出力を行ってみる
・ソースコード
from ctypes import * import pythoncom import pyHook import sys def Press(event): print(event.Key) if event.Key=='Q': sys.exit() return True hookins=pyHook.HookManager() hookins.KeyDown=Press hookins.HookKeyboard() pythoncom.PumpMessages()
・実行結果
> python sample.py F D F A A D >
PyHookパッケージの構造をまとめてみます。
・PyHookパッケージ
  |---HookManagerモジュール
  |---HookConstantsクラス: 内部ウィンドウフック定数を格納
  |---HookEventクラス: 一般的なフックイベントに関する情報を保持する
  |---MouseEventクラス: 一般的なマウスイベントに関する情報を保持する
  |---KeyboardEventクラス: 一般的なキーボードイベントに関する情報を保持する
  |---HookManagerクラス: 低レベルのマウス・キーボードイベントのコールバックを登録、管理する。
|---GetKeyStateメソッド
HookManagerクラス
|----HookMouseメソッド: マウスイベントの監視を開始する
|----HookKeyboardメソッド: キーボードイベントの監視を開始する
|----SubscribeKeyDownメソッド: 指定された関数をこのキーボードイベントタイプのコールバックとして登録する。
|----KeyDownクラス変数
(間違い等あればコメントよろしくお願いいたします。)