SpyPort Sniffer/Logger Seriale

Sniffer e Logger per la porta seriale


Cos'è SpyPort per SerialTool

SpyPort è una funzionalità di SerialTool che consente di monitorare tutto il traffico della porta seriale, in ambiente Windows, direttamente dal Kernel.
Questa approcio utilizza un driver appositamente sviluppato per SerialTool dal nostro team per intercettare tutte le chiamate che il sistema operativo indirizza ad una specifica COM port.
Più precisamente si può “sniffare” la comunicazione seriale anche se la porta COM è aperta ed utilizzata da un’altra applicazione in quanto il Driver Kernel intercetta e filtra i segnali IRP e IOCTL_SERIAL di Windows.
Questa fuzionalità di SerialTool è disponibile solo per la versione PRO.

Schermata principale

Cosa può essere sniffato e loggato

E’ possibile filtrare, a scelta, solo alcuni di questi segnali di interesse o direttamente tutto il traffico a basso livello. SpyPort offre la possibilità di salvare solo il traffico in uscita (IRP_MJ_WRITE), il traffico in entrata (IRP_MJ_READ) oppure tutto il traffico completo selezionando uno o tutti gli IOCTL_SERIAL. I dati in ingresso ed uscita possono essere salvati in formato testo o binario per quanto riguarda IRP_MJ_WRITE e IRP_MJ_READ (TX ed RX della porta COM) ed in formato testo per quanto riguarda gli altri segnali.

Come vengono visualizzati i dati sniffati/loggati

SerialTool grazie alle sue avanzate funzionalità consente di visualizzare nel dettaglio ogni singolo pacchetto mostrando i dati in esso contenuti in formato ASCII o Esadecimale.
Questa particolarità agevola e favorisce una consultazione più rapida e mirata e nel contempo consente di poter eseguire ricerche di pattern specifici dentro un pacchetto o salvare/esportare il pacchetto d’interesse in formato binario o copiarlo nella clipboard in formato ASCII.
Ogni pacchetto viene visualizzato accuratamente indicandone tutti i dati importanti come il momento preciso di ricezione (in millisecondi), la tipologia di pacchetto, il tempo intercorso tra il pacchetto precedente e quello successivo.
La tipologia di analisi del pacchetto riprende quella dei pacchetti di sessione introdotti dalla versione 1.6.0 di SerialTool.
E’ possibile fermare il log in qualsiasi istante senza che il software che utilizza la porta COM in quel momento venga compromesso.

Visualizzazione ASCII ed Esadecimale di un pacchetto serial sniffato.

Esempi di utilizzo di SpyPort con SerialTool

I campi di utilizzo del modulo SpyPort sono molteplici, tra cui:

1. Monitoraggio di applicazioni proprie e di terzi.

Nel mondo industriale e nel mondo embedded, in presenza di malfunzionamenti, risulta molto difficile capire ed individuare quando un bug si presenta. Talvolta le proprie applicazione o quelle di terzi presentano dei difetti che si manifestano dopo diverse ore e lo sviluppatore non riesce ad essere presente per intercettare il problema e porvi rimedio. Per questa ragione un SerialTool con il suo modulo SpyPort è ideato per garantire lunghi periodi di sniffing/logging in maniera intuitiva ed efficace aiutando lo sviluppatore ad individuare la causa del problema.
Un esempio classico può essere un’applicazione industriale dove il software ufficiale di produzione comunica attraverso la porta seriale con altri dispositivi.
Se ci dovesse essere un difetto è importante poter monitorare il comportamento del software nalla sua modalità “release” ufficiale per vedere dove il problema si presenta. SpyPort non interferisce con il software oggetto del monitoraggio e consente di analizzare tutto il traffico in entrata ed uscita.

2. Reverse Engineering.

In uno scenario dove si volesse “catturare” il traffico che entra ed esce dalla porta seriale di uno specifico software, per esempio durante il download di un firmware su un dispositivo collegato, SpyPort è lo strumento ideale! Consente di salvare direttamente in formato binario tutti i bytes in trasmissione (COM TX - IRP_MJ_WRITE) di un software di terze parti e catturare i dati di interesse (es. Firmware).

3. Debugging.

Quando di sviluppa un software per la porta seriale è assolutamente indispensabile assicurarsi che i dati inviati e ricevuti siano corretti, seguano una determinata tempistica e talvolta è necessario anche comandare correttamente altri segnali della porta COM come il DTR e l’RTS.
Quando lo sviluppatore scrive il proprio software SpyPort lo aiuta a verificare che il comportamento della porta seriale sia quello atteso, che la porta seriale sia aperta correttamente e che la lettura e scrittura sia effettuata secondo le specifiche. In questo caso SerialTool con il suo modulo SpyPort diviene uno strumento di lavoro essenziale per verificare passo-passo che tutto il software sia scritto correttamente. Quando si intente realizzare un software che comunica con la porta seriale è SpyPort diventa assolutamente indispensabile.

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