Un dispositivo può fingere di essere una tastiera USB?


16

Cosa sto cercando:

C'è un modo per far dichiarare il dispositivo come una tastiera / HID quando collegato a una porta USB e "digitare" il contenuto degli appunti? Più accuratamente; Cosa ci vorrebbe per farlo accadere?

Caso d'uso motivante:

Ho un programma di gestione delle password sul mio telefono, ma è fastidioso dover leggere la password dal dispositivo e provare a digitarla in un altro computer.

Sfondo:

Ho un dispositivo Android che è stato creato prima che MTP fosse supportato per il trasferimento di file ma, con recenti aggiornamenti, ora lo supporta. Sulla base di ciò, la classe USB che afferma di non poter essere definita hardware e deve essere definita nel software.

IIRC, questo progetto ha dispositivi Android (con quello che penso sia un kernel stock) che parla come una classe USB che non è stata definitivamente integrata. Questo mi indica che potresti essere in grado di controllare quali classi USB supporta senza il funzionamento del kernel ma io non lo so per certo.

Per quanto riguarda il lato Host (ovvero il PC), non ho mai visto un PC, un Mac o un box Linux necessitare di unità speciali per le tastiere, anche per alcuni dispositivi piuttosto esoterici che dichiarano di essere tastiere (scanner di codici a barre, carte di credito e smart lettori di schede, ecc.), quindi i driver generici dovrebbero essere abbastanza buoni per quello che desidero.

Tutto ciò sostiene che ciò che sto cercando può essere fatto da un punto di vista hardware , ma dice molto poco su quale supporto software esiste e nulla su se esiste un'app.


2
Potresti provare a utilizzare KeePass (KeePassDroid su Android, Keepassx su Linux, ecc.) Sia sul tuo telefono che sul tuo computer, e sincronizzare semplicemente il file di database tra loro o accedere al file di database sul telefono tramite USB dal computer. Altri gestori di password possono anche avere controparti "computer reali".
ALBERO,

@TREE: Questo potrebbe funzionare in alcuni casi, ma uno degli usi specifici del target è dove non ho la possibilità di installare qualcosa sul PC (o nessun accesso o un problema pollo / uovo come le password di accesso al sistema) .
BCS,

esiste anche una versione portatile di KeePass che può essere eseguita da una chiavetta USB. Questo potrebbe funzionare da un dispositivo di archiviazione USB Android montato, ma certamente non risolve tutti i possibili casi d'uso.
ALBERO,

Risposte:


15

Sì. Questo è sicuramente possibile, senza richiedere modifiche o driver sul PC. Come menziona l'OP, l'identificazione USB all'estremità del telefono viene infine eseguita nel software (in questo file https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ) e potrebbe essere modificato per identificarsi come una tastiera USB standard.

Questo cambiamento richiederebbe un paio di cose.

  1. Un kernel modificato con un driver USB con patch
  2. Un'app Android che potrebbe comunicare con un'interfaccia esposta dal driver USB modificato.

C'era un articolo pubblicato un paio di anni fa (dal titolo Sfruttando la connettività USB di smart-phone per il divertimento e profitto ), che ha descritto utilizzando un telefono a forza bruta schermate di login del desktop. Il metodo utilizzato ha comportato la visualizzazione del telefono come una tastiera USB.


Maggiori informazioni possono essere trovate qui .
sampablokuper,

github.com/pelya/android-keyboard-gadget È stato implementato qui .. e è disponibile anche l'app Android richiesta
Abhigyan

2

Questo non risponde esattamente alla tua domanda, ma potrebbe essere d'aiuto nel tuo caso d'uso.

Forse vuoi dare un'occhiata a InputStick . Sarà una chiavetta USB che accoppi ad Android tramite Bluetooth. Collegato a un computer emula un HID USB generico per inviare i tratti della tastiera. Un'API Java avanzata consentirà inoltre di specificare i descrittori del dispositivo per emulare funzioni non standard. Potrebbe fornire un buon esempio che è definito nel software piuttosto che nell'hardware.

Per riferimento, lo sviluppatore sta anche lavorando su programmi di esempio, come Demo Password Manager.


0

Come minimo, ciò richiederebbe sia il software sul telefono che sul PC. I 2 software dovrebbero comunicare tra loro. Non esiste nulla di simile, che conosco attualmente,.

E per il PC pensare che il dispositivo sia veramente una tastiera, richiederebbe un nuovo driver che direbbe al PC che il dispositivo è una tastiera e come "usarlo come tastiera".

Non sto dicendo che non è possibile, perché praticamente tutto è possibile quando si tratta di cose come questa. Quello che sto dicendo è che al momento non esiste nulla di simile.

