Poate un dispozitiv să pretindă că este o tastatură USB? (Android, Usb, Tastatură)

BCS a intrebat.
a intrebat.

Ce caut:

Există o modalitate de a face ca dispozitivul să pretindă a fi o tastatură/HID atunci când este conectat la un port USB și să „tasteze” conținutul clipboard-ului? Mai exact; Ce ar fi nevoie pentru ca acest lucru să se întâmple?

Motivarea cazului de utilizare:

Am un program de păstrare a parolei pe telefon, dar este enervant să fiu nevoit să citesc parola de pe dispozitiv și să încerc să o introduc în alt computer.

Context:

Am un dispozitiv Android care a fost construit înainte ca MTP să fie acceptat pentru transferul de fișiere, dar care, odată cu actualizările recente, este acum acceptat. Pe baza acestui fapt, clasa USB pe care pretinde că este nu poate fi definită hardware și trebuie definită în software.

IIRC, acest proiect are dispozitive Android (cu ceea ce cred că este un kernel stock) care vorbesc ca o anumită clasă USB care, în mod cert, nu a fost construită. Acest lucru îmi indică faptul că ar putea fi capabil să controlezi ce clase USB suportă fără a lucra la kernel, dar nu știu sigur.

În ceea ce privește partea gazdă (adică PC-ul), nu am văzut niciodată o cutie PC, Mac sau Linux care să aibă nevoie de drivere speciale pentru tastaturi, chiar și pentru unele dispozitive destul de ezoterice care pretind a fi tastaturi (scanere de coduri de bare, cititoare de cărți de credit și de carduri inteligente etc.), așa că driverele generice ar trebui să fie suficient de bune pentru ceea ce îmi doresc.

Toate acestea susțin că ceea ce caut eu poate fi făcut din punct de vedere hardware, , dar spune foarte puțin despre ce suport software există și nimic despre dacă există o aplicație pentru asta.

Comentarii

  • Ai putea încerca să folosești KeePass (KeePassDroid pe android, keepassx pe linux, etc.) atât pe telefon, cât și pe calculator, și doar să sincronizezi fișierul de bază de date între ele, sau să accesezi fișierul de bază de date de pe telefon prin USB de pe calculator. Este posibil ca și alți manageri de parole să aibă omologi „pe calculator real”. –  > Por TREE.
  • @TREE: Acest lucru ar putea funcționa în unele cazuri, dar una dintre utilizările specifice vizate este cea în care nu am posibilitatea de a instala ceva pe PC (fie că nu am acces, fie că este o problemă de tipul „oul/puiul de găină”, cum ar fi parolele de logare în sistem). –  > Por BCS.
  • există, de asemenea, o versiune portabilă a KeePass care poate rula de pe un stick USB. Aceasta ar putea fi funcționa de pe un dispozitiv de stocare USB android montat, dar cu siguranță nu se adresează tuturor cazurilor de utilizare posibile. –  > Por TREE.
7 răspunsuri
davidbb

Da. Acest lucru este cu siguranță posibil, nefiind nevoie de modificări sau drivere pe PC. După cum menționează OP, identificarea USB la capătul telefonului se face în cele din urmă în software (în acest fișier https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite.c), și ar putea fi modificat pentru a se identifica ca o tastatură USB standard.

Această modificare ar necesita câteva lucruri.

  1. un kernel modificat cu un driver USB corectat
  2. O aplicație Android care ar putea vorbi cu o interfață expusă de driverul USB modificat.

A existat o lucrare publicată în urmă cu câțiva ani (intitulat Exploatarea conectivității USB a telefoanelor inteligente pentru distracție și profit) care descria utilizarea unui telefon pentru a forța în mod brutal ecranele de conectare la desktop. Metoda folosită consta în a face telefonul să apară ca o tastatură USB.

