USB Raw Gadget、USBデバイスのエミュレートを可能にするカーネル用モジュール

USBRawガジェット

すでにいくつかの機会に ここのブログでは、AndreyKonovalovが行った作業について話しました。 (Google開発者)Linuxで、LinuxカーネルのUSBドライバーとWifiデバイスの障害をタイムリーに検出した彼の仕事から。

現在、彼は現在取り組んでいます 彼が名前を付けたLinuxカーネル用の新しいモジュールの開発 「USBRawガジェット」 これは、ユーザースペースでUSBデバイスをエミュレートできるユーティリティとして説明されています。

それに加えて このモジュールをメインのLinuxカーネルに含めるためのアプリケーションが検討されていると述べています。 Google Raw Gadgetは、syzkallerツールキットを使用したUSBカーネルスタックのファジングテストを簡素化するために、Googleによってすでに使用されています。

当初、私はGadgetFS(ダミーHCD / UDCモジュールと共に)を使用してファジング用のUSBデバイスをエミュレートしていましたが、その後、カスタムの書き込みインターフェイスに切り替えられました。

異なるインターフェースを実装する動機は、ユーザースペース用のUSBガジェットレイヤーへのショートカットとやや生のアクセスを提供することでした。ここで、各USB要求は応答のためにユーザースペースに渡されます。

USBRawガジェットについて

モジュールが新しいインターフェースの追加を処理します プログラミング カーネルサブシステムへ 「USBガジェット」と呼ばれ、GadgetFSの代替として開発されています。

新しいAPIの作成は、直接および低レベルのアクセスの必要性によるものです ユーザースペースからガジェットUSBサブシステムに接続し、可能なすべてのUSBリクエストを処理できるようにします(GadgetFSは、ユーザースペースに転送せずに、一部のリクエストを独自に処理します)。

USB Rawガジェットは、/ dev / raw-gadgetデバイスを介して制御されます GadgetFSの/ dev / gadgetと同様ですが、対話には疑似FSではなくioctl()ベースのインターフェイスが使用されます。

新しいインターフェイスには、ユーザースペースのプロセスによるすべてのUSBリクエストの直接処理に加えて、USBリクエストに応答してデータを返す機能もあります(GadgetFSはUSB記述子の正確さをチェックし、特定の応答を除外します。これにより、 USBスタッククリアテスト中のエラー検出)。

USB Rawガジェットでは、特定のUDCデバイスを選択することもできます (USBデバイスドライバー)と接続するドライバー、GadgetFSは最初に利用可能なUDCデバイスに接続します。

さまざまなUDCの場合、予測可能なエンドポイント名は、単一のデバイス内のさまざまなタイプの個別の通信チャネルにマップされます。

最後に、それについてもっと知りたい場合は、詳細と、USBRawガジェットで行われた変更のログを確認できます。 次のリンクで。

LinuxにRawGadget USBモジュールをインストールするにはどうすればよいですか?

システムでこのモジュールをテストできるようにすることに関心がある場合は、ここで詳しく説明する手順に従ってテストできます。

ダミーHCD / UDC用 (カーネル内で相互に接続されている仮想USBデバイスとホストコントローラーを構成するモジュール)。 ターミナルを開く必要があり、その中に次のコマンドを入力します。

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

これにより、ターミナルで次のコマンドを実行して、コンパイルするモジュールを含むフォルダーを取得します。

cd dummy_hcd

make

そして、次のようにインストールします。

./insmod.sh

モジュールを更新する場合は、次のようにします。

./update.sh

現在 カーネルモジュールをインストールしたい人のために。 ターミナルで、次のコマンドを実行して、これに必要なファイルを取得します。

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

これにより、ターミナルで次のコマンドを実行して、コンパイルするモジュールを含むフォルダーを取得します。

cd dummy_hcd

make

そして、次のようにインストールします。

./insmod.sh

モジュールを更新する場合は、次のようにします。

./update.sh

あなたはで仕事をチェックすることができます 次のリンク。 


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。