SpyPort Serial Sniffer/Logger

Sniffer und Logger für den seriellen Anschluss


Was ist SpyPort für SerialTool

SpyPort ist eine Funktion von SerialTool, die es ermöglicht, den gesamten Datenverkehr des seriellen Anschlusses in einer Windows-Umgebung direkt vom Kernel aus zu überwachen.
Dieser Ansatz verwendet einen Treiber, der speziell von unserem Team für SerialTool entwickelt wurde, um alle Aufrufe abzufangen, die das Betriebssystem an einen bestimmten COM-Port richtet.
Genauer gesagt ist es möglich, die serielle Kommunikation "abzuhören", auch wenn der COM-Port geöffnet ist und von einer anderen Anwendung verwendet wird, da der Kernel-Treiber die IRP- und IOCTL_SERIAL-Signale von Windows abfängt und filtert.
Diese Funktion von SerialTool ist nur für die PRO-Version verfügbar.

Hauptbildschirm

Was kann abgehört und protokolliert werden

Es ist möglich, nur einige dieser interessanten Signale selektiv zu filtern oder direkt den gesamten Low-Level-Datenverkehr. SpyPort bietet die Möglichkeit, nur ausgehenden Datenverkehr (IRP_MJ_WRITE), eingehenden Datenverkehr (IRP_MJ_READ) oder den gesamten vollständigen Datenverkehr durch Auswahl eines oder aller IOCTL_SERIAL zu speichern. Eingehende und ausgehende Daten können im Text- oder Binärformat für IRP_MJ_WRITE und IRP_MJ_READ (TX und RX des COM-Ports) und im Textformat für andere Signale gespeichert werden.

Wie werden abgehörte/protokollierte Daten angezeigt

Dank seiner erweiterten Funktionen ermöglicht SerialTool eine detaillierte Anzeige jedes Pakets, indem die darin enthaltenen Daten im ASCII- oder Hexadezimalformat angezeigt werden.
Diese Eigenschaft erleichtert und fördert eine schnellere und gezieltere Konsultation und ermöglicht gleichzeitig die Suche nach spezifischen Mustern innerhalb eines Pakets oder das Speichern/Exportieren des interessierenden Pakets im Binärformat oder das Kopieren in die Zwischenablage im ASCII-Format.
Jedes Paket wird sorgfältig angezeigt und alle wichtigen Daten wie der genaue Zeitpunkt des Empfangs (in Millisekunden), der Pakettyp, die verstrichene Zeit zwischen dem vorherigen und dem nächsten Paket werden angegeben.
Der Paketanalysetyp folgt dem der Sitzungspakete, die in der Version 1.6.0 von SerialTool eingeführt wurden.
Es ist jederzeit möglich, die Protokollierung anzuhalten, ohne dass die Software, die den COM-Port zu diesem Zeitpunkt verwendet, beeinträchtigt wird.

ASCII- und Hexadezimale Anzeige eines abgehörten seriellen Pakets.

Beispiele für die Verwendung von SpyPort mit SerialTool

Die Anwendungsbereiche des SpyPort-Moduls sind vielfältig, darunter:

1. Überwachung eigener und fremder Anwendungen.

In der industriellen und eingebetteten Welt ist es bei Störungen sehr schwierig zu verstehen und zu identifizieren, wann ein Fehler auftritt. Manchmal weisen eigene Anwendungen oder Anwendungen von Dritten Defekte auf, die sich nach mehreren Stunden manifestieren, und der Entwickler kann nicht anwesend sein, um das Problem zu erkennen und zu beheben. Aus diesem Grund ist ein SerialTool mit seinem SpyPort-Modul konzipiert, um lange Zeiträume des Abhörens/Protokollierens intuitiv und effektiv zu gewährleisten und dem Entwickler zu helfen, die Ursache des Problems zu identifizieren.
Ein klassisches Beispiel kann eine industrielle Anwendung sein, bei der die offizielle Produktionssoftware über den seriellen Port mit anderen Geräten kommuniziert.
Wenn es einen Fehler gibt, ist es wichtig, das Verhalten der Software im offiziellen "Release"-Modus zu überwachen, um zu sehen, wo das Problem auftritt. SpyPort greift nicht in die überwachte Software ein und ermöglicht die Analyse des gesamten eingehenden und ausgehenden Datenverkehrs.

