Keelogは、ハードウェアキーロガーファミリーの早期バージョンを一般に公開することを決定しました。これには、フルファームウェア&ソフトウェアのソースコード、キーロガーハードウェアの電気スキーマ、およびドキュメントが含まれています。このPS/2キーロガーは、世界中の何百人もの人々によって組み立てられ、使用された100%動作およびテスト済みのデバイスです。このハードウェアキーロガーの操作は、KeyGrabber PS/2に類似しています。記録されたキーストロークデータの取得および分析のためのアプリケーションKeyGrabを提供しています。ただし、このDIYハードウェアキーロガープロジェクトは、すべての欠陥を含み、現状有姿で提供され、一切の保証はありません

オープンソースのDIYハードウェアキーロガー

開始する前に、このリストを確認して、このハードウェアキーロガープロジェクトを達成するために必要なすべてのツールとスキルを持っているかどうかを確認してください:

  • 電子ハードウェアにおける経験
  • はんだごて
  • マイクロコントローラープログラマー(Atmel AT89CXX51ファミリーをサポート)
オープンソースのDIYハードウェアキーロガー - コンポーネント

ハードウェアキーロガープロジェクトには、次のコンポーネントが必要です:

  • Atmel AT89C2051 マイクロコントローラー(または AT89C1051、AT89C4051)
  • AT24C512シリアルEEPROMチップ(または互換性あり)
  • 12 MHz クリスタル
  • コンデンサー 2 x 33p
  • 10 µFコンデンサ
  • 10 kΩ 抵抗
  • 小さなプッシュボタン
オープンソースのDIYハードウェアキーロガー - PS/2 ケーブル

最後に、ハードウェアキーロガーのケーシングが必要です。 PS/2延長ケーブルと4インチの熱収縮チューブを購入するのが良いアイデアです。これらは、すでに作成されたキーロガーの周囲に熱的に巻き付けることができます。

最初にキーロガーマイクロコントローラファームウェアをプログラムします。 プログラマーソフトウェアを起動し、AT89C2051を選択し、バイナリファイルまたは16進バージョンでフラッシュを書き込みます。 8051コンパイラを使用して、ソースコードを再コンパイルすることもできます。 はんだ付けはおそらくプロジェクトの中で最も難しい部分であり、キーロガーのハードウェアはできるだけ小さくする必要があります。以下のキーロガーのハードウェア図面は、コンポーネント間の接続方法を示しています。

オープンソースのDIYハードウェアキーロガー - 電子ハードウェアにおける経験

マイクロコントローラーとEEPROMから始めて、コンポーネントをはんだ付けしてください。未使用のICピンは取り外すことができます。押しボタンがアクセス可能であることを確認してください。コンデンサを取り付ける際は、適切にバイアスがかかっていることを確認してください。

オープンソースのDIYハードウェアキーロガー - はんだ付け

ハードウェアキーロガーをできるだけコンパクトにし、ただしショートサーキットを避けてください。デバイスが完成した後は取り外しが難しくなります。主要部品が接続された後、キーロガーサーキットは写真に示されているプロトタイプにやや似ているべきです。

オープンソースのDIYハードウェアキーロガー - コネクタ

最後に、PS/2コネクタをキーロガーにはんだ付けします。PS/2延長ケーブルを2つに切断し、それぞれを別々にはんだ付けするのが良いアイデアです。ケーブルの一部に熱収縮チューブを取り付けることを忘れないでください。キーボードとコンピュータの両方のコネクタ(CLK、DATA、VCC、GND)に使用されるPS/2ピンをすべて接続します。

オープンソースのDIYハードウェアキーロガー

ハードウェアキーロガーの周りに熱絶縁チューブを引く前に、コンポーネント間に少しの接着剤や樹脂を入れてデバイスをより堅牢にするのは良い考えです。最後に熱絶縁チューブを引き、はんだ付けされたコンポーネントに巻きつくまで加熱し、ボタンがアクセス可能になるように小さな穴を切り取ります。

ハードウェアキーロガーは、キーボードとコンピューターの間に挿入されると、キーデータの記録を開始します。キーロガーはコンピューターの動作に完全に透明であり、記録モードのソフトウェアによって検出されることはありません。キーボードから送信されたすべてのキーデータは、64 kB ハードウェア不揮発性EEPROMメモリに記録されます。記録モードはコンピューターにインストールされているオペレーティングシステムと完全に独立しています。

オープンソースのDIYハードウェアキーロガー - インストール 1

コンピューターでPS/2コネクタを見つけます。

オープンソースのDIYハードウェアキーロガー - インストール 2

キーボードを切断してください。

オープンソースのDIYハードウェアキーロガー - インストール 3

キーボードの代わりにハードウェアキーロガーを接続してください。

オープンソースのDIYハードウェアキーロガー - インストール 4

キーボードをキーロガーに接続します。コンピューターの電源を入れるとデータの記録が開始されます。

