##はじめに
エディタよりもターミナルを触る時間のほうが長い今日この頃。
「ターミナル上での操作を記録させたいな…」と思い、作ってみた。
##キーロガーって?
キーボードの入力を記録してくれるシステム。
悪用されることがほとんどだけど、個人的に使うくらいなら便利になるのでは?
ただ、すべての入力が記録されるため、セキュリティに気をつけたり、パスワードの入力を避けるたりする必要がある。
##前準備
まずはPython
があるか確認
Python --version
Python3 --version
次に、pip
の確認
-
pip
とは:pythonのモジュールがあるパッケージを簡単にインストールできるコマンド
pip -V
なければインストール(下記はUbuntuでの操作)
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
最後に、今回使うパッケージのpyxhook
をインストール
sudo pip install pyxhook
##作ってみた
###参考サイト
参考にさせてもらったのは、以下のサイトたち。
- http://whitelily6u6.hateblo.jp/entry/2018/01/14/233327
- Github:(https://github.com/JeffHoogland/pyxhook)
- ASCIIコード:(http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html)
それぞれの役割を少し説明
-
http://whitelily6u6.hateblo.jp/entry/2018/01/14/233327
今回作成するファイルのコードは、ほとんどここから。
「どういう風に動くのか」を説明してくれる動画があるため、作る前に確認しておくことをオススメ。 - Github:(https://github.com/JeffHoogland/pyxhook)
pyxhook
モジュールを用いたキーロガー作成の公式(?)情報が乗っている。 - ASCIIコード:(http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html)
今回のキーロガーでは記録を止めるのにASCIIコードを使う。
どのコードで止めるか決めるためにも読んでおこう
###コード
Key_log_en.py
import pyxhook
# install module
log_file = 'user/log.txt'
# setting log file
def kbevent(event):
# runninf function when pressed anything keys on keybord
log = open(log_file,'a')
log.write(event.Key)
# output log_file(/home/kaitaku/today_log.txt)
if event.Ascii == 94:
log.close()
hookman.cancel()
#if input ^, stop run
#customise number
hookman = pyxhook.HookManager()
# def HookManager
hookman.KeyDown = kbevent
# if input keys on keybord,runnning `kbevent` function
hookman.HookKeyboard()
# setting HookKeyboard
hookman.start()
# start Hookmanager
Key_log_jp.py
import pyxhook
#使用するモジュールの指定
log_file = 'user/log.txt'
#記録するファイルの設定
def kbevent(event):
#関数の定義
log = open(log_file,'a')
log.write(event.Key)
#ログファイルに記録
if event.Ascii == 94:
log.close()
hookman.cancel()
#^が入力されたら終了
#なにで終了させるかは数字の部分を変えれば個人で設定できる
hookman = pyxhook.HookManager()
#HookManagerの定義
hookman.KeyDown = kbevent
#キーボード入力時、kbeventを起動
hookman.HookKeyboard()
#HokKeyboardの設定
hookman.start()
#Hookmanagerの開始
###使い方
ターミナルで
python Key_log.py
(やめるときは^)
##今後の課題
現状はキーボードの入力をそのまま反映するだけ。
Ctrl_L
やspace
、方向キーがそのまま反映される。
可能であれば、変換したら日本語が入力できるようにしたいなぁ。
そうすればターミナル上以外にも使いみちができるし。
少しずつ進めていくか。