Un appareil peut-il prétendre être un clavier USB?

16

Ce que je cherche:

Existe-t-il un moyen de faire en sorte que l'appareil prétende être un clavier / HID lorsqu'il est branché sur un port USB et «taper» le contenu du presse-papiers? Plus précisément; Que faudrait-il pour y arriver?

Cas d'utilisation motivant:

J'ai un programme de gestion des mots de passe sur mon téléphone, mais c'est ennuyeux de devoir lire le mot de passe sur l'appareil et d'essayer de le saisir sur un autre ordinateur.

Contexte:

J'ai un appareil Android qui a été construit avant que MTP ne soit pris en charge pour le transfert de fichiers mais, avec les mises à niveau récentes, le prend désormais en charge. Sur cette base, la classe USB qu'elle prétend ne peut pas être définie par le matériel et doit être définie par le logiciel.

IIRC, ce projet a des appareils Android (avec ce que je pense être un noyau de stock) parlant comme une classe USB qui n'était définitivement pas intégrée. Cela m'indique que vous pourriez être en mesure de contrôler ce que les classes USB il prend en charge sans travail du noyau mais ne sais pas avec certitude.

En ce qui concerne le côté hôte (c'est-à-dire le PC), je n'ai jamais vu un PC, Mac ou Linux nécessiter des lecteurs spéciaux pour les claviers, même pour certains appareils plutôt ésotériques qui prétendent être des claviers (scanners de codes à barres, cartes de crédit et smart lecteurs de cartes, etc.) donc les pilotes génériques devraient être assez bons pour ce que je veux.

Tout cela fait valoir que ce que je recherche peut être fait d'un point de vue matériel , mais en dit très peu sur le support logiciel existant et rien sur le fait qu'il existe une application pour cela.

BCS
la source
2
Vous pouvez essayer d'utiliser KeePass (KeePassDroid sur android, keepassx sur linux, etc.) sur votre téléphone et votre ordinateur, et simplement synchroniser le fichier de base de données entre eux, ou accéder au fichier de base de données sur le téléphone via USB depuis l'ordinateur. D'autres gestionnaires de mots de passe peuvent également avoir des homologues «réels».
TREE
@TREE: Cela pourrait fonctionner dans certains cas, mais l'une des utilisations cibles spécifiques est où je n'ai pas la possibilité d'installer quelque chose sur le PC (soit aucun accès, soit un problème de poulet / œuf comme les mots de passe de connexion au système) .
BCS
il existe également une version portable de KeePass qui peut fonctionner à partir d'une clé USB. Cela pourrait fonctionner à partir d'un périphérique de stockage USB Android monté, mais ne résout certainement pas tous les cas d'utilisation possibles.
TREE

Réponses:

15

Oui. C'est certainement possible, ne nécessitant aucune modification ou pilote sur le PC. Comme le mentionne l'OP, l'identification USB sur le téléphone se fait finalement dans le logiciel (dans ce fichier https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ), et il pourrait être modifié pour s'identifier comme un clavier USB standard.

Ce changement nécessiterait deux ou trois choses.

  1. Un noyau modifié avec un pilote USB patché
  2. Une application Android qui pourrait communiquer avec une interface exposée par le pilote USB modifié.

Il y a quelques années, un article (intitulé Exploiter la connectivité USB des téléphones intelligents pour le plaisir et le profit ) décrivait l'utilisation d'un téléphone pour forcer les écrans de connexion au bureau. La méthode utilisée a consisté à faire apparaître le téléphone comme un clavier USB.

davidbb
la source
Plus d'infos ici .
sampablokuper
github.com/pelya/android-keyboard-gadget Il a été implémenté ici .. et l'application Android requise est également disponible
Abhigyan
2

Cela ne répond pas exactement à votre question, mais cela pourrait vous aider dans votre cas d'utilisation.

Vous voulez peut-être jeter un œil à InputStick . Ce sera une clé USB que vous associez à Android via Bluetooth. Branché sur un ordinateur, il émule un HID USB générique pour envoyer des coups de clavier. Une API Java avancée permettra également de spécifier, par exemple, des descripteurs de périphériques pour émuler des fonctions non standard. Il pourrait fournir un bel exemple qu'il est défini dans le logiciel plutôt que dans le matériel.

Pour référence, le développeur travaille également sur des exemples de programmes, tels que Demo Password Manager.

Mini Moi
la source
0

Au minimum, cela nécessiterait à la fois un logiciel sur le téléphone et sur le PC. Les 2 logiciels devraient communiquer entre eux. Rien de tel, que je sache actuellement, n'existe.

Et pour que le PC pense que le périphérique est vraiment un clavier, il faudrait un nouveau pilote qui dirait au PC que le périphérique est un clavier et comment «l'utiliser comme clavier».

Je ne dis pas que ce n'est pas possible, car à peu près tout est possible quand il s'agit de choses comme ça. Ce que je dis cependant, c'est que rien de tel n'existe actuellement.

L'USB est à la fois matériel et logiciel.S'il s'agissait d'un logiciel seul, le même pilote USB fonctionnerait pour tous les appareils Android sous Windows, et ce n'est pas le cas. Le stockage de masse USB et MTP sont gérés par les pilotes du PC, pas par l'appareil. Quels appareils prennent en charge le stockage de masse MTP et USB en même temps? J'ai trouvé des articles indiquant que les appareils peuvent prendre en charge UMS et MTP, mais uniquement UMS s'il existe une carte SD externe. Vous ne pouvez pas monter la carte SD externe avec MTP et avec UMS. MTP est destiné au stockage interne. Et je n'ai rien lu qui puisse confirmer ou infirmer que vous pouvez utiliser les deux en même temps.

Vous n'avez pas besoin d'installer les pilotes pour les claviers, s'ils suivent la spécification "par défaut" car Windows a déjà les pilotes pour cela. Certains claviers sont livrés avec leurs propres pilotes. Comme je l'ai dit, ce serait possible. Je ne sais pas comment cela serait fait. Cela nécessiterait presque certainement un noyau personnalisé pour qu'il agisse comme un clavier et aucun pilote supplémentaire ne soit nécessaire du côté PC.

De plus, je suis d'accord avec @davidbb que c'est possible et je l'ai déjà dit. Le problème avec une question demandant si quelque chose est possible, ne résout jamais le problème. Ce serait comme si je disais "est-il possible pour moi d'exécuter des applications iOS nativement sur Windows?". C'est théoriquement possible, mais il n'y a rien qui le fasse maintenant et il n'y a rien que "un utilisateur normal" (ou même un utilisateur avancé) puisse faire pour que cela se produise. Ce site est destiné aux utilisateurs, donc dire que vous avez juste besoin d'écrire un noyau modifié n'est pas une réponse qui va bénéficier à personne. La vraie réponse à la question est donc non, car il n'y a pas de noyau modifié.

Ryan Conrad
la source
IIRC, la fin Android de la connexion USB se fait dans le logiciel (il doit être dans une certaine mesure pour le même matériel d'agir à la fois comme un périphérique de stockage de masse USB ainsi que MTP). Sur cette base, qu'est-ce qui empêche un pilote côté périphérique uniquement de faire en sorte que le périphérique annonce qu'il est lui-même en tant que HID générique? Si cela peut être fait, alors les mêmes pilotes côté PC qui gèrent tout autre clavier le géreront (tout comme pour les scanners de codes à barres et les lecteurs de cartes de crédit).
BCS
J'ai ajouté à ma réponse pour répondre à votre commentaire.
Ryan Conrad
Les appareils Android (matériel) qui ont été construits avant l'utilisation de MTP fonctionnent désormais comme la classe USB MTP, donc les classes selon lesquelles l'appareil prétend fonctionner doivent être définies dans le logiciel. Je ne me souviens pas si j'ai déjà installé un pilote pour un clavier (ou d'ailleurs un pilote non générique pour connecter un appareil Android) donc rien ne devrait être installé côté PC. Combinez-les et je suis presque sûr que le matériel peut le faire. La seule question qui reste est: est-ce qu'Android stock donne accès aux boutons nécessaires, ou cela prendrait-il la construction d'un noyau personnalisé?
BCS
Re: 2e édition. Je suppose que je recherche quelqu'un qui sait définitivement ce qu'il faudrait. (Pouvez-vous déplacer ce dernier paragraphe vers le haut?)
BCS
Cette réponse est fausse, aucun logiciel n'est requis du côté PC. Différents téléphones nécessitent des pilotes différents, car les fabricants n'utilisent pas tous le même numéro d'identification de fournisseur. Cependant, les claviers appartiennent à une catégorie différente de périphériques où ils sont reconnus par l'hôte par type, de sorte que l'ID du fournisseur n'a pas vraiment d'importance. Le VID / PID, le type d'appareil, les protocoles, etc. sont tous implémentés dans le logiciel côté Android, et modifiables par toute personne disposant d'une source de noyau et un moyen d'installer le résultat compilé.
Chris Stratton
0

Avez-vous essayé la télécommande unifiée . C'est un excellent outil pour utiliser le téléphone comme clavier et souris. Il n'utilise pas USB mais wifi à la place. Il existe une application sur le téléphone et l'ordinateur qui fonctionne ensemble. Fonctionne très bien pour moi. De plus, si vous obtenez la version complète, vous obtenez une intégration avec de nombreuses applications courantes.

user207748
la source
Je recherche une solution pour les cas qui incluent des choses comme la saisie de mots de passe dans les invites de démarrage du BIOS, donc je ne peux pas vraiment installer de client.
BCS
0

Je cherchais quelque chose de similaire et j'ai trouvé

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

Semble la même chose peut être utilisée dans votre cas. En bref, ce que j'ai, c'est que vous devez écrire le pilote USB dans le noyau Android pour détecter le périphérique comme HID.

Abhigyan
la source
0

C'est maintenant> six ans plus tard et quelque part entre les deux que quelqu'un a créé le plugin de clavier USB Keepass2 pour Keepass2Android .

Je voulais ajouter ces informations ici par souci d'exhaustivité et parce que j'ai trouvé cette question sans réponse et le plugin susmentionné tout en recherchant exactement quelque chose comme ça.

Je ne l'ai pas encore testé moi-même ...

Limer
la source
-1

InputStick est un récepteur USB sans fil, conçu pour les appareils Android. Il permet aux applications Android d'émuler de nombreux types d'appareils, par exemple: clavier USB, souris USB, manette de jeu USB et bien d'autres. Avec InputStick, les applications Android peuvent faire tout ce qu'un appareil physique peut: taper, déplacer le pointeur de la souris, contrôler le multimédia et les jeux.

Des informations peuvent être trouvées sur http://inputstick.com/

user3776541
la source
1
Cela ressemble à une annonce. Quelle est votre relation avec ce produit?
Dan Hulme