Чи може пристрій претендувати на USB-клавіатуру?


16

Що я шукаю:

Чи є спосіб примусити пристрій претендувати на клавіатуру / HID під час підключення до порту USB та "набрати" вміст буфера обміну? Більш точно; Що потрібно, щоб це сталося?

Мотиваційний випадок використання:

У мене на телефоні програма зберігання паролів, але прикро, щоб прочитати пароль з пристрою і спробувати ввести його на інший комп'ютер.

Фон:

У мене є пристрій Android, який був побудований до того, як підтримка MTP підтримувалася для передачі файлів, але, з останніми оновленнями, тепер його підтримує. Виходячи з цього, клас USB, який, як він стверджує, не може бути визначений апаратним забезпеченням і повинен бути визначений у програмному забезпеченні.

IIRC, у цьому проекті є пристрої Android (з тим, що я думаю, що це запас ядра), які розмовляють як якийсь клас USB, який остаточно не вбудований. Це вказує мені, що ви могли б бути в змозі контролювати те , що класи USB він підтримує без роботи ядра , але я не знаю точно.

Що стосується хостової сторони (тобто ПК), я ніколи не бачив, щоб для ПК, Mac чи Linux вікна не потребували спеціальних накопичувачів для клавіатур, навіть для деяких досить езотеричних пристроїв, які претендують на клавіатуру (сканери штрих-коду, кредитна картка та смарт зчитувачі карт тощо), тому загальні драйвери повинні бути досить хорошими для того, що я хочу.

Все це стверджує, що те, що я шукаю, можна зробити з апаратної точки зору , але дуже мало говорить про те, що існує підтримка програмного забезпечення, і нічого про те, якщо для цього є додаток.


2
Ви можете спробувати використовувати KeePass (KeePassDroid на android, Keepassx на Linux та ін.) Як на телефоні, так і на комп’ютері, а також просто синхронізувати файл бази даних між ними або отримати доступ до файлу бази даних на телефоні через USB з комп'ютера. Інші менеджери паролів також можуть мати аналоги "справжнього комп'ютера".
ДРУГА

@TREE: Це може спрацювати в деяких випадках, але однією з конкретних цільових звичаїв є те, коли я не маю можливості встановлювати щось на ПК (або немає доступу, або проблема з куркою / яйцями, як паролі системного входу) .
BCS

також є портативна версія KeePass, яка може працювати з USB-накопичувача. Це може працювати від змонтованого Android-накопичувача USB, але, безумовно, не стосується всіх можливих випадків використання.
ДРУГА

Відповіді:


15

Так. Це, безумовно, можливо, не вимагаючи жодних модифікацій чи драйверів на ПК. Як зазначає ОП, ідентифікація USB на кінці телефону в кінцевому підсумку робиться в програмному забезпеченні (у цьому файлі https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ), і його можна було б модифікувати для ідентифікації себе як стандартної клавіатури USB.

Ця зміна потребує кількох речей.

  1. Змінене ядро ​​з виправленим драйвером USB
  2. Додаток для Android, який може спілкуватися з деяким інтерфейсом, підданим модифікованому драйверу USB.

Кілька років тому була опублікована стаття (під назвою " Використання USB-підключення смарт-телефону для розваги та прибутку" ), в якій описано використання телефону для екранів входу на робочий стіл з грубою силою. Метод, який вони застосовували, полягав у тому, щоб телефон відображався як USB-клавіатура.


Більше інформації можна знайти тут .
sampablokuper

github.com/pelya/android-keyboard-gadget Це було реалізовано тут .. і потрібний додаток для android також доступний
Абгігян

2

Це не відповідає точно на ваше запитання, але може допомогти у вашому випадку використання.

Можливо, ви хочете подивитися на InputStick . Це буде USB-накопичувач, який ви підключаєте до Android через Bluetooth. Підключений до комп'ютера, він імітує загальний USB HID для надсилання обведення клавіатури. Розширений Java API також дозволить вказати дескриптори пристрою для емуляції нестандартних функцій. Це може навести приємний приклад того, що він визначений у програмному, а не в апаратному забезпеченні.

Для довідки, розробник також працює над прикладними програмами, такими як Demo Password Manager.


0

Як мінімум, для цього знадобиться як програмне забезпечення на телефоні, так і на ПК. Дві частини програмного забезпечення мали б спілкуватися один з одним. Нічого подібного, про що я зараз знаю, не існує.

І щоб ПК подумав, що пристрій справді клавіатура, йому знадобиться новий драйвер, який би сказав ПК, що пристрій - це клавіатура, і як "використовувати його як клавіатуру".

Я не кажу, що це неможливо, тому що мова йде про подібні речі. Що я говорю, це те, що в даний час нічого подібного не існує.

USB - це як апаратне, так і програмне забезпечення, якщо це було тільки програмне забезпечення, то той самий драйвер USB працював би для всіх пристроїв Android у Windows, і це не так. USB-накопичувач та MTP обробляються драйверами ПК, а не пристроєм. Які пристрої підтримують одночасно MTP та USB масового зберігання? Я знайшов статті, в яких говориться, що пристрої можуть підтримувати UMS та MTP, але підтримують UMS лише за наявності зовнішньої карти SDD. Ви не можете встановити зовнішню sdcard за допомогою MTP та UMS. MTP призначений для внутрішнього зберігання. І я не читав нічого, що може підтвердити або заперечити, що ви можете використовувати обидва одночасно.

