USB Kommunikation auslesen auf Windows

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

USB Kommunikation auslesen auf Windows

Beitrag von theo »

Hallo

Ich habe ein Gerätchen, welches sich mit einer Windows Anwendung über USB steuern lässt.
Leider gibt es keine Informationen über das Protokoll.
Ich möchte das auf Linux steuern.

Meine Frage: Wie kann ich unter Windows am einfachsten überwachen, wie die Kommunikation abläuft?

Es gibt wohl sowas http://www.serial-port-monitor.com/ aber das ist nicht mehr aktuell.

Welches Tool ist hier am geeignetsten und unaufdringlichsten? Bin selten auf Windows.
Es sollte natürlich Freeware sein. Die Konsole macht mir keine Angst. :wink:

Wie gut sind die Chancen, dass ich damit das Protokoll "entschlüsseln" kann?

Danke!

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: USB Kommunikation auslesen auf Windows

Beitrag von Mathias »

Ich habe ein Gerätchen, welches sich mit einer Windows Anwendung über USB steuern lässt.
Da wäre noch spannend, was für ein Gerätchen.

Linuxseitig kommst du mal mit "lsusb" wenigstens mal an die DeviceID.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: USB Kommunikation auslesen auf Windows

Beitrag von af0815 »

Es mal die Frage als welches Device es unter Win gefunden wird. Weil es gibt genügend Devices, die nicht im Gerätemanager auftauchen, sondern das direkt auf USB-Ebene abgehandelt wird. Dann wird es richtig interessant. Du bringst einen Serialmonitor ins Spiel , meldet sich das Gerät als Serielles ?

Eventuell sieht man die USB IDs unter Linux besser und vielleicht hat sich schon wer darum gekümmert.

Das Protokoll zu bekommen kann relativ leicht sein, in die Übertragung hinein zu kommen ist eher das Problem.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

af0815 hat geschrieben: Sa 19. Okt 2024, 17:13 Es mal die Frage als welches Device es unter Win gefunden wird. Weil es gibt genügend Devices, die nicht im Gerätemanager auftauchen, sondern das direkt auf USB-Ebene abgehandelt wird. Dann wird es richtig interessant. Du bringst einen Serialmonitor ins Spiel , meldet sich das Gerät als Serielles ?

Eventuell sieht man die USB IDs unter Linux besser und vielleicht hat sich schon wer darum gekümmert.

Das Protokoll zu bekommen kann relativ leicht sein, in die Übertragung hinein zu kommen ist eher das Problem.
In der mitgelieferten Windows Anwendung kann man einen COM Port und die Baud Rate auswählen.
Ich denke, am Ende ist das einfach eine recht normale serielle Kommunikation, die auch auf Linux machbar sein müsste.
Mein Frage ist aber, mit welchem Windows Tool ich "mitlesen" kann, wie die Kommandos lauten.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: USB Kommunikation auslesen auf Windows

Beitrag von af0815 »

Sysinternals könnte da helfen, aus der Suite der PortMon

https://learn.microsoft.com/de-de/sysin ... ds/portmon

Generell sind die SysInternals so gute Tool, das M$ das ganze eingekauft hat :-)

Das Problem ist, du musst Mitsniffen oder Man in The Middle spielen. Beides wird gerne verhindert. Aber wenn es sich schon als serieller Port meldet, ist das schon gut.

Edit: Mit dem comOcom kann man einen Loopback auf eine eigene Applikation machen, dort sniffen und selbst alles an das Gerät ausliefern bzw. empfangen. Klassischer "Man in the Middle" Angriff. https://www.virtual-serial-port.org/de/ ... s/#com0com
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

af0815 hat geschrieben: Sa 19. Okt 2024, 17:43 https://learn.microsoft.com/de-de/sysin ... ds/portmon
Danke. Hat gut geklungen, aber es geht natürlich nicht mehr.
https://answers.microsoft.com/en-us/win ... 65f9901fb5

Jetzt weiss ich wieder, warum ich Windows hasse.
Alles ist mühsam, langsam, kommerziell und am Ende geht doch nix.
Deshalb will ich das ja auf Linux haben. :wink:

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

OK, com0com tut und dann habe ich diesen Comportsniffer gefunden:
https://ullisroboterseite.de/dotnet-comportsniffer.html

Damit scheint es zu funktionieren, aber ich erkenne kein Protokoll.
Da wird Datensalat ausgetauscht, den man ohne Doku nicht verstehen kann.

Also ausser Spesen nichts gewesen... :lol:

Aber danke für die Tipps!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: USB Kommunikation auslesen auf Windows

Beitrag von af0815 »

theo hat geschrieben: Sa 19. Okt 2024, 19:40 Damit scheint es zu funktionieren, aber ich erkenne kein Protokoll.
Da wird Datensalat ausgetauscht, den man ohne Doku nicht verstehen kann.

Also ausser Spesen nichts gewesen... :lol:

Aber danke für die Tipps!
Da muss man sich langsam rantasten. Zuerst einmal schauen, wie fängt die Initialisierung an, was ist die Antwort. Gibt es Muster, wenn ich eine Funktion auslöse. Löse ich die gleiche Funktion mit leicht geänderten Parameter aus, was ändert sich dann. Das kann ein ziemlich aufwendiger Prozess sein. Es kann ja sein, das das Programm alles an Parametern am Anfang mal sendet, das kann viel und wirr sein. Wenn alles steht, wird es dann weniger, kommen 'i am alive' Daten, wenn gerade nichts zu tun ist ?

Das Programm schon mal angeshen, ob das nicht C# oder ähnlich ist, wei dann kann man eventuell mit einem Decompiler ran gehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

af0815 hat geschrieben: Sa 19. Okt 2024, 20:15 Da muss man sich langsam rantasten. Zuerst einmal schauen, wie fängt die Initialisierung an, was ist die Antwort. Gibt es Muster, wenn ich eine Funktion auslöse. Löse ich die gleiche Funktion mit leicht geänderten Parameter aus, was ändert sich dann. Das kann ein ziemlich aufwendiger Prozess sein. Es kann ja sein, das das Programm alles an Parametern am Anfang mal sendet, das kann viel und wirr sein. Wenn alles steht, wird es dann weniger, kommen 'i am alive' Daten, wenn gerade nichts zu tun ist ?
Das Problem ist, dass dauernd was passiert, auch ohne mein Zutun.
Anscheinend liest der dauernd Zustandsdaten aus.
Man weiss also gar nicht was Aktion - Reaktion ist.
Es ist auch nichts lesbares, nur Buchstabensalat.
Nee, ich dachte es wäre relativ leicht machbar, aber so wichtig ist es nicht.
af0815 hat geschrieben: Sa 19. Okt 2024, 20:15 Das Programm schon mal angeshen, ob das nicht C# oder ähnlich ist, wei dann kann man eventuell mit einem Decompiler ran gehen.
Ja, kann ich mal anschauen.

Danke!

chmod222
Beiträge: 15
Registriert: Do 19. Aug 2021, 17:29

Re: USB Kommunikation auslesen auf Windows

Beitrag von chmod222 »

Ich habe mal mit Wireshark den USB traffic meiner Tastatur mitgeschnitten um bestimmte Gerätefunktionen unter Linux nachzubauen. Ist etwas fummelig den richtigen USB port zu finden, aber ging dann super, weil ich den mitschnitt dann als pcap speichern und unter Linux anschauen konnte während ich dran gebaut habe.

Liefert natürlich nur größtenteils rohe streams an bytes unterhalb des standard USB framing, aber da muss man dann eh selbst kreativ werden.

PascalDragon
Beiträge: 962
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: USB Kommunikation auslesen auf Windows

Beitrag von PascalDragon »

theo hat geschrieben: Sa 19. Okt 2024, 16:31 Welches Tool ist hier am geeignetsten und unaufdringlichsten? Bin selten auf Windows.
Es sollte natürlich Freeware sein. Die Konsole macht mir keine Angst. :wink:
Wie chmod222 erwähnt hat: Wireshark ist da meiner Meinung nach das richtige Tool. Dieses bringt in aktuellen Installern den USBCap-Treiber mit, welcher es ermöglicht USB-Datentransfers auszulesen und mit den Mitteln von Wireshark anzusehen. Das Reverse Engineering des Protokolls an sich musst du jedoch selbst durchführen...
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

Danke!

Wireshark könnte das beste Tool dafür sein, aber auch recht - sagen wir mal - mächtig.
Ich zweifle allerdings, dass ich damit viel mehr Verwertbares sehen kann, als mit dem Comportsniffer, den ich schon ausprobiert hatte.
Im Prinzip wollte ich nur einmal reinschauen, ob das Protokoll leicht zu entschlüsseln wäre.
Das glaube ich nun nicht, nach dem was ich gesehen habe.
Passt schon!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: USB Kommunikation auslesen auf Windows

Beitrag von af0815 »

Wieder was gelernt, das mit dem USB Port sniffing mit WireShark kannte ich noch nicht. Danke
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 282
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: USB Kommunikation auslesen auf Windows

Beitrag von h-elsner »

Binäre Daten zu beschnüffeln reizt mich immer. Siehe hier: https://github.com/h-elsner/H480_UART_reading
Zeig doch mal, was da abläuft.

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: USB Kommunikation auslesen auf Windows

Beitrag von theo »

h-elsner hat geschrieben: Mo 21. Okt 2024, 20:14 Binäre Daten zu beschnüffeln reizt mich immer. Siehe hier: https://github.com/h-elsner/H480_UART_reading
Zeig doch mal, was da abläuft.
Danke, aber meinst du damit?
Wie gesagt, für mich ist das Thema eigentlich durch.

Antworten