RGB-Daten in USB-Mitschnitten isolieren
Dieses Tutorial zeigt Ihnen, wie Sie USB-Daten entschlüsseln, um Geräte in SignalRGB zu implementieren.
Daten sortieren
Abschnitt betitelt „Daten sortieren“Bevor wir versuchen, den USB-Datenmitschnitt zu interpretieren, sollten wir ihn sortieren, um bestimmte Pakete zu finden.
In Wireshark:
- Öffnen Sie den USB-Datenmitschnitt
- Klicken Sie auf den Header „Info”, um nach Pakettyp zu sortieren
- Scrollen Sie durch die Liste, bis Sie entweder den Typ URB_INTERRUPT OUT oder SET_REPORT Request finden
Falls Sie keinen der oben genannten Befehle finden, arbeiten Sie möglicherweise mit einem RAWUSB-Gerät oder haben den Mitschnitt nicht korrekt durchgeführt. Bei RAWUSB-Geräten sehen Sie URBBULK_OUT- oder URB_CONTROL OUT-Befehle. Wenn Sie ein RAWUSB-Gerät haben, treten Sie diesem Discord-Server für Entwicklungshilfe bei.
RGB-Pakete finden
Abschnitt betitelt „RGB-Pakete finden“Die Pakete, nach denen wir zunächst suchen, sind diejenigen, die die RGB-Werte enthalten, die wir bei der Aufzeichnung unserer USB-Paketmitschnitte gesetzt haben.
Hinweis: Wir werden Geräte-Initialisierungspakete vorerst bewusst ignorieren. Diese könnten später erforderlich sein.
Die in jedem Paket gesendeten Daten folgen auf alle USB-Protokoll-Headerinformationen. Um diese zu sehen, müssen wir den Abschnitt „Data Fragment” finden.
- Wählen Sie ein Paket aus
- Wählen Sie das Feld HID Data aus, oder erweitern Sie den Abschnitt Setup Data und wählen Sie das Feld Data Fragment aus
- Ein Klick auf das Feld sollte auch den Datenbereich unten in Wireshark blau markieren
- Das ausgewählte Feld zeigt die gesendeten Daten auch ohne Leerzeichen an. In dieser Ansicht entsprechen jeweils 2 Zeichen einem einzelnen Byte.

Hinweis: Die betrachteten Werte liegen im HEX-Format (Basis 16) vor, einem Datenformat, das die Dezimalwerte 0 bis 255 als Werte von 0x00 bis 0xFF darstellt.
Paketstruktur
Abschnitt betitelt „Paketstruktur“Da wir in unserem Leitfaden zum USB-Datenmitschnitt Rot, Grün und Blau auf ihre Maximalwerte gesetzt haben, suchen wir in unserem Paketmitschnitt nach Werten von 0xFF. Falls Sie in Ihrer Aufzeichnung andere Farben verwendet haben, müssen Sie die spezifische verwendete HEX-Farbe kennen oder die Aufzeichnung mit bekannten Farben wiederholen.
Üblicherweise enthalten die Beleuchtungspakete eines Geräts einen Header, der angibt, für welchen Befehl das Paket bestimmt ist und welche Beleuchtungszone des Geräts angesprochen wird, gefolgt von den RGB-Daten und selten einigen Footer-Daten wie einer CRC-Prüfsumme.
Die RGB-Daten folgen häufig einigen gängigen Formaten, die wir prüfen können, indem wir nach den in unserer Aufzeichnung gesetzten Farben suchen:
- R, G, B, R, G, B, R, G, B (Rot -> Grün -> Blau -> Wiederholen)
- RRR, GGG, BBB (Mehrere Rot -> Mehrere Grün -> Mehrere Blau -> Wiederholen)
- Br, R, G, B (Helligkeit -> Rot -> Grün -> Blau -> Wiederholen)
Hinweis: Manche Geräte verwenden eine andere Farbreihenfolge. Obwohl die meisten RGB verwenden, kann es sein, dass Ihr Gerät GBR, BGR oder eine andere Kombination verwendet.
In unserem Fall sind die gesuchten Werte:
- 0xff, 0x00, 0x00 | 0x00, 0xff, 0x00 | 0x00, 0x00, 0xff (wenn das Gerät die Paketreihenfolge R,G,B verwendet).
- 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (wenn das Gerät die Paketreihenfolge RRR,GGG,BBB verwendet).
- 0xff, 0xff, 0x00, 0x00 | 0xff, 0x00, 0xff, 0x00 | 0xff, 0x00, 0x00, 0xff (wenn das Gerät die Paketreihenfolge Br,R,G,B verwendet)
Hinweis: Die obigen Beispiele sind nur einige gängige Paketstrukturen für Geräte und gelten möglicherweise nicht immer. Sie müssen vergleichen und nach Gemeinsamkeiten suchen.
Pakete prüfen
Abschnitt betitelt „Pakete prüfen“Wenn wir durch die Pakete scrollen, stellen wir fest, dass Paket 271 in unserem Mitschnitt Bytes enthält, die der R,G,B-Paketstruktur ähneln.
Hinweis: Manche Geräte verwenden möglicherweise mehrere Pakete, um die Farben des gesamten Geräts zu setzen. Achten Sie darauf, die nachfolgenden Pakete zu betrachten, und stellen Sie sicher, dass Sie finden, wo sich das erste Paket wiederholt.

Dieses Paket markieren wir mit der Funktion MARK/UNMARK Packet in Wireshark. Dies kann durch gleichzeitiges Drücken der Tasten CTRL + M oder durch Rechtsklick auf das Paket und Klicken auf MARK/UNMARK Packet erfolgen.
Um zu bestätigen, dass es sich bei diesem Paket tatsächlich um eines unserer Farbdatenpakete handelt, scrollen wir weiter nach unten, um nach weiteren Paketen zu suchen, die unserer R,G,B-Struktur entsprechen. Wir prüfen auch, ob diese Pakete der Reihenfolge folgen, in der wir die Farben in der Originalsoftware gesetzt haben. Dies ist ein guter Zeitpunkt, die Header der Pakete zu betrachten und zu sehen, ob sie sich ändern. Wenn sie sich in einem Muster ändern, ist es sehr wahrscheinlich, dass mehrere Pakete benötigt werden, um alle LEDs des Geräts zu setzen.
Wenn wir Paket 271, Paket 273 und Paket 275 nebeneinander betrachten, sehen wir, dass die RGB-Daten in Paket 271 nur Rot (0xFF, 0x00, 0x00), in Paket 273 nur Grün (0x00, 0xFF, 0x00) und in Paket 275 nur Blau (0x00, 0x00, 0xFF) enthalten. Wenn wir die Headerdaten oberhalb des RGB-Abschnitts betrachten, erkennen wir, dass sich diese Daten zwischen den drei Paketen nicht ändern. Das bedeutet höchstwahrscheinlich, dass wir in diesen Paketen dieselben Farbzonen ändern.
- Erwähnenswert ist auch, dass wir anhand der Farbpakete bestimmen können, wie viele Zonen ein Gerät enthält. Dazu prüfen wir, wie oft unsere bekannten Werte in den RGB-Datenpaketen vorkommen. Im folgenden Beispiel sehen wir, dass das Gerät 4 Zonen hat, die wir definitiv ansprechen können.


Wir gehen weiter durch unsere Pakete, bis wir alle Pakete mit Farbdaten gefunden und markiert haben. Danach fahren wir mit der Erstellung unserer Plugin-Datei fort.