Имитация USB-клавиатуры от машины
Я хочу использовать один компьютер в качестве клавиатуры USB для другого компьютера. Это должно быть неотличимо от фактической клавиатуры USB. Как мне этого добиться?
Решение, которое работает с любой из Ubuntu Linux 14 и выше, OS X 10.11 или Windows 10 будет приемлемым. Должен работать с USB 2.0 или 3.0.
РЕДАКТИРОВАТЬ: машина для получения ввода не должна требовать какого-либо специального программного обеспечения или доступа к сети. Мне нужно использовать физический USB-кабель, и конечный компьютер должен реагировать так, как если бы на этом USB-порту присутствовала физическая клавиатура.
9 ответов
Вы можете использовать Raspberry Pi Zero в режиме USB-гаджета. В этом режиме Raspberry Pi может вести себя как многие стандартные USB-устройства (клавиатура, мышь, запоминающее устройство и т. Д.), И тогда вы сможете, например, "вводить" нажатия клавиш из программы, запущенной на Pi (и затем вы можете контролировать эта программа удаленно, как вы считаете нужным).
Raspberry Pi Zero - не единственное устройство, позволяющее это сделать; но это дешево, его легко получить, и есть много документов, объясняющих, как это сделать, так что (ИМХО) довольно хорошая отправная точка для такого проекта!
В конце концов я нашел аппаратное устройство для этого на AliExpress . Это делает его чем-то вроде черного ящика, хотя я подозреваю, что внутри он работает так же, как в ответе Сьерда .
Конец USB устройства отображается на хосте как HID-клавиатура, и я могу подключиться к последовательному концу с другого компьютера и отправить на него символы, которые затем будут «введены». Существуют специальные шаблоны, позволяющие использовать клавиши-модификаторы. Если передающий компьютер не имеет реального последовательного порта, с ним также можно использовать обычный последовательный USB-адаптер, хотя в этом случае будет сложнее определить, какой конец притворяется клавиатурой.
Это было, безусловно, самое дешевое решение, которое я нашел, около 10 долларов США по сравнению с другими продуктами, которые я видел, стоимостью около 100 долларов или больше. Если бы мне понадобилось больше и товар AliExpress исчез, я бы попробовал решение Teensy.
Я добился успеха с etherkey, Teensy и мостом UART-USB .
Главный компьютер отправляет команды Teensy через мост UART. Teensy делает вид, что это клавиатура, и нажимает виртуальные кнопки на другом компьютере. Etherkey — это программное обеспечение, которое работает на Teensy и перенаправляет клавиши с главного компьютера на виртуальную клавиатуру.
Компьютер назначения сразу обнаружил новую «клавиатуру» и не нуждался в какой-либо настройке.
Изменить: я также запустил Etherkey на плате разработки ATmega32u4 , которая более доступна и дешевле, чем Teensy.
Вы можете использовать usbip, чтобы сделать USB-устройства (включая клавиатуру) на главном компьютере доступными в качестве USB-устройств на клиентском компьютере по сети. Так как это USB-устройство, оно будет неотличимо от любого USB-устройства, подключенного локально.
Клиенты существуют для Windows, и usbip уже долгое время является стандартной частью ядра. Под Debian и Ubuntu, usbip
Пакет содержит программы для настройки и управления таким соединением.
Подробности о том, как его настроить, можно легко найти, например, здесь.
Подобные вопросы:
Я столкнулся с той же ситуацией (конкретный сценарий: мне нужно удаленно разблокировать свою рабочую станцию с экрана BitLocker PRE-OS). Я заказал следующее аппаратное обеспечение, поэтому публикую его, чтобы поделиться своими исследованиями , а не опытом.
«Исходный» компьютер имеет следующее:
USB-устройство захвата HDMI. Устройства более низкого уровня можно найти на AMZN примерно за 20 долларов США.
Периферийное USB-устройство для имитации USB HID. Стоимость 90 долларов США.
Это должно обеспечить исходному компьютеру ту же функциональность, что и USB-моноблок «все в одном» стоимостью 500 долларов .
«Целевой» компьютер имеет следующее:
- Разветвитель HDMI, чтобы я мог использовать консоль, когда нахожусь за компьютером. Устройства более низкого уровня можно найти на AMZN за 15 долларов США.
Общая стоимость составит( $20 + $90 + $15 ) * 2 = $250 USD
поэтому каждый компьютер в паре может контролировать и управлять другим компьютером от POST до ОС в режиме онлайн (уровень запуска 5).
Пожелайте мне удачи в том, чтобы мой администратор одобрил эти расходы!
Используйте USB-приемник Logitech Unifying и эмулируйте виртуальную клавиатуру с помощью этого: https://github.com/RoganDawes/LOGITacker
Всего должно получиться около 20 долларов.
Одним из возможных решений является добавление ключа Bluetooth к целевому компьютеру и эмуляция клавиатуры Bluetooth с главного компьютера.
У меня та же проблема, и я заметил аппаратное решение pikvm, которое может косвенно решить эту проблему, однако для моего бюджета я искал что-то гораздо менее затратное. Я все еще ищу.
Учитывая время, прошедшее между OP и настоящим, это может быть спорным. Однако для всех, у кого есть подобный вопрос, я предлагаю следующее решение:
- Купите дешевую USB-клавиатуру, ту, которая стоит от 5 до 20 долларов или около того.
- Разберите его и возьмите секцию контроллера и разъема USB, затем подключите свой "контроллер" к контактным разъемам, предназначенным для матрицы клавиатуры. (Само собой разумеется, что потребуется пайка.)
- Выделите контакты, изучив контактную матрицу или программу.
- Создайте свою программу управления, используя отображение.
- Настройте свою программу на загрузку и запуск OnBoot - и вперед!
Управляющая программа может быть написана на любом языке, который поддерживает способ вывода, который будет управлять входами "ключевой" матрицы контроллера клавиатуры, а концевой штекер USB подключается к целевому компьютеру в качестве USB-клавиатуры по желанию.
Если вы используете ОС на базе Linux, Python, вероятно, станет вашим предпочтительным языком. При использовании ОС на базе Windows.Net, вероятно, будет вашим предпочтительным языком (конкретный вариант C#, VB зависит от вас). Скорее всего, можно использовать даже Node.js или PHP, если вы можете управлять выводами GPIO или параллельного порта.
Удачного взлома!