18 votes

Un dispositif peut-il se faire passer pour un clavier USB ?

Ce que je recherche :

Existe-t-il un moyen de faire en sorte que le périphérique se présente comme un clavier/HID lorsqu'il est branché sur un port USB et qu'il " tape " le contenu du presse-papiers ? Plus précisément ; Que faudrait-il faire pour que cela se produise ?

Un cas d'utilisation motivant :

J'ai un programme de conservation 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 taper sur un autre ordinateur.

Le contexte :

J'ai un appareil Android qui a été construit avant que le protocole MTP ne soit pris en charge pour le transfert de fichiers mais qui, grâce à des mises à jour récentes, le prend maintenant en charge. Sur cette base, la classe USB qu'il prétend être 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 standard) qui parlent comme une classe USB qui n'a définitivement pas été intégrée. Cela m'indique que vous puede être en mesure de contrôler les classes USB qu'il supporte sans travail sur le noyau mais je n'en suis pas sûr.

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

Tout cela prouve que ce que je cherche peut être fait. d'un point de vue matériel mais ne dit pas grand-chose sur le support logiciel existant et rien sur l'existence d'une application pour ce produit.

15voto

Michael Burr Points 181287

Oui, c'est tout à fait possible et cela ne nécessite aucune modification ni aucun pilote sur le PC. Comme le mentionne l'OP, l'identification de l'USB du côté du téléphone se fait finalement par 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 choses.

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

Il existe un article publié en 2010, intitulé Exploiter la connectivité USB des téléphones intelligents pour le plaisir et le profit . Il décrit l'utilisation d'un téléphone pour forcer les écrans de connexion des ordinateurs de bureau. La méthode utilisée consiste à faire apparaître le téléphone comme un clavier USB.

2voto

Mini-Me Points 21

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

Vous voulez peut-être jeter un coup d'oeil à InputStick . Il s'agit d'une clé USB que vous associez à Android via Bluetooth. Connectée à un ordinateur, elle émule une clé USB HID générique pour envoyer des frappes de clavier. Une API Java avancée permettra également de spécifier des descripteurs de périphériques pour émuler des fonctions non standard. Cela pourrait constituer un bel exemple de définition logicielle plutôt que matérielle.

Pour référence, le développeur travaille également sur des programmes d'exemple, tels qu'un gestionnaire de mots de passe de démonstration.

0voto

mercutio Points 5828

Au minimum, cela nécessiterait un logiciel sur le téléphone et sur le PC. Les deux logiciels devraient communiquer entre eux. Rien de tel n'existe actuellement, à ma connaissance.

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

Je ne dis pas que ce n'est pas possible, car tout est possible dans ce genre de situation. Mais ce que je dis, c'est que rien de tel n'existe actuellement.

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

Il n'est pas nécessaire d'installer des pilotes pour les claviers, s'ils respectent les spécifications "par défaut", car Windows dispose déjà des pilotes nécessaires. Il existe des claviers qui sont livrés avec leurs propres pilotes. Comme je l'ai dit, c'est possible. Je ne suis pas sûr de la manière dont cela serait fait. Il est presque certain qu'il faudrait au moins un noyau personnalisé pour qu'il se comporte comme un clavier et qu'aucun pilote supplémentaire ne soit nécessaire du côté du PC.

De plus, je suis d'accord avec @davidbb pour dire 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. C'est comme si je disais "est-il possible pour moi d'exécuter des applications ios en natif sur Windows ?". C'est théoriquement possible, mais il n'y a rien qui le fasse actuellement et il n'y a rien qu'un "utilisateur normal" (ou même un utilisateur avancé) puisse faire pour que cela arrive. Ce site est destiné aux utilisateurs, donc dire qu'il suffit d'écrire un noyau modifié n'est pas une réponse qui va profiter à qui que ce soit. La vraie réponse à la question est donc non, car il n'existe pas de noyau modifié.

0voto

çağdaş Points 10552

Avez-vous essayé Télécommande unifiée . C'est un outil formidable pour utiliser le téléphone comme clavier et souris. Il n'utilise pas l'USB mais le wifi. Il y a une application sur le téléphone et l'ordinateur qui fonctionnent ensemble. Cela fonctionne très bien pour moi. En outre, si vous obtenez la version complète, vous obtenez l'intégration avec de nombreuses applications communes.

0voto

Abhigyan Points 101

Je cherchais quelque chose de similaire et j'ai trouvé https://github.com/pelya/Android-keyboard-gadget . Il semble que la même chose puisse être utilisée dans votre cas.

En bref, ce que j'ai obtenu est que vous devez écrire le pilote USB dans le noyau Android pour détecter le périphérique comme HID.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X