Вам не доведеться встановлювати драйвери для клавіатур, якщо вони дотримуються специфікації "за замовчуванням", оскільки Windows вже має драйвери для цього. Є клавіатури, які постачаються із власними драйверами. Як я вже сказав, це було б можливо. Я не впевнений, як би це було зроблено. Майже напевно, потрібно, щонайменше, користувальницьке ядро, щоб воно працювало як клавіатура і не потрібні додаткові драйвери на стороні ПК.

Додатково я погоджуюся з @davidbb, що це можливо, і я вже сказав, що це так. Проблема з питанням, що задають, чи можливо щось, ніколи не вирішує проблему. Було б так, як я кажу: "чи можна мені запускати ios-програми на самому Windows?". Це теоретично можливо, але немає нічого, що робить це зараз, і немає того, що "звичайний користувач" (або навіть досвідчений користувач) може зробити для цього. Цей сайт орієнтований на користувачів, тому сказати, що вам потрібно просто написати змінене ядро ​​- це не відповідь, яка допоможе комусь. Тож справжня відповідь на питання - ні, тому що там немає модифікованого ядра.


IIRC, андроїд-кінець USB-з'єднання виконаний у програмному забезпеченні (до певної міри це повинно бути одне і те ж обладнання, як USB-накопичувач, так і MTP). Виходячи з цього, що полягає в тому, щоб запобігти лише драйверу на стороні пристрою, щоб пристрій оголосив про себе як загальний HID? Якщо це вдасться зробити, то ті ж драйвери на стороні ПК, які керують будь-якою іншою клавіатурою, будуть справлятися з цим (як це робиться для таких речей, як сканери штрих-коду та зчитувачі кредитних карт).
BCS

Я додав свою відповідь, щоб адресувати ваш коментар.
Райан Конрад

Пристрої Android (апаратні засоби), які були побудовані до використання MTP, тепер функціонують як USB-клас MTP, таким чином, класи, для яких пристрій заявляє, що працюють, повинні бути визначені в програмному забезпеченні. Я не можу пригадати, щоб я коли-небудь встановлював драйвер для клавіатури (або, з цього приводу, не загальний драйвер для підключення пристрою Android), тому нічого не потрібно встановлювати на ПК. Поєднайте ці, і я майже впевнений, що апаратне забезпечення може це зробити. Залишилося лише питання: чи забезпечує Android Android доступ до потрібних ручок, чи це потребує побудови користувальницького ядра?
BCS

Re: 2-е редагування. Я думаю, я шукаю когось, хто остаточно знає, що це знадобиться. (Чи можете ви перенести останній абзац до верху?)
BCS

Ця відповідь неправильна, програмне забезпечення на стороні ПК не потрібно. Для різних телефонів потрібні різні драйвери, оскільки виробники не використовують один ідентичний номер постачальника. Однак клавіатури потрапляють в іншу категорію пристроїв, де їх розпізнає хост за типом, тому ідентифікатор постачальника насправді не має значення. VID / PID, тип пристрою, протоколи тощо реалізуються в програмному забезпеченні на андроїдній стороні і можуть змінюватися будь-ким із джерелом ядра та способом встановлення компільованого результату.
Кріс Страттон

0

Ви спробували Unified Remote . Це чудовий інструмент для використання телефону як клавіатури та миші. Він не використовує USB, а Wi-Fi натомість. На телефоні та комп’ютері є додаток, який працює разом. Для мене чудово працює. Крім того, якщо ви отримаєте повну версію, ви отримаєте інтеграцію з багатьма поширеними програмами.


Я шукаю рішення для випадків, які включають такі речі, як введення паролів у підказки для завантаження BIOS, тому я не можу реально встановити будь-який тип клієнта.
BCS

0

Я шукав щось подібне і знайшов

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

Здається, те саме можна використати і у вашому випадку. Якщо коротко, що я отримав - це ти повинен написати драйвер usb в ядро ​​Android, щоб виявити deivce як HID.


0

Зараз це> шість років потому і десь між ними хтось створив плагін USB-клавіатури Keepass2 для Keepass2Android .

Я хотів додати цю інформацію сюди задля повноти і тому, що я знайшов це питання без відповіді та згаданий вище плагін під час пошуку саме такого подібного.

Я його ще не перевіряв ...


-1

InputStick - це бездротовий USB-приймач, призначений для пристроїв Android. Це дозволяє програмам Android імітувати багато різних видів пристроїв, наприклад: USB клавіатура, USB миша, USB геймпад та багато іншого. За допомогою InputStick програми Android можуть робити все, що фізичний пристрій: набирати, переміщувати вказівник миші, керувати мультимедіа та іграми.

Інформацію можна знайти на веб- сайті http://inputstick.com/


1
Це звучить як реклама. Які у вас стосунки з цим продуктом?
Dan Hulme
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.