USB è sia hardware che software, se fosse solo un software, lo stesso driver USB funzionerebbe per tutti i dispositivi Android su Windows, e non è così. L'archiviazione di massa USB e MTP sono gestite dai driver sul PC, non dal dispositivo. Quali dispositivi supportano sia l'archiviazione di massa MTP che USB e allo stesso tempo? Ho trovato articoli che affermano che i dispositivi possono supportare UMS e MTP, ma supportano UMS solo se è presente una scheda SD esterna. Non è possibile montare la scheda SD esterna con MTP e con UMS. MTP è per la memoria interna. E non ho letto nulla che possa confermare o negare che è possibile utilizzare entrambi contemporaneamente.

Non è necessario installare i driver per le tastiere, se seguono le specifiche "predefinite" perché Windows ha già i driver per esso. Ci sono tastiere fornite con i propri driver. Come ho detto, sarebbe possibile. Non sono sicuro di come sarebbe stato fatto. Quasi certamente richiederebbe almeno un kernel personalizzato perché funzioni come una tastiera e non siano necessari driver aggiuntivi sul lato PC.

Inoltre, sono d'accordo con @davidbb che è possibile e ho già detto che lo è. Il problema con una domanda che chiede se qualcosa è possibile, non risolve mai il problema. Sarebbe come se dicessi "è possibile eseguire nativamente le applicazioni iOS su Windows?". Ciò è teoricamente possibile, ma non c'è nulla che lo faccia ora e non c'è qualcosa che un "utente normale" (o anche un utente avanzato) possa fare per farlo accadere. Questo sito è pensato per gli utenti, quindi dire che devi solo scrivere un kernel modificato non è una risposta che andrà a beneficio di nessuno. Quindi la vera risposta alla domanda è no, perché non esiste un kernel modificato là fuori.


IIRC, la fine Android della connessione USB viene eseguita nel software (deve essere in una certa misura che lo stesso hardware funzioni sia come dispositivo di archiviazione di massa USB sia come MTP). Sulla base di ciò, cosa può impedire a un solo driver lato dispositivo di far annunciare al dispositivo stesso un HID generico? Se ciò può essere fatto, lo gestiranno gli stessi driver lato PC che gestiscono qualsiasi altra tastiera (proprio come avviene per cose come scanner di codici a barre e lettori di carte di credito).
BCS,

Ho aggiunto alla mia risposta per rispondere al tuo commento.
Ryan Conrad,

I dispositivi Android (hardware) costruiti prima dell'utilizzo dell'MTP ora funzionano come classe MTP USB, pertanto le classi che il dispositivo afferma di funzionare come devono essere definite nel software. Non ricordo se ho mai installato un driver per una tastiera (o per questo un driver non generico per il collegamento di un dispositivo Android), quindi non dovrebbe essere necessario installare alcun lato PC. Combina quelli e sono quasi sicuro che l'hardware possa farlo. L'unica domanda rimasta è: Android stock fornisce l'accesso alle manopole necessarie, o ciò richiederebbe la costruzione di un kernel personalizzato?
BCS,

Ri: 2a modifica. Immagino che sto cercando qualcuno che sappia definitivamente cosa ci vorrebbe. (Riesci a spostare l'ultimo paragrafo in cima?)
BCS,

Questa risposta è errata, non è necessario alcun software sul lato PC. Telefoni diversi richiedono driver diversi perché i produttori non utilizzano tutti lo stesso numero ID fornitore. Le tastiere tuttavia rientrano in una diversa categoria di dispositivi in ​​cui sono riconosciute dall'host per tipo, quindi l'ID fornitore non ha importanza. Il VID / PID, il tipo di dispositivo, i protocolli, ecc. Sono tutti implementati nel software sul lato Android e possono essere modificati da chiunque abbia il kernel e un modo per installare il risultato compilato.
Chris Stratton,

0

Hai provato Unified Remote . Questo è un ottimo strumento per usare il telefono come tastiera e mouse. Invece non usa USB ma wifi. C'è un'app sul telefono e sul computer che lavora insieme. Funziona benissimo per me. Inoltre, se ottieni la versione completa, ottieni l'integrazione con molte applicazioni comuni.


Sto cercando una soluzione per i casi che includono cose come digitare le password nei prompt di avvio del BIOS, quindi non posso davvero installare alcun tipo di client.
BCS,


0

Adesso sono passati sei anni e qualcuno ha creato il plug-in per tastiera USB Keepass2 per Keepass2Android .

Volevo aggiungere queste informazioni qui per completezza e perché ho trovato questa domanda senza risposta e il suddetto plugin mentre cercavo esattamente qualcosa del genere.

Non l'ho ancora provato da solo ...


-1

InputStick è un ricevitore USB wireless, progettato per dispositivi Android. Consente alle applicazioni Android di emulare diversi tipi di dispositivi, ad esempio: tastiera USB, mouse USB, gamepad USB e molti altri. Con InputStick, le app Android possono fare tutto ciò che un dispositivo fisico può fare: digitare, spostare il puntatore del mouse, controllare contenuti multimediali e giochi.

Le informazioni sono disponibili all'indirizzo http://inputstick.com/


1
Sembra un annuncio. Qual è il tuo rapporto con questo prodotto?
Dan Hulme,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.