Kann ein Gerät so tun, als wäre es eine USB-Tastatur?

16

Was ich suche:

Gibt es eine Möglichkeit, das Gerät als Tastatur / HID zu bezeichnen, wenn es an einen USB-Anschluss angeschlossen ist und den Inhalt der Zwischenablage "eingibt"? Genauer; Was würde es brauchen, um es zu verwirklichen?

Motivierender Anwendungsfall:

Ich habe ein Kennwortverwaltungsprogramm auf meinem Telefon, aber es ist ärgerlich, das Kennwort vom Gerät lesen und versuchen zu müssen, es auf einem anderen Computer einzugeben.

Hintergrund:

Ich besitze ein Android-Gerät, das erstellt wurde, bevor MTP für die Übertragung von Dateien unterstützt wurde, das bei den letzten Upgrades jedoch jetzt unterstützt wird. Auf dieser Grundlage kann die USB-Klasse, die sie angeblich ist, nicht hardwaredefiniert werden und muss in der Software definiert werden.

IIRC, dieses Projekt hat Android-Geräte (was ich für einen Standardkernel halte), die als eine USB-Klasse bezeichnet werden, die definitiv nicht integriert wurde. Dies zeigt mir, dass Sie möglicherweise steuern können, welche USB-Klassen es unterstützt, ohne dass der Kernel funktioniert, aber ich Ich weiß es nicht genau.

Was den Host betrifft (dh den PC), so habe ich noch nie gesehen, dass ein PC, ein Mac oder eine Linux-Box spezielle Laufwerke für Tastaturen benötigen, selbst für einige eher esoterische Geräte, die angeblich Tastaturen sind (Barcodescanner, Kreditkarten und Smartphones) Kartenleser usw.), so sollten die generischen Treiber gut genug für das sein, was ich will.

Alles, was darauf hindeutet, dass das, wonach ich suche, aus der Sicht der Hardware getan werden kann , sagt jedoch sehr wenig darüber aus, welche Software-Unterstützung vorhanden ist, und nichts darüber, ob es eine App dafür gibt.

BCS
quelle
2
Sie können versuchen, KeePass (KeePassDroid unter Android, keepassx unter Linux usw.) sowohl auf Ihrem Telefon als auch auf Ihrem Computer zu verwenden und einfach die Datenbankdatei zwischen ihnen zu synchronisieren oder über USB vom Computer auf die Datenbankdatei auf dem Telefon zuzugreifen. Andere Passwort-Manager haben möglicherweise auch Gegenstücke zu "echten Computern".
BAUM
@TREE: Das könnte in einigen Fällen funktionieren, aber eine der spezifischen Zielverwendungen ist, dass ich nicht in der Lage bin, etwas auf dem PC zu installieren (entweder kein Zugriff oder ein Hühnchen- / Ei-Problem wie System-Anmeldekennwörter). .
BCS
Es gibt auch eine tragbare Version von KeePass, die von einem USB-Stick ausgeführt werden kann. Dies funktioniert möglicherweise auf einem bereitgestellten Android-USB-Speichergerät, es werden jedoch nicht alle möglichen Anwendungsfälle behandelt.
TREE

Antworten:

15

Ja. Dies ist definitiv möglich und erfordert keine Änderungen oder Treiber auf dem PC. Wie im OP erwähnt, erfolgt die USB-Identifizierung am Telefon letztendlich über Software (in dieser Datei https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite) .c ), und es könnte geändert werden, um sich als Standard-USB-Tastatur zu identifizieren.

Diese Änderung würde ein paar Dinge erfordern.

  1. Ein modifizierter Kernel mit einem gepatchten USB-Treiber
  2. Eine Android-App, die mit einer vom modifizierten USB-Treiber bereitgestellten Schnittstelle kommunizieren kann.

Es gab ein paar Jahren ein Papier vor veröffentlicht (betitelt Ausnutzen Smartphone-USB - Anschluss für Spaß und Gewinn ) , die mit einem Telefon beschrieben Brute-Force - Desktop - Anmeldebildschirme. Bei der verwendeten Methode wurde das Telefon als USB-Tastatur angezeigt.

