USB-HID-Emulator
Problem
Wer kennt nicht das Problem, beim Service fehlt einem plötzlich eine Tastatur, sei es um im BIOS was umzustellen oder einfach den PXE Boot zu bestätigen. Nicht immer ist sofort eine griffbereit und jedesmal eine mit schleppen ist auch nicht zielführend. Aber das Notebook hat man doch eigentlich immer dabei. Wieso kann man die Tastatur (oder auch die Maus) des Notebooks nicht auch an einem anderen Gerät nutzen? Dabei sollte sich die mitzunehmende Hardware auf ein Kabel und ggf. eine eher kleine Hardware beschränken in etwa der Größe eines USB Sticks. Das wäre für den Hacker/Techniker eine geniale Lösung.
Idee
Es soll eine Hardware geschaffen werden, auf Basis eines Mikrocontrollers, die von Zielsystem als Tastatur bzw. Maus erkannt wird. Somit sind auf dem Zielhost keine zusätzlichen Treiber notwendig. Gleichzeitig soll es möglich sein, diese Hardware über das Notebook des Technikers mit Befehlen zu zu versorgen, dass diese Tastatur- und Mausereignisse auslöst. Die Übertragung vom Notebook zur Hardware kann kabelgebunden (USB, Serial) oder auch kabellos (Bluetooth, WiFi) erfolgen. Auf dem Techniknotebook kann zusätzliche Software installiert werden.
Hardware
Um eine Tastatur/Maus am Zielsystem zu emulieren eignet sich ein Mikrocontroller mit einem ATMega32U4 Chip, wie der im Arduino Leonardo, dem Arduino Micro oder diversen Nachbauten zu finden ist (beim Kauf ggf. genau nachlesen, es gibt ähnliche Boards mit anderen Controllern). In unserem Fall haben wir einen Nachbau Pro Micro verwendet.
Für den Prototyp haben wir uns für eine Übertragung zum Notebook via Bluetooth entschieden. Dafür kommt ein HC-06 zum Einsatz. Das ist ein Serial Bluetooth Port, der ausschließlich als Slave arbeitet (also selbst nicht aktiv verbinden kann). Das genügt für unsere Zwecke.
Außerdem benötigt man einen USB A zu Micro USB Kabel oder einen entsprechenden Adapter, damit man die Hardware am Zielsystem befestigen kann, sowie ein paar Drähte und Löttechnik.
Hier noch mal die Liste:
- Arduino Leonardo kompatibles ATmega Pro Micro Board mit ATmega32U4
- Bluetooth-Board HC-06
- USB Kabel oder Adapter
Software
Die Software muss in zwei Teilen betrachtet werden. Zum einen befindet sich eine Art Firmware auf dem Arduino, weiterhin wird auf dem Laptop zur Steuerung eine Software benötigt.
Arduino
Die Arduino Firmware nimmt Befehle vom der Laptopsoftware entgegen, bei diesem Prototyp via Bluetooth, und gibt diese als Tastatur bzw. Mausereignisse an den Zielhost aus.
Laptop
Auf dem Laptop wird eine Software benötigt, die per Bluetooth eine Verbindung zum HC-06 herstellen und einfache Textbefehle dahin senden kann. Das klappt sowohl von einem Laptop, wie auch vom Smartphone oder Tablet. Deshalb ist die Lösung sehr flexibel. Für den Test bzw. einfachste Aufgaben kann ein Bluetooth Terminal benutzt werden. Ein kontinuierliches Schreiben ist damit nicht möglich, einfache Befehle lassen sich aber übertragen. Beispielhaft können benutzt werden (neben vermutlich hunderten anderen Programmen):
- für Android Simple Bluetooth Terminal (getestet)
- für Mac OSX Bluterm (getestet)
- für Windows Blue Terminal (ungetestet)
- für Linux Bluez tools sollte mit bluez tools und Boardmitteln machbar sein, ungetestet
Wer bessere Vorschläge hat oder Testergebnisse kann gerne das hier vermerken.
Ziel ist es, eine eigene Software für die Steuerung der Tastatur zu bauen, die eine Bedienung komfortable macht und somit auch längere Arbeiten ermöglicht. Aktuell existiert eine solche Software noch nicht. Wer Lust hat, sollte alle dazu notwendigen Infos hier finden und darf uns gerne an seinen Ergebnissen teilhaben lassen.