Czy urządzenie może udawać klawiaturę USB?

16

Czego szukam:

Czy istnieje sposób, aby urządzenie twierdziło, że jest klawiaturą / HID po podłączeniu do portu USB i „wpisaniu” zawartości schowka? Dokładniej; Co by to zrobiło?

Motywujący przypadek użycia:

Mam w telefonie program do zabezpieczania haseł, ale denerwujące jest odczytywanie hasła z urządzenia i próby wpisania go na innym komputerze.

Tło:

Mam urządzenie z Androidem, które zostało zbudowane zanim MTP było obsługiwane do przesyłania plików, ale dzięki najnowszym aktualizacjom teraz je obsługuje. Na tej podstawie klasa USB, którą twierdzi, nie może być zdefiniowana sprzętowo i musi zostać zdefiniowana w oprogramowaniu.

IIRC, projekt ten ma urządzeń Android (co moim zdaniem jest kernel) rozmowy jako pewnego klasy USB, który nie został ostatecznie zbudowany. To wskazuje mi się, że może być w stanie kontrolować tego, co USB klasy obsługiwać bez pracy jądra ale nie wiem na pewno.

Jeśli chodzi o stronę hosta (tj. PC), nigdy nie widziałem, aby komputer, Mac lub Linux wymagały specjalnych napędów do klawiatur, nawet dla niektórych raczej ezoterycznych urządzeń, które podają się za klawiatury (skanery kodów kreskowych, karty kredytowe i inteligentne czytniki kart itp.), więc ogólne sterowniki powinny być wystarczające do tego, czego chcę.

Wszystko to dowodzi, że tego, czego szukam, można zrobić ze sprzętowego punktu widzenia , ale niewiele mówi o tym, jakie wsparcie programowe istnieje i nic, jeśli jest do tego odpowiednia aplikacja.

BCS
źródło
2
Możesz spróbować użyć KeePass (KeePassDroid na Androidzie, keepassx na Linuksie itp.) Na telefonie i komputerze i po prostu zsynchronizuj plik bazy danych między nimi lub uzyskaj dostęp do pliku bazy danych na telefonie przez USB z komputera. Inni menedżerowie haseł mogą również mieć odpowiedniki „prawdziwego komputera”.
DRZEWO
@ DRZEWO: Może to działać w niektórych przypadkach, ale jednym ze szczególnych zastosowań docelowych jest brak możliwości zainstalowania czegoś na komputerze (brak dostępu lub problem z jajkiem / kurczakiem, np. Hasła logowania do systemu) .
BCS
istnieje również przenośna wersja KeePass, która może działać z pamięci USB. Może to działać z zamontowanego urządzenia pamięci USB z systemem Android, ale z pewnością nie dotyczy wszystkich możliwych przypadków użycia.
DRZEWO

Odpowiedzi:

15

Tak. Jest to zdecydowanie możliwe, nie wymagając żadnych modyfikacji ani sterowników na komputerze. Jak wspomina OP, identyfikacja USB po stronie telefonu jest ostatecznie wykonywana programowo (w tym pliku https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ) i można go zmodyfikować, aby identyfikował się jako standardowa klawiatura USB.

Ta zmiana wymagałaby kilku rzeczy.

  1. Zmodyfikowane jądro ze załatanym sterownikiem USB
  2. Aplikacja na Androida, która może komunikować się z interfejsem ujawnionym przez zmodyfikowany sterownik USB.

Było artykule opublikowanym kilka lat temu (zatytułowanych Wykorzystując złącze USB smart-telefonu dla zabawy i zysku ), które opisane za pomocą telefonu do brute-force ekranów pulpitu logowania. Zastosowana metoda polegała na wyświetleniu telefonu jako klawiatury USB.

davidbb
źródło
Więcej informacji można znaleźć tutaj .
sampablokuper
github.com/pelya/android-keyboard-gadget Zostało zaimplementowane tutaj .. i wymagana jest również wymagana aplikacja na Androida
Abhigyan
2