ハードウェアキーロガーがキーデータを記録したら、Windows 9X/Me/XP/2000を実行している任意のPCに取得できます。 ハードウェアキーロガーは、キーボードのキーストロークをシミュレートすることでこれを行います。 送信されたキーストロークデータは、KeyGrabアプリケーションによって取得されます。 これらのデータがコンピュータに送信されると、処理および分析が可能です。 データダウンロードを開始するための手順に従ってください。

オープンソースのDIYハードウェアキーロガー - 記録モード 1

KeyGrabアプリケーションを実行します。

オープンソースのDIYハードウェアキーロガー - 記録モード 2

キーボードの代わりにハードウェアキーロガーを接続してください。キーボードを接続しないでください。

オープンソースのDIYハードウェアキーロガー - 記録モード 3

KeyGrab タイトルバーをクリックして、アクティブなアプリケーションにします。

オープンソースのDIYハードウェアキーロガー - 記録モード 4

データのダウンロードを開始するには、ハードウェアキーロガーのボタンを押してください。 送信中にアクティブなアプリケーションを変更しないでください。 送信を終了するには、ボタンをもう一度押してください。 PCに希望のキーストロークデータがダウンロードされたときにこれを行ってください。

オープンソースのDIYハードウェアキーロガー - 記録モード 5

ハードウェアキーロガーを取り外し、PS/2キーボードを再接続してください。

KeyGrab のメインテーブルにキーストロークデータをダウンロードする際、記録中にログされたキーデータを表示するために自動的に前処理されます。データは降順で送信され、最近押されたキーを最初に表示します。以前に発生したキーストロークは後で送信されます。テーブルを手動で分析するか、一部の検索オプションを使用できます。

オープンソースのDIYハードウェアキーロガー - データ分析

1 - キーボードイベントによって使用されるキーロガーハードウェアメモリ内の位置(16進形式)。
2 - キャプチャされたキーストロークを記録しました。
3 - 発生したイベント - キーの押下またはリリース。
4 - PS/2 バス上のキーストロークスキャンコード(16進形式)。
5 - 記録中に書き込まれた最後のメモリ位置(16進数形式)。
6 - キーロガーハードウェアのメモリサイズ(キロビット単位)。

ユーザーにとって興味深い唯一の列はキー(2)とアクション(3)です。 これらの列は、押されたキーと解放されたキーをコード化します。 録画中にキーストローク履歴を表示するには、バーをスクロールします。 キーロガーデータは逆の時系列で送信されます(最新のキーストロークデータが最初に表示されます)。

Windows 9X/ME/2000/XP向けのDIYハードウェアキーロガーデータ取得および分析アプリケーション:
KeyGrab.zip (0.7MB)

AT89C2051マイクロコントローラーの完全なソースコード:
ソースコード - diy.asm

プリコンパイルされたAT89C2051ハードウェアキーロガーファームウェアも利用可能です:
BINファイル - diy.bin, HEXファイル - diy.hex

オープンソースのDIYハードウェアキーロガー - KeyGrab

ハードウェアキーロガーを使用する際に発生する問題を回避するために、このセクションをお読みいただくことをお勧めします。

法的責任

  1. 国にはキーボードデータの記録に関する異なる法律があります。法律を知らないことはそれを守らないことを許可しません。当社の利用規約をお読みください。
  2. このハードウェアキーロガーの使用によって引き起こされた損害や被害について、当社は一切の責任を負いません。
  3. このデバイスを使用して、特にパスワード、銀行データ、機密文書など、所有権を持っていないデータを傍受することは違法です。ほとんどの国がこれを犯罪と認識しています。

キーデータの記録

  1. ハードウェアキーロガーには64 kB の不揮発性EEPROMメモリが搭載されています。このメモリがいっぱいになると、書き込みは最初のメモリ位置から再開されます。最も古いデータが失われます。
  2. メモリの最初の128バイトは、最後のメモリアクセスアドレスの保存などの構成データのために予約されています。最後のメモリアクセスアドレスは約10秒ごとに更新されます。
  3. 不要な場合はハードウェアキーロガーを記録モードで接続したままにしないでください。これによりメモリが使用され、古い、時に重要なデータが上書きされます。

キーデータの伝送

  1. キーストロークデータを取得するには、少なくとも100 MHzのペンティアムクラスコンピューターとWindows 9X/Me/XP/2000がインストールされている必要があります。
  2. ハードウェアキーロガーはキーボードをシミュレートしてデータをコンピュータに送信します。実際のキーボードは送信中に切断する必要があります。
  3. アクティブなアプリケーションはKeyGrabでなければなりません。それ以外の場合、Windowsまたは別のアプリケーションがハードウェアキーロガーからのシミュレートされたキーストロークを解釈し始めます。
  4. キーストロークデータは逆の時系列で取得されます。これは最新のデータを最初に提供するためです。非常に古いキーボードデータを取得するにはしばらくお待ちいただく必要があります。全体の転送プロセスには最大で20分かかる場合があります。
  5. 送信は再度ボタンを押して手動で終了する必要があります。キーストロークデータが重複し始めたときに行ってください。

