USB-Deskriptoren, VID/PID und was Deskriptor-Klonen bedeutet
Was in einem USB-HID-Deskriptor steht und welche Felder ein Gerät identifizieren, warum es Listen kompatibler Mäuse gibt und warum ein allgemeiner Deskriptor eine schwächere Identität ist als ein geklonter.
Kurze Antwort
Ein USB-HID-Deskriptor ist die Art, wie ein Gerät sich beim Einstecken selbst beschreibt: Vendor ID, Product ID, Textstrings und das Format seiner Reports. Deskriptor-Klonen heißt, dass das Eingabegerät die Identität der echten Maus vorzeigt, die an ihm hängt, statt seiner eigenen allgemeinen.
Auf dieser Seite10
- Was ist ein USB-Deskriptor?
- Welche Deskriptorfelder ein Gerät identifizieren
- Warum es nicht reicht, nur VID und PID zu ändern
- Warum es Listen kompatibler Mäuse gibt
- Wie das Klonen eines Deskriptors funktioniert
- Werks-, allgemeine und geklonte Identität im Vergleich
- So prüfst du dein eigenes Gerät
- Was ein geklonter Deskriptor nicht verbergen kann
- Häufige Fragen zu Deskriptoren
- Quellen
Was ist ein USB-Deskriptor?
Wird irgendein USB-Gerät eingesteckt, fordert der Host es auf, sich zu beschreiben, und bis es antwortet, passiert nichts weiter. Das Gerät antwortet mit einer Reihe von Deskriptoren. Ein Gerätedeskriptor sagt, wer es gebaut hat und welches Modell es ist, und ein Konfigurationsdeskriptor sagt, wie viele Schnittstellen es hat. Schnittstellen- und Endpunkt-Deskriptoren sagen, was jede Schnittstelle tut und wie oft sie abgefragt werden will. Alles, was Tastatur, Maus oder Gamepad ist, schickt außerdem einen HID Report Descriptor, der die genaue Byte-Anordnung der Nachrichten beschreibt, die es senden wird. Dieser Austausch heißt Enumeration, dauert Millisekunden und findet statt, bevor irgendein Treiber geladen ist. Alles, was das Betriebssystem später über das Gerät glaubt, stammt aus diesen Millisekunden. Dein Eingabegerät beantwortet dieselben Fragen, und es kann sie gut oder schlecht beantworten.
Welche Deskriptorfelder ein Gerät identifizieren
Das ist nicht die gesamte USB-Spezifikation, aber Software auf dem Host kann jedes Feld, das hier steht, ohne besondere Rechte lesen.
| Feld | Was darin steht | Was es verrät |
|---|---|---|
| idVendor (VID) | Eine 16-Bit-Zahl, die das USB-Normungsgremium einer Firma zuteilt | Wer das Gerät gebaut hat. Die VID eines bekannten Mausherstellers auf einer Maschine mit genau dieser Maus ist unauffällig. Die VID eines Herstellers von Entwicklungsplatinen ist eine Frage |
| idProduct (PID) | Eine 16-Bit-Zahl, die der Hersteller einem bestimmten Modell zuteilt | Welches Modell. VID und PID zusammen sind die öffentliche Identität des Geräts und das Paar, auf das Treiberzuordnung, Telemetrie und Inventarwerkzeuge abgleichen |
| iManufacturer und iProduct | Verweise auf String-Deskriptoren, die als Text zurückgelesen werden | Der lesbare Name, der im Geräte-Manager steht. Das am häufigsten vergessene Feld und der einfachste Verräter, wenn dort etwas steht, was keine Maus sagen würde |
| iSerialNumber | Ein optionaler Verweis auf einen Seriennummern-String | Eine Kennung je Gerät. Manche Mäuse haben eine, viele nicht. Windows nutzt sie, um zu entscheiden, ob ein an einem neuen Port wieder aufgetauchtes Gerät dasselbe Gerät ist |
| bcdDevice | Eine vom Hersteller vergebene Revisionsnummer des Geräts | Der Firmware-Stand. Echte Produkte bewegen ihn zwischen Versionen. Ein Wert, der sich auf keinem Gerät der Welt je ändert, ist selbst ein Muster |
| bcdUSB | Die Version der USB-Spezifikation, die das Gerät zu erfüllen behauptet | Welche Spezifikations-Ära es vorzeigt, und ob Full-Speed- oder High-Speed-Verhalten zum Rest seiner Angaben passt |
| bDeviceClass und bInterfaceClass | Klassencodes. Klasse 3 ist HID | Dass dies ein Eingabegerät für Menschen ist und kein Speicher, kein Audiogerät und kein serieller Adapter |
| Anzahl der Schnittstellen | Wie viele Funktionen ein physisches Gerät nach außen zeigt | Ob das eine Maus ist oder ein zusammengesetztes Gadget aus Maus plus seriellem Port plus noch etwas. Eine schlichte Maus ist normalerweise nicht drei Dinge |
| bInterval am Endpunkt | Das Abfrageintervall, um das das Gerät den Host bittet | Die Reportrate, die es zu wollen behauptet. Ein Gerät, dessen Deskriptor ein gemächliches Intervall verlangt und dabei weit schneller berichtet, widerspricht sich selbst |
| HID Report Descriptor | Usage Page und Usages, Feldbreiten der Achsen, Tastenzahl, Rad, alle herstellereigenen Collections | Die Gestalt des Geräts. Tastenzahl, ob die Bewegungsachsen 8 oder 16 Bit breit sind, ob es ein horizontales Rad gibt, und ob ein herstellerspezifischer Block fehlt, den dieses Modell haben müsste |
Keines dieser Felder ist geheim, und keines braucht einen Treiber zum Auslesen. Jeder Prozess auf dem Host kann die angeschlossenen Geräte auflisten und jedes dieser Felder lesen.
Achtung
Warum es nicht reicht, nur VID und PID zu ändern
Die Leute behandeln Vendor und Product ID als die ganze Identität, und sie sind das Erste, was jemand prüft, aber es sind nur zwei Zahlen unter vielen. Stell dir ein Gerät vor, das VID und PID eines bekannten Mausherstellers trägt, während sein Produkt-String weiterhin eine Mikrocontroller-Platine nennt. Sein Report Descriptor deklariert eine andere Tastenzahl, als dieses Modell hat, und sein Endpunkt verlangt ein Intervall, das dieses Modell nie nutzt. Das sieht schlechter aus, als das Gerät in Ruhe zu lassen, denn eine halb kopierte Identität geht nicht auf, und genau nach solchen Widersprüchen sucht eine Prüfung. Wenn du die IDs änderst, änder alles, was dazugehört.
Warum es Listen kompatibler Mäuse gibt
Ältere Durchleitungs-Firmware wertete den Deskriptor der angeschlossenen Maus nicht aus. Stattdessen trug sie fest eingebaute Profile: eine Tabelle mit Report-Anordnungen für benannte Modelle, von Hand geschrieben. Hast du eine Maus von der Liste angesteckt, wusste die Firmware, wie sie deren Reports dekodiert und deren Identität kopiert. Hast du etwas anderes angesteckt, bekamst du entweder nichts oder wirre Bewegung. Daher kommt die Frage nach kompatiblen Mäusen, und auf Firmware dieser Generation ist sie eine echte Einschränkung, die du vor dem Mauskauf prüfen musst. Neuere Firmware liest die Anordnung während der Enumeration aus dem Gerät und passt sich an, und die automatische Auswertung des HID Report Descriptor bei MAKCM ist das deutlichste Beispiel. Deshalb spielen die Listen auf aktuellen Geräten keine Rolle mehr, auch wenn du weiterhin prüfen solltest, zu welcher Generation deine Firmware gehört, statt zu raten.
Wie das Klonen eines Deskriptors funktioniert
Deskriptor-Klonen läuft in zwei Schritten. Das Eingabegerät meldet die echte Maus auf seiner Host-Seite an und liest, was diese Maus über sich selbst gesagt hat, und zeigt dann dieselben Antworten auf seiner Device-Seite dem Gaming-PC vor. Die Identität, die der Gaming-PC sieht, gehört damit zu einer Maus, die wirklich existiert und wirklich angeschlossen ist, eine Schicht weiter hinten. Vollständiges Klonen deckt die IDs, die Strings, die Revision, den Aufbau der Schnittstellen und den Report Descriptor ab, und die Antworten passen zueinander, weil sie von einem echten Gerät stammen. Teilweises Klonen deckt die IDs ab, lässt aber die Strings oder den Report Descriptor beim Durchleitungsgerät, und damit ist das Problem der Widersprüche wieder da. Die nützliche Frage zu jeder Firmware ist also nicht, ob sie eine VID fälschen kann, sondern wie viel vom Deskriptor sie kopiert.
Tipp
Werks-, allgemeine und geklonte Identität im Vergleich
Eine Werksidentität ist die Durchleitungsplatine, die sich als das ankündigt, was sie ist. Auf einem unangetasteten Teensy heißt das die Vendor ID und die Produkt-Strings einer Entwicklungsplatine auf einer Maschine, die sonst keinen Grund hat, eine zu haben. Eine allgemeine Identität ist eine erfundene Maus, die echt genug aussieht: eine klassenkonforme HID-Maus mit neutralen Strings. Für sich genommen wirkt sie unauffällig, aber sie passt zu keinem Produkt, das jemand verkauft, und sie ist für alle gleich, die diese Firmware fahren. Eine geklonte Identität ist der Deskriptor der echten Maus in deiner Hand. Sie ist in sich stimmig, sie passt zu einem Produkt, das es gibt, und sie unterscheidet sich zwischen Nutzern, weil deren Mäuse sich unterscheiden. Das sind drei verschiedene Positionen, und sie bilden eine Rangfolge. Keine davon ist allerdings ein Beweis gegen irgendetwas, denn die Rangfolge sagt, wie sehr du aus dem Rahmen fällst, und nicht, wie sicher du bist.
So prüfst du dein eigenes Gerät
Mach das vom Gaming-PC aus mit einem USB Device Viewer, damit du dein Eingabegerät so siehst, wie der Gaming-PC es sieht. Es dauert fünf Minuten und sagt dir mehr als jeder Forenthread.
- Die Strings für Produkt und Hersteller lesen sich wie eine Maus und nicht wie ein Mikrocontroller oder eine Entwicklungsplatine
- Vendor und Product ID gehören zusammen und passen zu einem Produkt, das es wirklich gibt
- Tastenzahl und Rad im Report Descriptor passen zum Modell, das behauptet wird
- Das Gerät zeigt eine HID-Maus-Schnittstelle vor und nicht eine Maus plus einen seriellen Port plus eine Tastatur, die du nie nutzt
- Das angeforderte Abfrageintervall ist eines, das das behauptete Modell plausibel nutzt
- Ein Seriennummern-String ist vorhanden oder fehlt, genau wie beim behaupteten Modell
- Im Geräte-Manager steht kein Name, den du auf einem normalen Gaming-PC nicht erwarten würdest
Achtung
Was ein geklonter Deskriptor nicht verbergen kann
Ein perfekt geklonter Deskriptor macht das Gerät während der Enumeration unauffällig, aber er ändert nichts am zeitlichen Verlauf und an der Gestalt der Bewegung, die das Gerät danach einmischt. Auf dieser späteren Schicht findet die Analyse statt, und sie ist die, um die sich die Leute tatsächlich sorgen. Bewegung, die schnappt, ist sichtbar, egal was der Deskriptor gesagt hat, und Bewegung, die zu weich ist, ebenso. Dasselbe gilt für Bewegung mit identischer Beschleunigungskurve bei jedem Flick und für Bewegung, die die Position eines Ziels schneller korrigiert, als eine Hand es kann. Arbeit am Deskriptor entfernt eine Klasse einfacher Signale. Du brauchst sie, aber allein reicht sie nicht, und sie für ausreichend zu halten ist der Grund, warum Leute mit hervorragenden Aufbauten dabei auffallen, dass sie sich wie Software verhalten.
Häufige Fragen zu Deskriptoren
Kann ein Spiel den Deskriptor meiner Maus lesen?
Ein Prozess auf der Maschine kann angeschlossene USB-Geräte auflisten und ihre Deskriptoren ohne besondere Rechte lesen, und Anticheat-Software mit Kernel-Zugriff kann das erst recht. Ob ein bestimmter Titel es tut und was er mit dem Ergebnis macht, kann dir niemand außerhalb dieser Firma ehrlich sagen.
Wenn ich den Deskriptor meiner echten Maus klone, gibt es dann zwei identische Geräte?
Nein, denn deine echte Maus hängt an der Host-Seite des Eingabegeräts und nicht am Gaming-PC, der Gaming-PC sieht also immer nur ein Gerät mit dieser Identität. Steckst du die echte Maus zusätzlich direkt in den Gaming-PC, erzeugst du genau das Duplikat, das du vermeiden wolltest.
Ist das Klonen eines Deskriptors illegal?
Die Vendor ID einer anderen Firma vorzuzeigen missbraucht eine Kennung, die dieser Firma zugeteilt wurde, und gegenüber dem Spiel ist es außerdem eine Frage der Nutzungsbedingungen. Wir sind keine Anwälte und das ist keine Rechtsberatung. Technisch möglich ist es allerdings.
Beeinflusst eine Änderung am Deskriptor die Leistung?
Der Report Descriptor tut das. Deklarierst du relative Achsen mit 16 statt 8 Bit, passen größere Bewegungsdeltas in einen einzelnen Report, statt abgeschnitten und aufgeteilt zu werden. Das ist der Unterschied zwischen weicher und stufiger Bewegung bei großen Flicks, während die Identitätsfelder überhaupt keine Auswirkung auf die Leistung haben.
Mein Cheat hat einen Schalter zum Spoofen des Deskriptors. Reicht es, ihn einzuschalten?
Es ist besser, als ihn aus zu lassen, aber für sich genommen ist es keine vollständige Antwort. Find heraus, was er tatsächlich ändert: nur die IDs, oder auch die Strings und den Report Descriptor. Prüf das Ergebnis danach vom Gaming-PC aus mit einem Device Viewer, statt der Beschriftung des Schalters zu vertrauen.
Soll ich eine billige Maus als Spender nehmen?
Nimm die Maus, mit der du wirklich spielst. Der Sinn des Klonens ist, dass die Identität zu einem Gerät passt, das du plausibel besitzt und nutzt, und deine echte Maus ist das plausibelste, das du hast.
Quellen
Die Reihenfolge von Werks-, allgemeiner und geklonter Identität ist unsere eigene Einschätzung, und die Prüfliste ebenfalls, die aus eigenen Tests stammt.
- 01Microsoft Learn, USB device descriptors
die Felder idvendor, idproduct, Textstrings und Klasse in der Tabelle, und wie Windows darauf abgleicht
learn.microsoft.com
- 02Microsoft, Windows debugging tools (WDK)
woher der USB Device Viewer aus der Prüfliste kommt
learn.microsoft.com
- 03MAKCM firmware, GPL-3.0
dass aktuelle MAKCM-Firmware den HID Report Descriptor der angeschlossenen Maus auswertet statt einer Modellliste
github.com
Weiterlesen
Kommst du nicht weiter? Ticket auf Discord öffnen
Alle Anleitungen