SpyPort 시리얼 스니퍼/로거

시리얼 포트를 위한 스니퍼 및 로거


SpyPort 시리얼 도구란?

SpyPort는 윈도우 환경에서 커널에서 직접 시리얼 포트의 모든 트래픽을 모니터링할 수 있는 SerialTool의 기능입니다.
이 접근 방식은 특정 COM 포트로 운영 체제가 보내는 모든 호출을 가로채기 위해 SerialTool 팀에서 특별히 개발한 드라이버를 사용합니다.
보다 구체적으로, 커널 드라이버가 윈도우의 IRP 및 IOCTL_SERIAL 신호를 가로채고 필터링하기 때문에 다른 응용 프로그램이 COM 포트를 열고 사용 중이더라도 시리얼 통신을 "스니핑"할 수 있습니다.
이 SerialTool의 기능은 PRO 버전에서만 사용할 수 있습니다.

주 화면

어떤 것이 스니핑 및 로깅될 수 있나요?

일부 관심 있는 신호 또는 직접 저수준 트래픽을 선택적으로 필터링할 수 있습니다. SpyPort는 IRP_MJ_WRITE로 나가는 트래픽, IRP_MJ_READ로 들어오는 트래픽 또는 모든 완전한 트래픽을 선택하여 저장할 수 있습니다. IOCTL_SERIAL 중 하나 또는 모든 것을 선택합니다. 들어오는 및 나가는 데이터는 IRP_MJ_WRITEIRP_MJ_READ (COM 포트의 TX 및 RX)의 경우 텍스트 또는 바이너리 형식으로 저장될 수 있으며, 다른 신호의 경우 텍스트 형식으로 저장될 수 있습니다.

스니핑된/로깅된 데이터는 어떻게 표시되나요?

SerialTool의 고급 기능 덕분에 각 패킷을 자세히 볼 수 있으며, ASCII 또는 16진수 형식으로 포함된 데이터를 표시합니다.
이 기능은 빠르고 명확한 검토를 촉진하고, 패킷 내에서 특정 패턴을 검색하거나 관심 있는 패킷을 바이너리 형식으로 저장하거나 클립 보드에 ASCII 형식으로 복사할 수 있도록 지원합니다.
각 패킷은 수신 시간(밀리초), 패킷 유형, 이전 패킷과 다음 패킷 사이의 경과 시간과 같 은 모든 중요한 데이터를 정확하게 표시합니다.
패킷 분석 유형은 SerialTool 1.6.0 버전에서 소개된 세션 패킷 분석과 동일합니다.
언제든지 레코딩을 중지할 수 있으며, 이는 해당 시점에서 COM 포트를 사용하는 소프트웨어에 영향을 주지 않습니다.

스니핑된 시리얼 패킷의 ASCII 및 16진수 표시

SerialTool과 SpyPort를 사용한 사용 예시

SpyPort 모듈의 응용 분야는 여러 가지이며, 다음과 같습니다:

1. 자체 및 타사 응용 프로그램 모니터링.

산업 및 임베디드 분야에서 오류를 이해하고 감지하는 것은 매우 어려운 경우가 많습니다. 때로는 자체 응용 프로그램이나 타사 응용 프로그램에 오류가 발생하는데, 이러한 오류는 수 시간 후에 발생할 수 있으며, 개발자는 문제를 감지하고 해결할 수 없을 수도 있습니다. 이러한 이유로 SerialTool과 그의 SpyPort 모듈은 직관적이고 효과적인 방식으로 오랜 시간 동안의 청취/기록을 보장하여 개발자가 문제의 원인을 식별하는 데 도움을 줍니다.
공장 및 임베디드 응용 분야에서는 시리얼 포트를 통해 공식 제품 소프트웨어가 다른 장치와 통신합니다.
오류가 발생하면 공식 "릴리스" 모드에서 소프트웨어 동작을 모니터링하여 문제가 발생하는 위치를 파악하는 것이 중요합니다. SpyPort는 모니터링되는 소프트웨어에 영향을 미치지 않으며, 모든 수신 및 송신 트래픽을 분석할 수 있습니다.

2. 역공학.

특정 소프트웨어의 시리얼 포트로 들어오고 나가는 트래픽을 "캡처"하려는 경우, 예를 들어 연결된 장치에 펌웨어를 다운로드하는 중에 SpyPort는 이상적인 도구입니다! 제3자 소프트웨어의 모든 전송 바이트를 바이너리 형식으로 직접 저장하고 관심 있는 데이터(예: 펌웨어)를 캡처할 수 있습니다.

3. 디버깅.

시리얼 포트용 소프트웨어를 개발할 때, 보낸 및 받은 데이터가 올바른지 확인하고 일정한 타이밍을 유지해야 하며 때로는 DTR 및 RTS와 같은 다른 COM 포트 신호를 올바르게 제어해야 할 수도 있습니다.
개발자가 자체 소프트웨어를 작성하는 경우, SpyPort는 시리얼 포트의 동작이 예상대로 이루어지고, 시리얼 포트가 올바르게 열리고, 읽기 및 쓰기가 명세에 따라 수행되는지 확인하는 데 도움을 줍니다. 이 경우, SerialTool의 SpyPort 모듈은 모든 소프트웨어가 올바르게 작성되었는지 단계별로 확인하는 필수 도구가 됩니다. 시리얼 포트와 통신하는 소프트웨어를 개발하려면 SpyPort가 반드시 필요합니다.

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