davidbb
quelle
Weitere Infos finden Sie hier .
sampablokuper
github.com/pelya/android-keyboard-gadget Es wurde hier implementiert .. und die erforderliche Android-App ist ebenfalls verfügbar
Abhigyan
2

Dies beantwortet Ihre Frage nicht genau, kann jedoch in Ihrem Anwendungsfall hilfreich sein.

Vielleicht möchten Sie einen Blick auf InputStick werfen . Dies ist ein USB-Stick, den Sie über Bluetooth mit Android koppeln. Wird es an einen Computer angeschlossen, emuliert es ein generisches USB-HID, um Tastaturanschläge zu senden. Eine erweiterte Java-API ermöglicht es auch, z. B. Gerätedeskriptoren anzugeben, um nicht standardmäßige Funktionen zu emulieren. Es könnte ein gutes Beispiel dafür sein, dass es eher in Software als in Hardware definiert ist.

Als Referenz arbeitet der Entwickler auch an Beispielprogrammen wie einem Demo Password Manager.

Mini-Me
quelle
0

Dies würde mindestens Software auf dem Telefon und auf dem PC erfordern. Die 2 Software-Teile müssten miteinander kommunizieren. Nichts dergleichen, von dem ich derzeit weiß, existiert.

Und damit der PC denkt, dass das Gerät wirklich eine Tastatur ist, ist ein neuer Treiber erforderlich, der dem PC mitteilt, dass das Gerät eine Tastatur ist und wie "es als Tastatur verwendet wird".

Ich sage nicht, dass es nicht möglich ist, weil bei solchen Dingen so ziemlich alles möglich ist. Was ich aber sage, ist, dass derzeit nichts dergleichen existiert.

USB ist sowohl Hardware als auch Software. Wenn es nur Software wäre, würde derselbe USB-Treiber für alle Android-Geräte unter Windows funktionieren, und dies ist nicht der Fall. USB-Massenspeicher und MTP werden von den Treibern auf dem PC und nicht vom Gerät verwaltet. Welche Geräte unterstützen gleichzeitig MTP- und USB-Massenspeicher? Ich habe Artikel gefunden, die besagen, dass Geräte UMS und MTP unterstützen, aber nur UMS, wenn es eine externe SD-Karte gibt. Sie können die externe SD-Karte nicht mit MTP und mit UMS mounten. MTP ist für den internen Speicher. Und ich habe nichts gelesen, was bestätigen oder leugnen könnte, dass Sie beide gleichzeitig verwenden können.

Sie müssen keine Treiber für Tastaturen installieren, wenn sie der "Standard" -Spezifikation entsprechen, da Windows bereits die Treiber dafür hat. Es gibt Tastaturen mit eigenen Treibern. Wie gesagt, es wäre möglich. Ich bin mir nicht sicher, wie es gemacht werden würde. Es würde mit ziemlicher Sicherheit einen benutzerdefinierten Kernel erfordern, damit er wie eine Tastatur funktioniert und auf der PC-Seite keine zusätzlichen Treiber benötigt werden.

Darüber hinaus stimme ich @davidbb zu, dass dies möglich ist, und ich habe bereits gesagt, dass dies der Fall ist. Das Problem mit der Frage, ob etwas möglich ist, löst das Problem nie. Ich würde sagen: "Kann ich iOS-Anwendungen nativ unter Windows ausführen?". Dies ist theoretisch möglich, aber es gibt nichts, was dies jetzt tut, und es gibt nichts, was ein "normaler Benutzer" (oder sogar ein fortgeschrittener Benutzer) tun kann, um dies zu erreichen. Diese Website richtet sich an Benutzer. Die Aussage, dass Sie lediglich einen modifizierten Kernel schreiben müssen, ist keine Antwort, die jedem von Nutzen sein wird. Die eigentliche Antwort auf die Frage lautet also nein, da es keinen modifizierten Kernel gibt.

