SpyPort Sniffer/Logger Serial

Sniffer y Logger para el puerto serie


¿Qué es SpyPort para SerialTool?

SpyPort es una función de SerialTool que permite monitorear todo el tráfico del puerto serie en un entorno Windows directamente desde el Kernel.
Este enfoque utiliza un controlador desarrollado especialmente por nuestro equipo para SerialTool para interceptar todas las llamadas que el sistema operativo dirige a un puerto COM específico.
Más precisamente, es posible "espiar" la comunicación serie incluso si el puerto COM está abierto y siendo utilizado por otra aplicación, ya que el controlador del Kernel intercepta y filtra las señales IRP y IOCTL_SERIAL de Windows.
Esta funcionalidad de SerialTool solo está disponible para la versión PRO.

Pantalla principal

¿Qué se puede espiar y registrar?

Es posible filtrar selectivamente algunas de estas señales de interés o todo el tráfico de bajo nivel directamente. SpyPort ofrece la posibilidad de guardar solo el tráfico saliente (IRP_MJ_WRITE), el tráfico entrante (IRP_MJ_READ) o todo el tráfico completo seleccionando uno o todos los IOCTL_SERIAL. Los datos entrantes y salientes pueden guardarse en formato de texto o binario para IRP_MJ_WRITE y IRP_MJ_READ (TX y RX del puerto COM) y en formato de texto para otras señales.

¿Cómo se muestran los datos espiados/registrados?

Gracias a sus funciones avanzadas, SerialTool permite ver en detalle cada paquete mostrando los datos contenidos en él en formato ASCII o hexadecimal.
Esta característica facilita y promueve una consulta más rápida y específica y al mismo tiempo permite buscar patrones específicos dentro de un paquete o guardar/exportar el paquete de interés en formato binario o copiarlo en el portapapeles en formato ASCII.
Cada paquete se muestra cuidadosamente indicando todos los datos importantes como el momento preciso de recepción (en milisegundos), el tipo de paquete, el tiempo transcurrido entre el paquete anterior y el siguiente.
El tipo de análisis del paquete sigue el de los paquetes de sesión introducidos en la versión 1.6.0 de SerialTool.
Es posible detener el registro en cualquier momento sin que el software que utiliza el puerto COM en ese momento se vea comprometido.

Vista ASCII y hexadecimal de un paquete serie espiado.

Ejemplos de uso de SpyPort con SerialTool

Los campos de aplicación del módulo SpyPort son diversos, entre ellos:

1. Monitoreo de aplicaciones propias y de terceros.

En el mundo industrial y embebido, ante fallas es muy difícil entender y detectar cuándo ocurre un error. A veces nuestras propias aplicaciones o las de terceros presentan defectos que se manifiestan después de varias horas y el desarrollador no puede estar presente para detectar y solucionar el problema. Por esta razón, un SerialTool con su módulo SpyPort está diseñado para garantizar períodos largos de escucha/registro de manera intuitiva y efectiva, ayudando al desarrollador a identificar la causa del problema.
Un ejemplo clásico puede ser una aplicación industrial donde el software oficial de producción se comunica a través del puerto serie con otros dispositivos.
Si hay un defecto, es importante poder monitorear el comportamiento del software en su modo "release" oficial para ver dónde ocurre el problema. SpyPort no interfiere con el software objeto de monitoreo y permite analizar todo el tráfico entrante y saliente.

2. Ingeniería inversa.

En un escenario donde se desee "capturar" el tráfico que entra y sale del puerto serie de un software específico, por ejemplo, durante la descarga de un firmware en un dispositivo conectado, ¡SpyPort es la herramienta ideal! Permite guardar directamente en formato binario todos los bytes transmitidos de una aplicación de terceros y capturar los datos de interés (por ejemplo, firmware).

3. Depuración.

Cuando se desarrolla un software para el puerto serie, es absolutamente indispensable asegurarse de que los datos enviados y recibidos sean correctos, sigan un timing determinado y a veces también sea necesario controlar correctamente otras señales del puerto COM como DTR y RTS.
Cuando el desarrollador escribe su propio software, SpyPort lo ayuda a verificar que el comportamiento del puerto serie sea el esperado, que el puerto serie esté abierto correctamente y que la lectura y escritura se realicen según las especificaciones. En este caso, SerialTool con su módulo SpyPort se convierte en una herramienta de trabajo esencial para verificar paso a paso que todo el software esté escrito correctamente. Cuando se tiene la intención de crear un software que se comunique con el puerto serie, SpyPort se vuelve absolutamente indispensable.

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