デバイスがUSBキーボードのふりをすることはできますか?


16

私が探しているもの:

USBポートに接続してクリップボードの内容を「入力」したときに、デバイスがキーボード/ HIDであると主張する方法はありますか?より正確に; それを実現するには何が必要ですか?

ユースケースの動機付け:

電話にパスワードキーパープログラムがありますが、デバイスからパスワードを読み取って別のコンピューターに入力しようとするのは面倒です。

バックグラウンド:

MTPがファイル転送をサポートする前にビルドされたAndroidデバイスがありますが、最近のアップグレードでサポートされるようになりました。これに基づいて、それが主張するUSB​​クラスはハードウェアで定義できず、ソフトウェアで定義する必要があります。

IIRC、このプロジェクトでは、これはあなたがいることを私に示している。決定的に建設されていなかったいくつかのUSBクラスとして話(私は株式カーネルと思われるものを含む)のAndroidデバイスを持っているかもしれない、それはカーネルの作業をせずにサポートして何USBクラス制御することができるが、私確かにわからない。

ホスト側(つまりPC)に関しては、キーボード(バーコードスキャナー、クレジットカード、スマート)であると主張するかなり難解なデバイスでも、PC、MacまたはLinuxのボックスにキーボード用の特別なドライブが必要なことはありません。カードリーダーなど)であるため、汎用ドライバーは、私が望んでいるものに対して十分であるはずです。

すべてのことは、私が探していることはハードウェアの観点から行うことができると主張していますが、ソフトウェアのサポートが存在することについてはほとんど言及せず、そのためのアプリがあるかどうかについては何も言いません。


2
携帯電話とコンピューターの両方でKeePass(AndroidではKeePassDroid、Linuxではkeepassxなど)を使用して、データベースファイルをそれらの間で同期するか、コンピューターからUSB経由で携帯電話のデータベースファイルにアクセスしてみてください。他のパスワードマネージャーには、「実際のコンピューター」に相当するものもあります。
TREE

@TREE:それはいくつかのケースでうまくいくかもしれませんが、特定のターゲットの使用法の1つは、PCに何かをインストールする機能がない場合です(アクセスなし、またはシステムログインパスワードのような鶏/卵の問題) 。
BCS

USBスティックから実行できるKeePassのポータブルバージョンもあります。これ、マウントされたAndroid USBストレージデバイスで動作する可能性がありますが、考えられるすべてのユースケースに対処しているわけではありません。

回答:


15