Ryan Conrad
quelle
IIRC, das Android-Ende der USB-Verbindung, wird in Software ausgeführt (es muss zu einem gewissen Grad dieselbe Hardware sein, um sowohl als USB-Massenspeichergerät als auch als MTP zu fungieren). Was soll auf dieser Grundlage verhindern, dass ein geräteseitiger Treiber das Gerät dazu bringt, sich selbst als generisches HID anzukündigen? Wenn dies möglich ist, werden dieselben PC-seitigen Treiber verwendet, die auch für andere Tastaturen verwendet werden (genau wie für Barcodescanner und Kreditkartenleser).
BCS
Ich habe zu meiner Antwort hinzugefügt, um Ihren Kommentar zu adressieren.
Ryan Conrad
Android-Geräte (Hardware), die vor der Verwendung von MTP erstellt wurden, fungieren jetzt als MTP-USB-Klasse. Daher müssen die Klassen, deren Funktionsweise das Gerät vorgibt, in der Software definiert werden. Ich kann mich nicht erinnern, ob ich jemals einen Treiber für eine Tastatur (oder einen nicht generischen Treiber zum Anschließen eines Android-Geräts) installiert habe. Daher sollte PC-seitig nichts installiert werden müssen. Kombinieren Sie diese und ich bin mir fast sicher, dass die Hardware das kann. Die einzige Frage, die noch offen ist, ist: Bietet Android auf Lager Zugriff auf die benötigten Regler, oder würde dies den Aufbau eines benutzerdefinierten Kernels erfordern?
BCS
Betreff: 2nd edit. Ich schätze, ich suche jemanden, der definitiv weiß, was es dauern würde. (Können Sie den letzten Absatz nach oben verschieben?)
BCS
Diese Antwort ist falsch, auf der PC-Seite ist keine Software erforderlich. Unterschiedliche Telefone erfordern unterschiedliche Treiber, da die Hersteller nicht alle dieselbe Hersteller-ID-Nummer verwenden. Tastaturen fallen jedoch in eine andere Gerätekategorie, bei der sie vom Host nach Typ erkannt werden, sodass die Hersteller-ID keine Rolle spielt. Die VID / PID, der Gerätetyp, die Protokolle usw. sind alle in der Software auf der Android-Seite implementiert und können von jedem geändert werden, der über eine Kernelquelle und eine Möglichkeit zum Installieren des kompilierten Ergebnisses verfügt.
Chris Stratton
0

Haben Sie versucht , Remote - Unified - . Dies ist ein großartiges Werkzeug, um das Telefon als Tastatur und Maus zu verwenden. Es wird kein USB, sondern WLAN verwendet. Es gibt eine App auf Telefon und Computer, die zusammenarbeiten. Funktioniert gut für mich. Auch wenn Sie Vollversion erhalten, erhalten Sie Integration mit vielen gängigen Anwendungen.

user207748
quelle
Ich suche nach einer Lösung für Fälle, in denen beispielsweise Passwörter in BIOS-Startaufforderungen eingegeben werden, damit ich keinen Client wirklich installieren kann.
BCS
0

Ich habe etwas ähnliches gesucht und gefunden

https://github.com/pelya/android-keyboard-gadget

Anscheinend kann in Ihrem Fall das Gleiche verwendet werden. Kurz gesagt, was ich bekommen habe, ist, dass Sie den USB-Treiber in Android-Kernel schreiben müssen, um das Gerät als HID zu erkennen.

Abhigyan
quelle
0

Es ist jetzt> sechs Jahre später und irgendwo dazwischen hat jemand das Keepass2 USB Keyboard Plugin für Keepass2Android erstellt .

Wollte diese Informationen hier der Vollständigkeit halber hinzufügen und weil ich diese Frage und das oben genannte Plugin bei der Suche nach genau so etwas unbeantwortet fand .

Ich habe es selbst noch nicht getestet ...

Limer
quelle
-1

InputStick ist ein kabelloser USB-Empfänger für Android-Geräte. Es ermöglicht Android-Anwendungen, viele verschiedene Arten von Geräten zu emulieren, zum Beispiel: USB-Tastatur, USB-Maus, USB-Gamepad und vieles mehr. Mit InputStick können Android-Apps alles tun, was ein physisches Gerät kann: Tippen, Bewegen des Mauszeigers, Steuern von Multimedia-Inhalten und Spielen.

Informationen finden Sie unter http://inputstick.com/

user3776541
quelle
1
Das liest sich wie eine Werbung. In welcher Beziehung stehen Sie zu diesem Produkt?
Dan Hulme