Имитация 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-моноблок «все в одном» стоимостью 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 и настоящим, это может быть спорным. Однако для всех, у кого есть подобный вопрос, я предлагаю следующее решение:

  1. Купите дешевую USB-клавиатуру, ту, которая стоит от 5 до 20 долларов или около того.
  2. Разберите его и возьмите секцию контроллера и разъема USB, затем подключите свой "контроллер" к контактным разъемам, предназначенным для матрицы клавиатуры. (Само собой разумеется, что потребуется пайка.)
  3. Выделите контакты, изучив контактную матрицу или программу.
  4. Создайте свою программу управления, используя отображение.
  5. Настройте свою программу на загрузку и запуск OnBoot - и вперед!

Управляющая программа может быть написана на любом языке, который поддерживает способ вывода, который будет управлять входами "ключевой" матрицы контроллера клавиатуры, а концевой штекер USB подключается к целевому компьютеру в качестве USB-клавиатуры по желанию.

Если вы используете ОС на базе Linux, Python, вероятно, станет вашим предпочтительным языком. При использовании ОС на базе Windows.Net, вероятно, будет вашим предпочтительным языком (конкретный вариант C#, VB зависит от вас). Скорее всего, можно использовать даже Node.js или PHP, если вы можете управлять выводами GPIO или параллельного порта.

Удачного взлома!

Другие вопросы по тегам