LoginSignup
14
5

More than 5 years have passed since last update.

Linuxで使えるキーロガーをPythonで作ってみた

Last updated at Posted at 2018-06-16

はじめに

エディタよりもターミナルを触る時間のほうが長い今日この頃。
「ターミナル上での操作を記録させたいな…」と思い、作ってみた。

キーロガーって?

キーボードの入力を記録してくれるシステム。
悪用されることがほとんどだけど、個人的に使うくらいなら便利になるのでは?
ただ、すべての入力が記録されるため、セキュリティに気をつけたり、パスワードの入力を避けるたりする必要がある。

前準備

まずは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

作ってみた

参考サイト

参考にさせてもらったのは、以下のサイトたち。

それぞれの役割を少し説明

コード

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_Lspace、方向キーがそのまま反映される。
可能であれば、変換したら日本語が入力できるようにしたいなぁ。
そうすればターミナル上以外にも使いみちができるし。
少しずつ進めていくか。

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5