Отправить нажатия клавиш в реальном времени на машину из внешнего источника без установки программного обеспечения на этом компьютере? Возможно, USB-ключ, который регистрируется как клавиатура?

7064
Some_Guy

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

Мне нужно решение, с помощью которого я могу получать нажатия клавиш на машине в режиме реального времени, не устанавливая на нее никакого программного обеспечения. Тем не менее, наличие драйверов или программного обеспечения на машине, отправляющей нажатия клавиш, не является проблемой.

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

4
А как насчет блютуз клавиатуры и ресивера? Вы избегаете этого? Вам просто нужно установить драйвер для одного из них. Datarecovery.com MK 9 лет назад 0
Можете ли вы получить Bluetooth-клавиатуру, которая принимает внешние нажатия клавиш от второго устройства? Some_Guy 9 лет назад 0
Я отправил ответ, так как это слишком долго Datarecovery.com MK 9 лет назад 0
Кстати, я учился в колледже во время компьютерного каменного века (до появления Bluetooth), и исследователь нуждался в основном в том, что вы описываете. Он построил платформу, которая находилась на верхней части клавиатуры, с активированным соленоидом поршнем для каждой клавиши. Затем он отправил инструкции по печатанию на свое устройство с другого компьютера. Я предполагаю, что это не будет практическим решением для вас. fixer1234 9 лет назад 0
надеясь не строить ничего, ага, ха-ха. Как теперь вопрос, как вы думаете? Some_Guy 9 лет назад 0
Я прочитал вопрос несколько раз, но я просто не понимаю, если вы можете подключить ключ Bluetooth, почему бы просто не подключить USB-клавиатуру? Chris.C 9 лет назад 0
https://www.pjrc.com/teensy/td_keyboard.html ssnobody 9 лет назад 0
@ Chris.C: цель состоит в том, чтобы отправить нажатия клавиш из сценария на другой компьютер для автоматизации некоторых задач. Без возможности загружать программное обеспечение на принимающий компьютер, один из предложенных подходов - заставить компьютер думать, что он получает ввод с клавиатуры, перенаправляя ввод через приемник клавиатуры. fixer1234 9 лет назад 0
@ssnobody, вы знаете, может ли этот чип принимать нажатия клавиш в режиме реального времени или просто запрограммирован? Также, прикомандировав фиксатор, ответьте пожалуйста как ответ :) Some_Guy 9 лет назад 0
@ Some_Guy Честно говоря, я не чувствую здесь проблемы. Если у вас есть права доступа к этим компьютерам, вы сможете подключиться к ним удаленно. Так почему же Linux `ssh` и windows` psexec` не являются решением? mnmnc 9 лет назад 0
@Some_Guy: 1) Ключ может не иметь собственного драйвера, что подразумевает загрузку драйвера для него. Это приемлемо? 2) Вы не описываете характер задач, которые вы хотите выполнить. Могут ли они быть выполнены действиями после монтирования жесткого диска во время сеанса Linux в реальном времени (загрузите liveDVD или RAM-резидентный дистрибутив на принимающей машине, смонтируйте жесткий диск, выполните действия на нем)? Такой подход даже не потребует подделки клавиатуры. Вы можете использовать программное обеспечение для дистанционного управления или команды оболочки и подключение к локальной сети без необходимости устанавливать что-либо. fixer1234 9 лет назад 0
Я ценю комментарии, в которых просил меня дать ответ, но я хотел найти решение, не тратя время на создание хорошего ответа. Я уверен, что вы согласитесь, что комментарий, указывающий вам (и другим, кто может пожелать написать более полный ответ) в работоспособном направлении, лучше, чем ничего. Лично я мог бы подключить модуль Ethernet и сделать его эхо-клиентом по сети, а не через последовательный порт или Bluetooth, как предлагают некоторые другие, но в любом случае это должно решить вашу проблему. ssnobody 9 лет назад 2
Я очень ценю ваш вклад, спасибо :) Some_Guy 9 лет назад 0
Я мог бы быть глупым здесь, но почему бы вам не просто использовать SSH или RDP в машинах? Если у вас есть сценарии, вы можете настроить их запуск и т. Д. Я должен сказать, лично, что я бы посоветовал взглянуть на решение реальной проблемы старения машин и т. Д., Вы могли бы клонировать свои машины на новые машины в вирулентной среде, устраняя, таким образом, весь этот сложный обходной путь и иметь лучшую окружающую среду. В противном случае вам просто придется постоянно придумывать новые способы работы, поскольку все становится все более и более избыточным и старым. David Golding 9 лет назад 0
Потому что я хочу волшебную пулю, которая позволяет мне удаленно подключаться к любому компьютеру, работающему на любой платформе в любом месте, где все, что для этого требуется, - это ввод с клавиатуры, чтобы я мог покорить мир! Some_Guy 9 лет назад 0
Но со всей серьезностью вы вполне можете быть правы. Я мог бы решить почти все свои проблемы таким образом, но для того, чтобы все это заработало, потребовалось бы некоторое время, и он мог бы быть очень-очень глючным. Если бы существовало нестандартное решение или простое решение, на которое кто-то мог бы указать мне, я бы хотел просто купить вещь и начать работать с ней, для простоты и отсутствия обслуживания. Some_Guy 9 лет назад 0
Также есть факт, что обновление этих систем, к сожалению, не под моим контролем. Some_Guy 9 лет назад 0
Added an answer with an out of the box solution, though it may be overkill for your application. ssnobody 9 лет назад 0
Удалось ли вам попробовать использовать удаленный KVM? Есть ли какие-либо проблемы, которые остались нерешенными? Если один из ответов сработал для вас, у вас есть возможность [принять его] (http://stackoverflow.com/help/accepted-answer). ssnobody 9 лет назад 0

5 ответов на вопрос

5
ssnobody

You can use a remote IP-based KVM to generate keystrokes on another machine in real time.

Simply connect up the KVM's keyboard (and optionally the video and mouse) to the computer you want to send remote keystrokes to.

You then connect to the IP on the KVM via your web browser or the provided native system app, and send whatever keystrokes you wish.

One such product is Tripp Lite's Server Remote Control, External KVM over IP and another is the Lantronix Spider KVM

Alternatively, you can rebuild a DIY version of one of these with only keyboard support (rather than keyboard, video, and mouse support) using a Teensy USB Dev Board connected to a WIZ712MJ ethernet module with the WIZ812 Ethernet Adaptor Kit

At that point you could use the Teensy's ethernet and keyboard libraries to write a small program that spawns a server using Server.begin(), waits for a connection, and then has an infinite while loop with something like the following content to create a one-way network echo server:

if (myclient.available()) { Keyboard.print(myclient.read()); } 

You'll likely want to flesh that out with some error checking and the like, but it should work as a skeleton.

Хотя это выглядит как хорошее решение, меня беспокоит, насколько сложно будет подключиться к KVM на основе IP. Большую часть времени я имею дело с аппаратным обеспечением, которое не имеет возможности подключения к Интернету или даже сетевого подключения. Я имею в виду, есть порт Ethernet на машине, но хорошо ли это для чего-нибудь? ... Some_Guy 9 лет назад 0
Кроме того, я думаю, что это не совсем соответствует требованию не устанавливать программное обеспечение на ведомой машине Some_Guy 9 лет назад 0
@Some_Guy: аппаратные устройства KVM не требуют программного обеспечения на ведомом компьютере. Они отображаются как аппаратные устройства K, V и M. Если вы считаете подключение клавиатуры к машине «установкой программного обеспечения», тогда ваши требования не могут быть выполнены. Кроме того, как именно вы планируете отправлять нажатия клавиш на машину в режиме реального времени, если нет сетевого подключения? У нас пока нет подпространственных трансиверов ... qasdfdsaq 9 лет назад 1
Вы не будете использовать сетевой порт на машине, машина не должна иметь сетевой порт. Вы будете использовать сетевой порт на KVM. ssnobody 9 лет назад 0
@qasdfdsaq Я не совсем понял, как работает устройство, я не знаком с ним Some_Guy 9 лет назад 0
@ssnobody да, я думаю, что теперь понимаю, так что лидер может подключиться к KVM через сетевое соединение, а затем KVM может просто подключить USB к ведомому устройству и появиться в виде клавиатуры? Извините за вопрос noob У меня действительно нет опыта работы с Linux или виртуализацией. Я знаю, что немного над головой, но я хочу потратить некоторое время на то, чтобы это сработало, я просто хочу убедиться, что мои усилия не будут перенаправлены. Спасибо Some_Guy 9 лет назад 0
Абсолютно верно. Ведущий подключается к устройству KVM через сеть, а устройство KVM отображается в виде клавиатуры (доступны версии для USB и PS2) для ведомого. Так что его лидер --ethernet-> kvm --USB-> последователь ssnobody 9 лет назад 1
Я бы добавил, что в зависимости от устройства KVM у некоторых есть клиенты Java, а у некоторых - интерфейсы IPMI. IPMI несколько небезопасен, но очень широко поддерживается и легко поддается написанию сценариев даже с мобильного телефона. qasdfdsaq 9 лет назад 1
4
Enis P. Aginić

Here is a possible solution, some assembly required.

You can use a micro controller to receive keystrokes via network and transfer them to the computer it is connected to. One possible option would be Arduino platform and it's keyboard library as it may be simpler than making the hardware and libraries yourself. You will also need DIY software to send the keystrokes and, in case of Arduino it can be written in its IDE(simplified JAVA environment) . There are other platforms out there and most can be scaled down in production environment if you find this to be too big or expensive to deploy (as you may need more than one).

Это хорошее предложение, но мне кажется, что USB-порт для подростков, вероятно, немного проще (см. Этот https://www.pjrc.com/teensy/td_keyboard.html) и немного дешевле. Тем не менее, я был бы рад вашему мнению, так как у меня не так много опыта. Some_Guy 9 лет назад 0
Кроме того, как вы думаете, было бы возможно посылать нажатия клавиш в реальном времени с подключенного компьютера, используя это, а не запрограммированное заранее? Some_Guy 9 лет назад 0
@ Some_Guy Похоже на уменьшенную версию Arduino, о которой я говорил, так что все должно получиться. Но для одновременного нажатия клавиш в реальном времени вам нужно будет подключаться с двух компьютеров, а это невозможно через один порт USB. Полноразмерный Arduino может поддерживать готовые сетевые экраны для отдельных подключений, например, отправлять нажатия клавиш по сети с вашего ноутбука и пересылать по USB на принимающий компьютер. Enis P. Aginić 9 лет назад 0
да, план был получить через последовательный порт и выйти через USB для подростка Some_Guy 9 лет назад 0
3
Mutant Bob

This is far from an out-of-the-box solution, but you might be able to adapt something like the Teensy USB to accomplish this mission. I would envision configuring the Teensy USB to appear as a keyboard, then loading a program onto the Teensy USB that

  • receives keystrokes over a serial connection wired to its I/O pins and
  • sends those keystrokes to the target machine over its USB connection.

I personally wired one to a footpedal and programmed it to send the 's' keystroke when I stepped on the pedal, but that project was much much simpler than what you would need.

В противном случае это кажется хорошим решением (но я надеюсь на более простое). Ранее я смотрел на сборку Arduino, которая выглядела сложнее, дороже и крупнее, поэтому спасибо! Some_Guy 9 лет назад 0
У меня почти нет опыта использования микроконтроллеров (я много лет назад делал очень легкий проект, где моя рука все время держалась за книгу). Допустим, я пошел с подростком (выглядит очень хорошо). Вы бы подключили клавиатуру напрямую к USB-порту с загруженной программой или проходили через ноутбук с загруженным интерфейсом? Какой тип разъемов мне нужен? Some_Guy 9 лет назад 0
TeensyUSB - это клавиатура. Затем я бы подключил ноутбук к TeensyUSB с помощью последовательного соединения (припаял DB9 к выводам ввода / вывода TeensyUSB, а затем подключил ноутбук к этому DB9). Затем используйте программное обеспечение терминала (kermit?) На ноутбуке, чтобы вводить символы через последовательное соединение. Написание программы, работающей на Teensy USB, которая получает последовательный порт и отправляет нажатия клавиш, не будет тривиальной задачей, но это также не будет основным инженерным проектом. Mutant Bob 9 лет назад 0
Я считаю, что есть решения Bluetooth, которые отправляют / получают данные последовательного порта. BlueSoleil - это коммерческое программное обеспечение, которое, вероятно, делает это - http://www.manualslib.com/manual/534847/Ivt-Bluesoleil.html?page=49 «Последовательный порт Bluetooth (SPP) предоставляет виртуальный последовательный порт через Bluetooth в качестве альтернатива проводному последовательному кабелю между компьютером и устройством. Любая программа, использующая стандартный последовательный порт, может использовать последовательный порт Bluetooth без каких-либо изменений ». http://www.bluesoleil.com/bssoftware/BSoftware.aspx На самом деле, вы можете поговорить с ними и посмотреть, что они говорят о вашем проекте. Datarecovery.com MK 9 лет назад 0
Все это выглядит действительно многообещающе, я определенно собираюсь изучить возможность реализации этого проекта. Спасибо всем до сих пор, но любые дальнейшие предложения все еще приветствуются, конечно! Some_Guy 9 лет назад 0
Привет, я хотел создать еще одну награду, а также назначить ее на этот вопрос, но, похоже, мне нужно удвоить свою награду, чтобы сделать это. Я действительно ценю этот ответ, так что спасибо! Some_Guy 9 лет назад 1
0
Datarecovery.com MK

It would be a bit odd that a keyboard would receive input. I think I understand a little better your angle of sending a keystroke sequence from a laptop. The bluetooth receiver (USB dongle) does the receiving from a bluetooth keyboard. So forget the keyboard since you have a laptop sending instead. There might be a bluetooth receiver out there that is general purpose and will let you pair and receive keyboard data from some other bluetooth device. Keyboard data is part of the bluetooth profile for HID ("Human Interface Device Profile") so at least that's covered. But a receiver that comes with a Logitech keyboard for instance might not allow receiving from anything but a Logitech keyboard. Searching Amazon for "bluetooth data receiver usb" brings up a few that might work like Mediastic's.

Do you already have a way you plan to send the data out from the laptop via bluetooth? You asked about receiving, but not sending. There are a couple interesting questions already about this -

Ну, на самом деле вы можете получить данные Bluetooth от устройств, отличных от Logitech, используя Bluetooth-приемник Logitech, в конце концов - http://forums.logitech.com/t5/Keyboards-and-Keyboard-Mice/diNovo-Edge-Using-bluetooth -дль-другое-устройство / TD-п / 307820 Datarecovery.com MK 9 лет назад 0
Второй пункт ссылается на https://github.com/lkundrak/btkbdd/blob/master/btkbdd.pod, где описывается запрошенное решение, по крайней мере для Linux. Последняя пуля также кажется почти дубликатом этого вопроса. +1 fixer1234 9 лет назад 0
-1
mnmnc

Perfectly possible. In fact its the exact vector attack behind the thing called BAD USB.

You can read in detail about it in here.

Basically, its about changing(reprogramming) USB stick from storage device to another HUD device. It's not that easy to do but if you have the time and skills - yes, it's possible. Certainly not easy though.

A BadUSB device may even have replaced the computer’s BIOS – again by emulating a keyboard and unlocking a hidden file on the USB thumb drive.

Это не совсем ответ. Я знаю, что возможно подделать нажатия клавиш, но я ищу устройство, которое принимает нажатия клавиш в реальном времени. Some_Guy 9 лет назад 0
Это не указано четко в вопросе. Однако я думаю, что вы с большей вероятностью воспользуетесь моим решением и заставите USB-устройство выполнять команды на компьютере. Такими командами могут быть: 1. команда powershell для загрузки netcat на компьютер, 2. выполнение netcat для подключения к назначенному IP-адресу сервера, ожидающего подключения. 3. netcat также привязывает локальную оболочку к соединению. 4. Сервер, принимающий соединение, выполняет указанный скрипт / команды на подключенном компьютере. Это способ выполнить вашу задачу. Другие решения, скорее всего, будут связаны с установкой, mnmnc 9 лет назад 0
Кроме того, гораздо проще заставить устройство BADUSB загружать сценарий на компьютер и выполнять его локально, хотя по соображениям безопасности выполнение сценариев PowerShell обычно блокируется в системах Windows 7+, поэтому обратная привязка оболочки может быть несколько менее утомительной. mnmnc 9 лет назад 0
Я переписал этот вопрос (снова). Как вы думаете? Some_Guy 9 лет назад 0
Ваш комментарий не касается объема этого вопроса. Мне нужно выполнять нажатия клавиш на внешнем компьютере из внешнего источника, без запуска каких-либо сценариев на этом компьютере. В некоторых случаях я подключаюсь к DOS-системам. Суть вопроса заключается в том, чтобы избежать необходимости разрабатывать решение для каждой отдельной платформы. Я действительно хочу что-то, что после настройки хорошо для всего, что имеет самые основные драйверы ввода, и я могу печатать на нем удаленно. Some_Guy 9 лет назад 0
По сути, я хочу иметь возможность работать в реальной среде, как если бы это было подключение к удаленному рабочему столу с другого компьютера. За исключением того, что это не так, это реальная связь Some_Guy 9 лет назад 0
Я пытаюсь сделать это как можно более понятным из вопроса, пожалуйста, прокомментируйте, если вы думаете, что это может быть улучшено, спасибо Some_Guy 9 лет назад 0
Да ... тот факт, что некоторые из этих машин все еще используют DOS, очень важен и должен быть четко обозначен. Это многое меняет на мой взгляд. К сожалению, я не думаю, что вы найдете решение. У этих машин DOS есть сетевое подключение? Используют ли они модемы или реализован стек TCP / IP? Какие системы работают на других компьютерах? Если вам нужно единственное решение для DOS / WINDOWS / LINUX, которое будет работать при подключении USB-ключа, я думаю, вам придется в принципе создать его самостоятельно, разработав его с использованием какого-либо серьезного кода. mnmnc 9 лет назад 0
Смотри, у меня есть куча машин, которые могут принимать ввод с клавиатуры USB. Это отправная точка этого вопроса. Ничто другое на самом деле не имеет значения для этого вопроса. Задача должна рассматриваться с конца того, как отправлять нажатия клавиш, а не получать их. Some_Guy 9 лет назад 0
«У меня есть несколько систем, работающих под управлением устаревшего программного обеспечения на скрипучем оборудовании. Я хочу иметь возможность автоматизировать множество задач с помощью сценариев автоматической горячей клавиши для задач, которые в настоящее время должны выполняться вручную. Я действительно не хочу устанавливать какие-либо Программное обеспечение на этих машинах, а в некоторых случаях не может "Разве это не ясно? Some_Guy 9 лет назад 0
@Some_Guy Отправить клавиши в режиме реального времени с другой машины через USB? Такого устройства не существует. Это будет связано с созданием USB-ключа с WIFI / IRDA / BLUETOOTH-маршрутизатором, который будет иметь оболочку и может отправлять нажатия клавиш на USB-порт. Или, если вы хотите отправить предопределенные нажатия клавиш с USB непосредственно на систему - это должно быть связано с операционной системой, которая получает. mnmnc 9 лет назад 0
@mnmnc Если у компьютера есть USB, и он позволяет вам установить драйвер, вы можете использовать универсальный адаптер Bluetooth для получения ввода с клавиатуры. Вопрос об отправке тогда. Этот вопрос соответствует этому - http://superuser.com/questions/615027/using-laptop-keyboard-as-wireless-bluetooth-keyboard Верно? Datarecovery.com MK 9 лет назад 0
@ Datarecovery.comMK Да, но я открыт и для других методов решения этой проблемы, поэтому я бы не сказал, что они являются дубликатами. Some_Guy 9 лет назад 0
и @mnmnc с риском начать пламенную войну, чего вы не знаете! = что возможно Some_Guy 9 лет назад 0

Похожие вопросы