Comentarii

  • Mai multe informații se găsesc aici. – user15074
  • github.com/pelya/android-keyboard-gadget Aceasta a fost implementată aici… și aplicația Android necesară este, de asemenea, disponibilă –  > Por Abhigyan.
Mini-Me

Acest lucru nu răspunde exact la întrebarea dvs., dar ar putea ajuta în cazul dvs. de utilizare.

Poate doriți să aruncați o privire la InputStick. Va fi o unitate USB pe care o cuplezi la Android prin Bluetooth. Conectat la un computer, acesta emulează un USB HID generic pentru a trimite lovituri de tastatură. Un API Java avansat va permite, de asemenea, să specificați, de exemplu, descriptori de dispozitiv pentru a emula funcții non-standard. Ar putea oferi un exemplu frumos că este definit în software mai degrabă decât în hardware.

Pentru referință, dezvoltatorul lucrează, de asemenea, la programe de exemplu, cum ar fi un Demo Password Manager.

Ryan Conrad

Cel puțin, acest lucru ar necesita atât software pe telefon, cât și pe PC. Cele 2 bucăți de software ar trebui să comunice între ele. Din câte știu eu, nu există nimic de acest gen în prezent.

Iar pentru ca PC-ul să creadă că dispozitivul este cu adevărat o tastatură, ar fi nevoie de un nou driver care să îi spună PC-ului că dispozitivul este o tastatură și cum „să o folosească ca o tastatură”.

Nu spun că nu este posibil, pentru că aproape orice este posibil când vine vorba de astfel de lucruri. Ceea ce vreau să spun, însă, este că în prezent nu există așa ceva.

USB este atât hardware, cât și software, dacă ar fi doar software, atunci același driver USB ar funcționa pentru toate dispozitivele android pe Windows, dar nu este cazul. USB mass-storage și MTP sunt gestionate de driverele de pe PC, nu de dispozitiv. Ce dispozitive suportă atât MTP, cât și USB mass-storage și în același timp? Am găsit articole în care se afirmă că dispozitivele pot suporta UMS și MTP, dar suportă UMS numai dacă există un card sdcard extern. Nu puteți monta sdcardul extern cu MTP și cu UMS. MTP este pentru stocarea internă. Și nu am citit nimic care să confirme sau să infirme faptul că le poți folosi pe amândouă în același timp.

Nu trebuie să instalezi drivere pentru tastaturi, dacă acestea respectă specificațiile „implicite”, deoarece windows are deja driverele pentru ele. Există tastaturi care vin cu propriile drivere. După cum am spus, ar fi posibil. Nu sunt sigur de modul în care s-ar putea realiza. Aproape sigur ar fi nevoie de un kernel personalizat cel puțin pentru ca acesta să se comporte ca o tastatură și să nu fie nevoie de drivere suplimentare pe partea de PC.

În plus, sunt de acord cu @davidbb că este posibil și am spus deja că este. Problema cu o întrebare care întreabă dacă ceva este posibil, nu rezolvă niciodată problema. Ar fi ca și cum aș spune „este posibil să ruleze aplicații ios nativ pe Windows?”. Acest lucru este teoretic posibil, dar nu există nimic care să facă acest lucru în prezent și nu există ceva ce un „utilizator normal” (sau chiar un utilizator avansat) poate face pentru a face acest lucru să se întâmple. Acest site este orientat către utilizatori, așa că a spune că trebuie doar să scrii un kernel modificat nu este un răspuns care va fi în beneficiul nimănui. Așadar, răspunsul real la întrebare este nu, pentru că nu există un kernel modificat.

