SpyPort Sniffer/Logger Serial

Sniffer e Logger para porta serial


O que é o SpyPort para o SerialTool?

SpyPort é uma funcionalidade do SerialTool que permite monitorar todo o tráfego da porta serial em um ambiente Windows diretamente do Kernel.
Esta abordagem utiliza um driver desenvolvido especialmente para o SerialTool pela nossa equipe para interceptar todas as chamadas que o sistema operacional direciona para uma porta COM específica.
Mais precisamente, é possível "espionar" a comunicação serial mesmo se a porta COM estiver aberta e sendo usada por outra aplicação, pois o driver do Kernel intercepta e filtra os sinais IRP e IOCTL_SERIAL do Windows.
Esta funcionalidade do SerialTool está disponível apenas na versão PRO.

Tela principal

O que pode ser espionado e registrado?

É possível filtrar seletivamente alguns desses sinais de interesse ou todo o tráfego de baixo nível diretamente. O SpyPort oferece a possibilidade de salvar apenas o tráfego de saída (IRP_MJ_WRITE), o tráfego de entrada (IRP_MJ_READ) ou todo o tráfego completo selecionando um ou todos os IOCTL_SERIAL. Os dados de entrada e saída podem ser salvos em formato texto ou binário para IRP_MJ_WRITE e IRP_MJ_READ (TX e RX da porta COM) e em formato texto para os outros sinais.

Como os dados espionados/registrados são exibidos?

O SerialTool, com suas funcionalidades avançadas, permite visualizar detalhadamente cada pacote, mostrando os dados nele contidos em formato ASCII ou hexadecimal.
Essa característica facilita e favorece uma consulta mais rápida e direcionada e, ao mesmo tempo, permite pesquisar padrões específicos em um pacote ou salvar/exportar o pacote de interesse em formato binário ou copiá-lo para a área de transferência em formato ASCII.
Cada pacote é exibido cuidadosamente indicando todos os dados importantes, como o momento preciso de recebimento (em milissegundos), o tipo de pacote, o tempo decorrido entre o pacote anterior e o seguinte.
O tipo de análise do pacote segue o dos pacotes de sessão introduzidos na versão 1.6.0 do SerialTool.
É possível interromper o registro a qualquer momento sem comprometer o software que está usando a porta COM naquele momento.

Visualização ASCII e hexadecimal de um pacote serial espionado.

Exemplos de uso do SpyPort com o SerialTool

Os campos de uso do módulo SpyPort são diversos, incluindo:

1. Monitoramento de aplicativos próprios e de terceiros.

No mundo industrial e integrado, é muito difícil entender e detectar quando ocorre um erro. Às vezes, nossos próprios aplicativos ou os de terceiros apresentam defeitos que se manifestam após várias horas e o desenvolvedor pode não estar presente para detectar e resolver o problema. É por isso que o SerialTool, com seu módulo SpyPort, é projetado para garantir longos períodos de escuta/registro de forma intuitiva e eficaz, ajudando o desenvolvedor a identificar a causa do problema.
Um exemplo clássico pode ser um aplicativo industrial onde o software oficial de produção se comunica via porta serial com outros dispositivos.
Se houver um defeito, é importante poder monitorar o comportamento do software em seu modo "release" oficial para ver onde está o problema. O SpyPort não interfere no software monitorado e permite analisar todo o tráfego de entrada e saída.

2. Engenharia reversa.

Em um cenário onde se deseja "capturar" o tráfego que entra e sai da porta serial de um software específico, por exemplo, durante o download de um firmware em um dispositivo conectado, o SpyPort é a ferramenta ideal! Ele permite salvar diretamente em formato binário todos os bytes transmitidos de um software de terceiros e capturar os dados de interesse (por exemplo, firmware).

3. Depuração.

Ao desenvolver um software para a porta serial, é absolutamente essencial garantir que os dados enviados e recebidos sejam corretos, sigam um timing específico e às vezes também é necessário controlar corretamente outros sinais da porta COM, como DTR e RTS.
Quando o desenvolvedor escreve seu próprio software, o SpyPort ajuda a verificar se o comportamento da porta serial está de acordo com o esperado, se a porta serial está aberta corretamente e se a leitura e escrita são realizadas conforme as especificações. Neste caso, o SerialTool, com seu módulo SpyPort, se torna uma ferramenta de trabalho essencial para verificar passo a passo se todo o software está escrito corretamente. Quando se pretende criar um software que se comunica com a porta serial, o SpyPort se torna absolutamente indispensável.

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