SpyPort Seriële Sniffer/Logger

Sniffer en Logger voor de seriële poort


Waarvoor dient SpyPort in SerialTool

SpyPort is een functie van SerialTool die het mogelijk maakt al het verkeer van de seriële poort in een Windows-omgeving rechtstreeks vanuit de kernel te monitoren.
Deze aanpak maakt gebruik van een door ons team speciaal voor SerialTool ontwikkelde driver om alle aanroepen te onderscheppen die het besturingssysteem naar een specifieke COM-poort stuurt.
Concreet is het mogelijk om de seriële communicatie te “sniffen”, zelfs wanneer de COM-poort is geopend en in gebruik is door een andere applicatie, omdat de kernel-driver de IRP- en IOCTL_SERIAL-signalen van Windows onderschept en filtert.
Deze functie van SerialTool is uitsluitend beschikbaar in de PRO-versie.

Hoofdscherm

Wat kan worden gesnifft en gelogd

Het is mogelijk om selectief alleen bepaalde interessante signalen te filteren, of direct al het low-level verkeer vast te leggen. SpyPort biedt de mogelijkheid om alleen uitgaand verkeer (IRP_MJ_WRITE), alleen inkomend verkeer (IRP_MJ_READ) of al het verkeer op te slaan door één of alle IOCTL_SERIAL te selecteren. Inkomende en uitgaande data kunnen in tekst- of binair formaat worden opgeslagen voor IRP_MJ_WRITE en IRP_MJ_READ (TX en RX van de COM-poort) en in tekstformaat voor de overige signalen.

Hoe de gesnifte/gelogde gegevens worden weergegeven

Dankzij de geavanceerde functies van SerialTool kan elk pakket in detail worden bekeken, waarbij de data in ASCII- of hexadecimale vorm worden weergegeven.
Deze eigenschap maakt een snelle en gerichte analyse mogelijk en biedt tegelijkertijd de mogelijkheid om naar specifieke patronen binnen een pakket te zoeken of het betreffende pakket in binair formaat op te slaan/te exporteren of in ASCII-indeling naar het klembord te kopiëren.
Elk pakket wordt zorgvuldig weergegeven, met vermelding van alle belangrijke gegevens, zoals het exacte ontvangstmoment (in milliseconden), het type pakket en de verstreken tijd tussen het vorige en het volgende pakket.
Het type pakketanalyse volgt de sessiepakketten die zijn geïntroduceerd in versie 1.6.0 van SerialTool.
Het is mogelijk om het loggen op elk moment te stoppen zonder de software te verstoren die op dat moment de COM-poort gebruikt.

ASCII- en hexadecimale weergave van een gesnift seriëel pakket.

Voorbeelden van het gebruik van SpyPort met SerialTool

De toepassingsgebieden van de SpyPort-module zijn talrijk, onder andere:

1. Monitoring van eigen en externe applicaties.

In de industriële en embedded wereld is het, bij storingen, vaak erg moeilijk om te begrijpen en vast te stellen wanneer een bug optreedt. Soms bevatten eigen applicaties of die van derden fouten die pas na vele uren werken naar voren komen, en kan de ontwikkelaar niet aanwezig zijn om het probleem te onderscheppen en op te lossen. Om deze reden is SerialTool met zijn SpyPort-module ontworpen om langdurig sniffen/loggen op een intuïtieve en doeltreffende manier mogelijk te maken, zodat de ontwikkelaar de oorzaak van het probleem kan achterhalen.
Een klassiek voorbeeld is een industriële toepassing waarbij de officiële productiesoftware via de seriële poort met andere apparaten communiceert.
Als er een defect optreedt, is het essentieel om het gedrag van de software in officiële “release”-modus te kunnen monitoren om te zien waar het probleem ontstaat. SpyPort grijpt niet in in de software die wordt bewaakt en maakt het mogelijk al het inkomende en uitgaande verkeer te analyseren.

2. Reverse engineering.

In een scenario waarin men het verkeer wil “opvangen” dat via de seriële poort van specifieke software gaat, bijvoorbeeld tijdens het downloaden van firmware naar een aangesloten apparaat, is SpyPort het ideale hulpmiddel! Het maakt het mogelijk om alle bytes die worden verzonden (COM TX - IRP_MJ_WRITE) van externe software rechtstreeks in binair formaat op te slaan en de gegevens van belang (bijv. firmware) vast te leggen.

3. Debugging.

Bij het ontwikkelen van software voor de seriële poort is het absoluut noodzakelijk om ervoor te zorgen dat verzonden en ontvangen data correct zijn, een bepaalde timing volgen en dat andere signalen van de COM-poort, zoals DTR en RTS, indien nodig correct worden aangestuurd.
Wanneer de ontwikkelaar zijn eigen software schrijft, helpt SpyPort om te controleren of het gedrag van de seriële poort overeenkomt met de verwachtingen, of de poort correct wordt geopend en of lezen en schrijven volgens de specificaties worden uitgevoerd. In dit geval wordt SerialTool, met zijn SpyPort-module, een onmisbaar hulpmiddel om stap voor stap te verifiëren dat alle software correct is geschreven. Wie software wil maken die met de seriële poort communiceert, zal al snel merken dat SpyPort absoluut onmisbaar is.

Filtered Signals by SerialTool

**FILL HERE**

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