PS/2キーボード操作

  1. PS/2 キーボードは思っているよりも少し複雑です。ハードウェアキーロガーによって記録された生データを分析することで、これを気づくことができます。PCキーボードはキーが押されるたびに1文字を生成します。キーが離されると、文字は直前の 240 (F0 hex) 文字を前にして再び生成されます。224 (E0 hex) 文字を使用する拡張キーもあります。このことについては、短い PS/2 キーボードプロトコル で詳しく読むことができます。
  2. ハードウェアキーロガーには64 kB のメモリが搭載されていますが、これは64千のキーストロークを記憶できることを意味しません。1つのキープレスリリースシーケンスには、標準キーに3バイト、拡張キーに5バイトが必要です。ログは商用バージョンで最適化されています。

背景

オープンソースのDIYハードウェアキーロガー - PS/2 シグナルライン

もしPS/2のキーボードケーブルを切断した場合、おそらく内部に6本のワイヤーがあるでしょう。そのうちの4本だけが意味を持ちます。2本は電源ラインであり、コンピュータの電源供給からのグラウンド(GND)と+5ボルト(VCC)です。残りの2本は非同期伝送ラインであり、データライン(DATA)とクロックライン(CLK)です。これらのラインが右図のDIN(a)およびminiDIN(b)コネクターピンに対応しているのがわかります。伝送は双方向ですが、キーボードが優れています。キーボードは押されたキーと離されたキーに関する情報を送信します。データチャンクは1バイトだけで、開始ビットで先行し、パリティビットとストップビットで後続します。キーボードは連続するビットをDATAラインに配置し、CLKラインに負のインパルスでクロックします。クロック周波数は10...30 kHzです。これは非常に優れたシリアルプロトコルであるはずですが、コンピュータが時折キーボードに情報を送信したいときがあります。そのような場合、PCは一時的にCLKラインを低に引き、キーボードがインパルスを生成し始めるのを待ちます。これらのインパルスが始まると、PCは自身の文字をDATAラインにクロックインします。下図には、キーボードからホスト(a)およびホストからキーボード(b)への伝送の状態図が示されています。このプロトコルには、伝送の中断、文字の繰り返しなどの例外がもちろんありますが、これらは非常に稀なケースです。

オープンソースのDIYハードウェアキーロガー - 波形

バスデータ

実際にキーボードのラインを通じて送信されるのは何ですか? 起動時には、キーボードとコンピューターの両方が初期化データを送信し、正常であることを通知します。コンピューターが正常に稼働しているとき、キーボードだけがデータを送信します。これは、発生したすべてのイベントに関するデータです。イベントとは、キーが押されたり離されたりすることを指します。標準キーが押されると、その「スキャンコード」と呼ばれるものが送信されます。すべてのキーには正確に1つのスキャンコードがあり、スキャンコードのマップが作成されます。キーが離されると、まず特別なバイト240(F0 hex)が送信され、次にキーのスキャンコードが送信されます。したがって、標準のキーストロークはラインを通じて3つの文字を送信します。キーを一定時間押し続けると、そのスキャンコードが設定された繰り返し遅延で継続的に生成されます。最終的に離すと、240(F0 hex)の文字が送信され、その後にスキャンコードが送信されます。 このプロトコルは、ホーム、エンド、矢印など、標準のPCキーボードに特殊なキーが存在しなければ、依然として優れたものとなるでしょう。特殊なキーが押されると、バイト224(E0ヘックス)が生成され、その後にスキャンコードが続きます。特殊なキーが離されると、シーケンス224、240(E0、F0)が発生し、その後にスキャンコードが続きます。通常のキーと特殊なキーは、スキャンコードのマップに関して、すべての国のキーボードレイアウトで共通です。さらに複雑になるストーリーにするために、Print ScreenとPauseという2つの超特殊なキーが存在し、これらのキーを押すと複数のスキャンコードのシーケンスが送信されます。キーボードインタフェースにとっては、これらのキーが存在しないと想定するのが最善です。

データロギング

マイクロコントローラーは常にDATAおよびCLKラインを監視し、すべてのデータを取得します。 データはラインを下っていくときに不揮発性EEPROMメモリに記録されます。 これにより、ユーザーは後でキーボード上のすべてのイベントについて知ることができます。 ユーザーが録音が終了したと判断し、ボタンを押すと、ハードウェアキーロガーは再生モードに切り替わります。 キーボードは切断されている必要があります。そうでないと、データフローを解釈します。 キーロガーは内部ハードウェアメモリからキーデータをシミュレートし始めます。 KeyGrab アプリケーションは、キーロガーハードウェアからのデータフローを処理するためにアクティブである必要があります。 通常のキーはメモリに書かれたかのようにシミュレートされ、特殊キーは2バイトの16進コードを使用して送信されます。