To nie odpowiada dokładnie na twoje pytanie, ale może pomóc w twoim przypadku użycia.

Może chcesz rzucić okiem na InputStick . Będzie to pendrive USB sparowany z Androidem przez Bluetooth. Podłączony do komputera emuluje ogólny interfejs USB HID do wysyłania uderzeń klawiatury. Zaawansowany interfejs API języka Java umożliwia także określenie np. Deskryptorów urządzeń w celu emulacji niestandardowych funkcji. Może to być dobry przykład, że jest zdefiniowany w oprogramowaniu, a nie w sprzęcie.

W celach informacyjnych programista pracuje również nad przykładowymi programami, takimi jak Demo Password Manager.

Mini Ja
źródło
0

Wymagałoby to przynajmniej oprogramowania na telefonie i komputerze. Te dwa programy musiałyby się ze sobą komunikować. Nic takiego, o czym wiem obecnie, nie istnieje.

Aby komputer mógł pomyśleć, że urządzenie jest naprawdę klawiaturą, wymagałby nowego sterownika, który powiedziałby komputerowi, że urządzenie jest klawiaturą i jak „używać go jako klawiatury”.

Nie twierdzę, że nie jest to możliwe, ponieważ prawie wszystko jest możliwe, jeśli chodzi o takie rzeczy. Mówię jednak, że obecnie nic takiego nie istnieje.

USB to zarówno sprzęt, jak i oprogramowanie. Gdyby to było tylko oprogramowanie, ten sam sterownik USB działałby na wszystkich urządzeniach z Androidem w systemie Windows, i tak nie jest. Pamięć masowa USB i MTP są obsługiwane przez sterowniki komputera, a nie urządzenie. Jakie urządzenia obsługują jednocześnie pamięć masową MTP i USB? Znalazłem artykuły stwierdzające, że urządzenia mogą obsługiwać UMS i MTP, ale obsługują UMS tylko wtedy, gdy istnieje zewnętrzna karta SD. Nie można zamontować zewnętrznej karty SD za pomocą MTP i UMS. MTP służy do pamięci wewnętrznej. I nie przeczytałem niczego, co mogłoby potwierdzić lub zaprzeczyć, że możesz używać obu jednocześnie.

Nie trzeba instalować sterowników dla klawiatur, jeśli są one zgodne ze „domyślną” specyfikacją, ponieważ system Windows już je obsługuje. Istnieją klawiatury, które mają własne sterowniki. Jak powiedziałem, byłoby to możliwe. Nie jestem pewien, jak by to było zrobione. Prawie na pewno wymagałoby to niestandardowego jądra, aby działało jak klawiatura i nie wymagało żadnych dodatkowych sterowników po stronie komputera.

Ponadto zgadzam się z @davidbb, że jest to możliwe i już powiedziałem, że jest. Problem z pytaniem, czy coś jest możliwe, nigdy nie rozwiązuje problemu. To tak, jakbym powiedział „czy mogę uruchamiać aplikacje iOS natywnie w systemie Windows?”. Jest to teoretycznie możliwe, ale nic nie robi tego teraz i nie ma nic, co mógłby zrobić „normalny użytkownik” (lub nawet zaawansowany użytkownik). Ta strona jest przeznaczona dla użytkowników, więc powiedzenie, że wystarczy napisać zmodyfikowane jądro, nie jest odpowiedzią, która przyniesie korzyść każdemu. Prawdziwa odpowiedź na to pytanie brzmi: nie, ponieważ nie ma tam zmodyfikowanego jądra.

