ユーザーのタイピング習慣からユーザーを識別しようとする単純なテキストボックスを使用してアプリを作成しました (キーを押す間隔、キーが保持されている間、キーストローク間の時間、つまり a->s は a->v よりも速いユーザーもいます) 、タイピングスタイルに応じて他の人は短くなります)。完璧にはほど遠いですが、スタイルの中程度から大きな違いを正しく識別します。
これを一種のセキュリティ モニターとして使用したいと考えています。ユーザーのタイピング スタイルが認識されたパターンに適合しない場合は、中央サーバーに報告してください。
もちろん、これをテストするための次のステップは、「通常の」タイピング習慣をキャプチャすることです。つまり、ブラウジング、アプリ間の切り替えなどです。
私が理解できないのは、すべてのアプリケーションのキーボード入力をキャプチャすることです(ログイン/ウェルカム画面、代替デスクトップなどを除く-それを解析する理由はなく、とにかく分析するのに十分な入力がない可能性があります)
免責事項:はい、これは禁止されているキーロガーを作成するのに危険なほど近いことを知っていますが、それを行いたい場合は、C++ でキーボード ドライバーを作成します。巨大な .Net MSIL アセンブリ。「それはキーロガーだ」というコメントをかわすことは間違いありませんが、壁にぶつかったので、どこかに尋ねる必要があります...
アプリを非表示にする必要はありません-しかし、理想的には、ユーザーの明示的な確認なしで入力をキャプチャできるようにしたいです(管理者によるインストールを超えて)-ユーザーの確認が必要な場合は、それが可能であれば(ただ)それで暮らすことができます拒否を監視して報告する方法があります。
これは.Netでも可能ですか? 私が見つけることができた唯一の例は、すべてのキーにイベントフックを追加することによって動作するかのどちらかであり、これは不格好に見え、エラーが発生しやすいと思います。- または - キーボードの状態をポーリングして、押されたキーを判断します。これは、a) キーを押す正確なタイミングが必要なため、キーアップ/ダウンイベントが必須であり、b) 厄介であるため、私にとっては良くありません。
フレームワークがこれを特に禁止するように設計されていても驚かないでしょう。その場合、イベントを提供するためにアンマネージ コードにフォールバックする必要があります。私は明らかに、マネージ コードを常に使用することを好みます。
どんな助けでも感謝します。
編集: Hans Passant の回答のおかげで、これは私がこれまでに見つけた最高のリソースです: http://www.codeguru.com/columns/vb/article.php/c4831