2. Reverse Engineering.

In einem Szenario, in dem man den Datenverkehr erfassen möchte, der in und aus dem seriellen Anschluss einer bestimmten Software fließt, beispielsweise während des Herunterladens einer Firmware auf ein angeschlossenes Gerät, ist SpyPort das ideale Werkzeug! Es ermöglicht das direkte Speichern aller übertragenen Bytes im Binärformat einer Drittanbietersoftware und das Erfassen der interessanten Daten (z. B. Firmware).

3. Debugging.

Wenn Software für den seriellen Port entwickelt wird, ist es absolut unerlässlich sicherzustellen, dass gesendete und empfangene Daten korrekt sind, einem bestimmten Timing folgen und manchmal auch andere Signale des COM-Ports wie DTR und RTS richtig gesteuert werden müssen.
Wenn der Entwickler seine eigene Software schreibt, hilft ihm SpyPort dabei zu überprüfen, ob das Verhalten des seriellen Ports wie erwartet ist, ob der serielle Port ordnungsgemäß geöffnet ist und ob das Lesen und Schreiben gemäß den Spezifikationen erfolgt. In diesem Fall wird SerialTool mit seinem SpyPort-Modul zu einem unverzichtbaren Arbeitsmittel, um schrittweise zu überprüfen, ob die gesamte Software korrekt geschrieben ist. Wenn Sie eine Software erstellen möchten, die mit dem seriellen Port kommuniziert, ist SpyPort absolut unerlässlich.

Filtered Signals by SerialTool

IRP_MJ and IOCTL_SERIAL interpreted signals.

Signals List:

  • IRP_MJ_CREATE
  • IRP_MJ_CLOSE
  • IRP_MJ_CLEANUP
  • IRP_MJ_READ
  • IRP_MJ_WRITE
  • IRP_MJ_FLUSH_BUFFERS
  • IRP_MJ_QUERY_INFORMATION
  • IRP_MJ_SET_INFORMATION
  • IRP_MJ_SYSTEM_CONTROL
  • IOCTL_SERIAL_GET_BAUD_RATE
  • IOCTL_SERIAL_SET_BAUD_RATE
  • IOCTL_SERIAL_GET_HANDFLOW
  • IOCTL_SERIAL_SET_HANDFLOW
  • IOCTL_SERIAL_GET_LINE_CONTROL
  • IOCTL_SERIAL_SET_LINE_CONTROL
  • IOCTL_SERIAL_GET_TIMEOUTS
  • IOCTL_SERIAL_SET_TIMEOUTS
  • IOCTL_SERIAL_SET_QUEUE_SIZE
  • IOCTL_SERIAL_CONFIG_SIZE
  • IOCTL_SERIAL_GET_CHARS
  • IOCTL_SERIAL_SET_CHARS
  • IOCTL_SERIAL_SET_DTR
  • IOCTL_SERIAL_CLR_DTR
  • IOCTL_SERIAL_SET_RTS
  • IOCTL_SERIAL_CLR_RTS
  • IOCTL_SERIAL_SET_WAIT_MASK
  • IOCTL_SERIAL_GET_WAIT_MASK
  • IOCTL_SERIAL_WAIT_ON_MASK
  • IOCTL_SERIAL_PURGE
  • IOCTL_SERIAL_GET_COMMSTATUS
  • IOCTL_SERIAL_SET_BREAK_OFF
  • IOCTL_SERIAL_SET_BREAK_ON
  • IOCTL_SERIAL_CLEAR_STATS
  • IOCTL_SERIAL_RESET_DEVICE
  • IOCTL_SERIAL_SET_FIFO_CONTROL
  • IOCTL_SERIAL_SET_MODEM_CONTROL
  • IOCTL_SERIAL_SET_XOFF
  • IOCTL_SERIAL_SET_XON
  • IOCTL_SERIAL_GET_MODEM_CONTROL