LoginSignup
0
2

More than 5 years have passed since last update.

Python3でキーロガーを作ってみた

Posted at

始めて投稿します。
始めての投稿なので、この表現はまずいとか、
こうしたら見やすくなるとかありましたら、
教えていただけるとありがたいです。

作ったきっかけ。

・PythonでGUIのものを作ってみたかった。
・Githubも利用して、ソースコードを上げたかった。
・(作成するもの自体は何でも良かった感はあるきがする。)

作成時間

2~3週間程度。
基本的には仕事の合間で作ってた感じ。

ソースコード

苦労したとことか、詰まったこととか

●Pygame使ってみて

最初にTkinter使おうと思ったけど、
スレッドの処理とかよくわからないので、
簡単にかけそうなPygameを利用しました。
中身的にはゲーム作ったりするようなので、
GUI系の関数とかいっぱいあって使いやすかったです。

●Pyhookedについて

Python3を使うにあたって、
Pyhookを使うのにいろいろしないといけないっぽいので
どこかの記事にあった手軽なPyhookedを利用しました。
あとPygameの中に入ってるEventだと非アクティブのときに
キーボードの入力取れないので、それでコレにしました。

●スレッドの処理について

・まずは、ちゃんとPyhookedの中にあるサンプルコードを
ちゃんと読めばよかったなと後悔しています。
いろいろマルチプロセスとか調べてみたけど、
イマイチ使い方わからなかったです。
次回ではないけど、次はリベンジしてみたいと思う。

・threadingの使い方で、ウィンドウを閉じたときに
窓が残り続けて、Pyhookedだけ動作していることが気になってたけど、それはThreadが閉じられたときに一人しか居ないと一緒に閉じてくれるデーモンスレッドってのでなんとかなった。

setDaemon(True)

●データの保存については

プログラムが動いてるうちは辞書に値を保存していく方向で、
ずっと起動しっぱなしだとだんだんメモリ食ってくのかなぁと思ったけど、とりあえずこの形で。
※スレッド間でのデータのやり取りとしては不適切らしいので、
 次回はちゃんとしたデータのやり取りを出来るようにしたいと思う。
また、プログラムの起動終了時の受け渡しについては、
はじめはDB使おうかなとも思ったけど、
そんな大規模じゃないしと思いCSVで保存することにしました。
あと、受け取れる値は、Pyhookedのソースコードに書いてあった対応キーだけに取ってます。
ここに関してはPyhookedのソースコードも弄らないと取れなさそうなので、
今回は諦めました。
(英語読めないので、ソースコードの利用規約とかよくわからないしね)

大まかには以上になります。

作成した感想

Pythonってやっぱソースコード読みやすいし、
他人が書いたのもなんとなく把握しやすくて便利だと思いました。
JavaとCとVBSとか勉強しましたが、
とりあえず業務でつかない限りはPython一択ですね。
あとプログラム起動するとわかるけど、GUIはとてもクソです。
今回は機能だけちゃんと動けばいいかなぁと思ってたので、
そこまでこだわらなかったです。
今後GUIで機能の多いもの作成する際には、
凝ったデザインも作ってみたいですね。

以上になります。

0
2
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
0
2