Comentarii

  • IIRC, capătul android al conexiunii USB este realizat în software (trebuie să fie într-o oarecare măsură pentru ca același hardware să acționeze atât ca un dispozitiv USB de stocare în masă, cât și ca MTP). Pornind de la acest lucru, ce ar putea împiedica un driver de dispozitiv să facă dispozitivul să se anunțe ca fiind un HID generic? Dacă se poate face acest lucru, atunci aceleași drivere pentru PC care gestionează orice altă tastatură o vor gestiona (la fel cum se face pentru lucruri precum cititoarele de coduri de bare și cititoarele de cărți de credit). –  > Por BCS.
  • Am completat răspunsul meu pentru a răspunde comentariului dumneavoastră. –  > Por Ryan Conrad.
  • Dispozitivele Android (hardware) care au fost construite înainte de utilizarea MTP funcționează acum ca clasa MTP USB, astfel încât clasele cu care dispozitivul pretinde că funcționează trebuie să fie definite în software. Nu-mi amintesc dacă am vreodată instalat un driver pentru un tastatură (sau, de altfel, un driver non-generic pentru conectarea unui dispozitiv Android), astfel că nu ar trebui să fie nevoie să se instaleze nimic pe partea de PC. Dacă le combinăm și eu sunt aproape sigur că hardware-ul poate face acest lucru. Singura întrebare rămasă este: oferă Android stock acces la butoanele necesare sau ar fi nevoie de construirea unui kernel personalizat? –  > Por BCS.
  • Re: A 2-a editare. Cred că sunt în căutarea cuiva care știe definitiv ce ar fi nevoie. (Poți să muți ultimul paragraf în partea de sus?).  > Por BCS.
  • Acest răspuns este greșit, nu este nevoie de niciun software pe partea de PC. Diferite telefoane necesită drivere diferite, deoarece producătorii nu folosesc toți același număr de identificare a furnizorului. Cu toate acestea, tastaturile se încadrează într-o categorie diferită de dispozitive, în care sunt recunoscute de gazdă în funcție de tip, astfel încât ID-ul furnizorului nu prea contează. VID/PID, tipul de dispozitiv, protocoalele etc. sunt toate implementate în software pe partea de android și pot fi modificate de oricine care dispune de sursa kernelului și de o modalitate de a instala rezultatul compilat. –  > Por Chris Stratton.
user207748

Ați încercat Unified Remote. Acesta este un instrument excelent pentru a folosi telefonul ca tastatură și mouse. Nu folosește USB, ci wifi în schimb. Există o aplicație pe telefon și pe computer care funcționează împreună. Funcționează foarte bine pentru mine. De asemenea, dacă obțineți versiunea completă, veți obține integrarea cu multe aplicații comune.

Comentarii

  • Caut o soluție pentru cazurile care includ lucruri precum tastarea parolelor în cererile de pornire BIOS, astfel încât să nu pot instala cu adevărat niciun fel de client. –  > Por BCS.
Abhigyan

Am căutat ceva similar și am găsit

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

Se pare că același lucru poate fi folosit în cazul dvs..Pe scurt, ceea ce am înțeles este că trebuie să scrieți driverul USB în kernelul Android pentru a detecta deivce ca HID.

Limer

Este acum >șase ani mai târziu și undeva între timp cineva a creat Keepass2 USB KeyboardPlugin pentru Keepass2Android.

Am vrut să adaug acesteinformații aici de dragul completitudinii și pentru că am găsit această întrebare fără răspuns și plugin-ul menționat mai sus whilesearching pentru exact ceva de genul acesta.

Nu l-am testat eu însumi încă…

utilizator3776541

InputStick este un receptor USB fără fir, conceput pentru dispozitivele Android. Acesta permite aplicațiilor Android să emuleze multe tipuri diferite de dispozitive, de exemplu: Tastatură USB, mouse USB, Gamepad USB și multe altele. Cu InputStick, aplicațiile Android pot face tot ceea ce poate face un dispozitiv fizic: tastatura, deplasarea indicatorului mouse-ului, controlul multimedia și al jocurilor.

Informații pot fi găsite la http://inputstick.com/

Comentarii

  • Aceasta se citește ca o reclamă. Care este relația dumneavoastră cu acest produs? –  > Por Dan Hulme.