Ryan Conrad
źródło
IIRC, koniec połączenia USB systemu Android odbywa się w oprogramowaniu (musi być do pewnego stopnia, aby ten sam sprzęt działał zarówno jako urządzenie pamięci masowej USB, jak i MTP). W związku z tym, co ma zapobiec temu, aby sterownik tylko po stronie urządzenia ogłaszał, że jest samodzielny jako ogólny HID? Jeśli można to zrobić, poradzą sobie z tym te same sterowniki po stronie komputera, które obsługują każdą inną klawiaturę (podobnie jak w przypadku skanerów kodów kreskowych i czytników kart kredytowych).
BCS
Dodałem do mojej odpowiedzi, aby odpowiedzieć na twój komentarz.
Ryan Conrad
Urządzenia z Androidem (sprzęt), które zostały zbudowane przed użyciem MTP, działają teraz jako klasa MTP USB, a zatem klasy, które według twierdzenia urządzenia działają, muszą być zdefiniowane w oprogramowaniu. Nie pamiętam, czy kiedykolwiek zainstalowałem sterownik klawiatury (lub zresztą nietypowy sterownik do podłączania urządzenia z Androidem), więc nic nie powinno wymagać instalacji po stronie komputera. Połącz je i jestem prawie pewien, że sprzęt to potrafi. Pozostaje tylko pytanie: czy zwykły Android zapewnia dostęp do potrzebnych pokręteł, czy może to wymaga zbudowania niestandardowego jądra?
BCS
Odp: 2. edycja. Chyba szukam kogoś, kto definitywnie wie, czego to zajmie. (Czy możesz przenieść ten ostatni akapit na górę?)
BCS
Ta odpowiedź jest niepoprawna, po stronie komputera nie jest wymagane żadne oprogramowanie. Różne telefony wymagają różnych sterowników, ponieważ wszyscy producenci nie używają tego samego numeru identyfikacyjnego dostawcy. Klawiatury należą jednak do innej kategorii urządzeń, w których są rozpoznawane przez host według typu, więc identyfikator dostawcy nie ma tak naprawdę znaczenia. VID / PID, typ urządzenia, protokoły itp. Są zaimplementowane w oprogramowaniu po stronie Androida i mogą być zmieniane przez każdego, kto ma źródło jądra i sposób na zainstalowanie skompilowanego wyniku.
Chris Stratton,
0

Czy próbowałeś Unified Remote . To świetne narzędzie do korzystania z telefonu jako klawiatury i myszy. Zamiast tego nie używa USB, ale Wi-Fi. Na telefonie i komputerze jest aplikacja współpracująca ze sobą. Działa świetnie dla mnie. Również w przypadku uzyskania pełnej wersji można uzyskać integrację z wieloma popularnymi aplikacjami.

użytkownik207748
źródło
Szukam rozwiązania dla przypadków, które obejmują wpisywanie haseł w monitach rozruchowych systemu BIOS, więc nie mogę naprawdę zainstalować żadnego klienta.
BCS,
0

Teraz jest> sześć lat później i gdzieś pomiędzy ktoś stworzył wtyczkę Keepass2 USB Keyboard dla Keepass2Android .

Chciałem dodać tę informację tutaj ze względu na kompletność i ponieważ znalazłem to pytanie bez odpowiedzi i wspomnianą wtyczkę podczas wyszukiwania dokładnie czegoś takiego.

Sam jeszcze tego nie testowałem ...

Limer
źródło
-1

InputStick to bezprzewodowy odbiornik USB, zaprojektowany dla urządzeń z systemem Android. Pozwala aplikacjom na Androida emulować wiele różnych rodzajów urządzeń, na przykład: Klawiatura USB, Mysz USB, USB Gamepad i wiele innych. Dzięki InputStick aplikacje na Androida mogą robić wszystko, co potrafi urządzenie fizyczne: pisać, przesuwać wskaźnik myszy, sterować multimediami i grami.

Informacje można znaleźć na stronie http://inputstick.com/

użytkownik3776541
źródło
1
To brzmi jak reklama. Jakie są twoje relacje z tym produktem?
Dan Hulme