ロギングツールの検討

昨日の続き。単純に打鍵した文字だけではなく押した時間と離した時間まで記録するツールの検討。

セキュリティ

いわゆる悪意を持ったソフト(マルウェア)としてのキーロガーはたくさんあるが、打鍵の傾向を分析する目的でキーログを取るソフトは無いようだ。マクロ系のツールとして打鍵記録を保存するものもあるが、これは「保存される打鍵シーケンスをユーザが意識している」ので少し毛色が違う。これから作るツールがマルウェアとは違うと主張しても、打鍵シーケンスがパソコン上に記録される時点でセキュリティ上の問題は付きまとう。

ログの暗号化などが考えられるが、少なくともデフォルトでは詳細ロギングはオフにして後から切り替えられるようにするべき。

ログの形式

ログは以下の3種類。

  • 打鍵数のログファイル
  • 打鍵シーケンスのログファイル
  • 打鍵対象のアプリケーションリスト

打鍵対象のアプリケーションが保存されるの機能は「打鍵のtomo」の感想からそれなりに好評と感じたので残すことにする。ファイル形式はXMLにして、CSV形式の出力もできるようにする。

打鍵数のログは指定した時間ごとにグルーピングして時間ごとの変移を確認できるようにする。打鍵シーケンスは押した時間と離した時間を記録。押した時間でソート。

打鍵数用ログ
<span date="2007/1/1" from="10:47:20" to="10:48:20">
  <count num="25" appid="3" />
  <count num="83" appid="4" />
</span>
<span> ... </span>
打鍵シーケンス用ログ
<key str="a" code="65">
  <push date="2007/1/1" time="10:47:10.312" />
  <release date="2007/1/1" time="10:47:10.521" />
</key>
<key> ... </key>
アプリケーションリスト用ログ
<app id="3">
  <path>c:\windows\notepad.exe</path>
  <view>メモ帳</view>
</app>
<app> ... </app>

詳細ロギングをはじめるトリガ

詳細ロギングは基本的にタイピング練習など一部の限られた時間だけで行われるはず。そして、一回一回の練習を何らかの形で区別できるような情報をログに残しておくと後から比較分析しやすい。もっとも単純なやり方だと、ロギング開始と終了をマウスクリックなどで知らせる。これ以外では何らかの(あるいは特定の)キー(あるいは特定シーケンス)を押したらスタートし、特定キーで終了。他にはある一定以上の速度で打ち始めたら詳細ロギングを始め、何も打たずに一定時間経過したら終了、などだろうか。

一回の練習ごとにタグ(QWERTY、飛鳥配列とか)みたいなものをつけられてもよいかも知れない。要検討。

表示GUI

基本的な以下のような情報以外はIEコンポーネントを使おうと思う。

  • 今日の打鍵数
  • 昨日の打鍵数
  • 今押しているキー
  • 一つ前のキー
  • アプリケーションリスト総数
  • 今日打鍵対象になったアプリケーション数

折れ線グラフにするものは例えば下のようなもの。

  • 今日の1時間ごとの打鍵数
  • 1ヶ月間の打鍵数の推移
  • アプリケーションごとの打鍵数の推移

グラフの表示にはFlashを使う。
XML/SWF Charts

Software developers may redistribute unregistered copies of XML/SWF Charts within other software products, with the copyright attached.

再配布おk

この前図にしたような打鍵のタイミングのグラフは上記ライブラリのFloating Barを使ってもできそうだが、もう少しカスタマイズしたいのでXHTML+JavaScriptになると思う。

(ロギングと打とうとして何度もロリって打ってしまったorz)