はい。これは間違いなく可能であり、PC上の変更やドライバーは必要ありません。OPが言及しているように、電話側のUSB識別は最終的にソフトウェアで行われます(このファイルhttps://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/compositeで.c)、および標準のUSBキーボードとして自身を識別するように変更できます。

この変更には、いくつかのことが必要です。

  1. パッチが適用されたUSBドライバーを備えた修正カーネル
  2. 変更されたUSBドライバーによって公開された一部のインターフェイスと通信できるAndroidアプリ。

あった数年前に発表された論文(題さ楽しさと利益のためにスマートフォンのUSB接続を活用ブルートフォースデスクトップのログイン画面に携帯電話を使用して説明しました)。彼らが使用した方法は、電話をUSBキーボードとして表示することでした。



github.com/pelya/android-keyboard-gadget ここに実装されました..また、必要なAndroidアプリも利用可能です
Abhigyan

2

これはあなたの質問に正確に答えるわけではありませんが、ユースケースでは役立つかもしれません。

InputStickを見てみたいかもしれません。Bluetooth経由でAndroidとペアリングするUSB​​サムドライブになります。コンピューターに接続すると、一般的なUSB HIDをエミュレートしてキーボードストロークを送信します。高度なJava APIでは、デバイス記述子を指定して、非標準の機能をエミュレートすることもできます。ハードウェアではなくソフトウェアで定義されているという良い例を提供できます。

参照用に、開発者はデモパスワードマネージャーなどのプログラム例にも取り組んでいます。


0

少なくとも、これには電話とPCの両方のソフトウェアが必要です。2つのソフトウェアは互いに通信する必要があります。私が現在知っているこのようなものは存在しません。

そして、PCがデバイスが本当にキーボードであると考えるには、デバイスがキーボードであることと、「キーボードとして使用する方法」をPCに伝える新しいドライバーが必要です。

私はそれが不可能だと言っているのではありません。なぜならこのようなことになると、ほとんど何でも可能だからです。私が言っているのは、現在、このようなものは存在しないということです。

USBはハードウェアとソフトウェアの両方であり、ソフトウェアのみの場合、Windows上のすべてのAndroidデバイスで同じUSBドライバーが機能しますが、そうではありません。USB大容量記憶装置とMTPは、デバイスではなくPC上のドライバーによって処理されます。MTPとUSBの両方の大容量ストレージを同時にサポートするデバイスは何ですか?デバイスはUMSとMTPをサポートできるが、外部SDカードがある場合にのみUMSをサポートできるという記事を見つけました。MTPおよびUMSを使用して外部SDカードをマウントすることはできません。MTPは内部ストレージ用です。そして、両方を同時に使用できることを確認または拒否できるものは読んでいません。

Windowsには既にドライバーがインストールされているため、キーボードが「デフォルト」仕様に従っている場合、キーボード用のドライバーをインストールする必要はありません。独自のドライバーが付属するキーボードがあります。私が言ったように、それは可能だろう。どのように行われるかはわかりません。ほぼ確実に、キーボードのように機能するためには少なくともカスタムカーネルが必要であり、PC側で追加のドライバーは必要ありません。

さらに、@ davidbbが可能であることに同意し、それが可能であると既に述べました。何かが可能かどうかを尋ねる質問の問題は、問題を解決することはありません。「WindowsでiOSアプリケーションをネイティブに実行することは可能ですか?」と言っているようなものです。これは理論的には可能ですが、現在これを行うものはなく、「通常のユーザー」(または上級ユーザーでさえ)がこれを実現するためにできることはありません。このサイトはユーザーを対象としているため、変更されたカーネルを作成するだけでよいと言うことは、誰にとっても有益な答えではありません。そのため、修正されたカーネルは存在しないため、質問に対する本当の答えはノーです。


IIRCでは、USB接続のAndroid側はソフトウェアで実行されます(同じハードウェアがUSB大容量ストレージデバイスとしてもMTPとしても機能するためには、ある程度の距離が必要です)。それに基づいて、デバイス側のみのドライバーが、デバイスが自身を汎用HIDとしてアナウンスさせないようにするにはどうすればよいですか?それが可能であれば、他のキーボードを処理する同じPC側のドライバーがそれを処理します(バーコードスキャナーやクレジットカードリーダーなどの場合と同様に)。
BCS

あなたのコメントに対処するために、回答に追加しました。
ライアンコンラッド

MTPが使用される前に構築されたAndroidデバイス(ハードウェア)は、MTP USBクラスとして動作するようになりました。したがって、デバイスが動作すると主張するクラスはソフトウェアで定義する必要があります。私がしている場合、私は覚えていないことができ、これまでのドライバインストールのキーボードので、何もPC側にインストールする必要はないはずです(Androidデバイスを接続するための非汎用ドライバまたはそのことについては)。これらを組み合わせると、私はよほとんどのハードウェアは、それを行うことができていることを確認してください。残っている唯一の質問は、ストックAndroidが必要なノブへのアクセスを提供しているのか、それともカスタムカーネルを構築する必要があるのか​​ということです。
BCS

再:第2編集。私はそれが何をするかを明確に知っている人を探していると思います。(最後の段落を一番上に移動できますか?)
BCS

この答えは間違っています。PC側でソフトウェアは必要ありません。メーカーがすべて同じベンダーID番号を使用するわけではないため、電話機ごとに異なるドライバが必要です。ただし、キーボードはタイプごとにホストによって認識されるデバイスの別のカテゴリに分類されるため、ベンダーIDは重要ではありません。VID / PID、デバイスタイプ、プロトコルなどはすべてアンドロイド側のソフトウェアに実装されており、カーネルソースとコンパイル結果をインストールする方法を持っている人なら誰でも変更できます。
クリスストラットン

0

あなたがしようとしているリモート統一。これは、キーボードとマウスとして電話を使用するのに最適なツールです。USBではなくwifiを使用します。電話とコンピューターには連携して動作するアプリがあります。私に最適です。また、フルバージョンを入手すると、多くの一般的なアプリケーションとの統合が得られます。


BIOSブートプロンプトにパスワードを入力するなど、実際にはどのような種類のクライアントもインストールできないような場合の解決策を探しています。
BCS 14



-1

InputStickは、Androidデバイス用に設計されたワイヤレスUSBレシーバーです。Androidアプリケーションは、USBキーボード、USBマウス、USBゲームパッドなど、さまざまな種類のデバイスをエミュレートできます。InputStickを使用すると、Androidアプリは物理デバイスでできることをすべて実行できます。入力、マウスポインターの移動、マルチメディアとゲームの制御。

情報はhttp://inputstick.com/で見つけることができます


1
これは広告のように見えます。この製品との関係は?
ダンヒューム14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.