¿Cómo puedo rastrear paquetes comunicados a través de un puerto serie en Linux?
¿Cómo puedo rastrear paquetes comunicados a través de un puerto serie en Linux?
Respuestas:
Hay algunas opciones:
sersniff es un programa simple para hacer un túnel / olfatear entre 2 puertos seriales.
El Proxy Serial a Red (ser2net) proporciona una manera para que un usuario se conecte desde una conexión de red a un puerto serie.
SerialSpy actúa como un dispositivo de transferencia en serie. Escucha los datos entrantes en dos puertos seriales y los reenvía para que los dispositivos actúen como si estuvieran conectados directamente. También registra los datos a medida que se mueven a través de los puertos.
sercd es un redirector de puerto serie compatible con RFC 2217. Le permite compartir un puerto serie a través de una red. Se basa en sredird. El protocolo RFC2217 es una extensión de telnet y permite cambiar los parámetros del puerto de comunicación.
SerLooK es una aplicación de KDE para inspeccionar datos que pasan por líneas seriales. Puede funcionar como un terminal binario que envía y recibe datos a través de un puerto definido (modo punto a punto) y los muestra en vistas separadas. Cada vista se puede configurar para mostrar datos en ASCII hexadecimal, decimal, octal, binario y sin formato. También es posible realizar E / S a través de vistas de emulación de terminal y definir un puerto secundario y monitorear el tráfico entre dos hosts externos utilizando un cable "Y" (modo Snooper).
nullmodem crea una red virtual de pseudo terminales. Se puede usar como un adaptador para conectar dos programas que normalmente necesitan tarjetas de interfaz en serie.
ttywatch monitorea, registra y multiplexa la E / S de terminal. Tiene una rotación completa de registros incorporada, y puede usar telnet y puertos TTY locales.
El sniffer de línea serie (slsnif) es una utilidad de registro de puerto serie. Escucha el puerto serie especificado y registra todos los datos que pasan por este puerto en ambas direcciones.
socat
y tee
. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0
. La salida te dará dos puertos ...N PTY is /dev/pts/27... N PTY is /dev/pts/28
. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27
y en otra terminal sudo cat /deb/pts/27 | tee /dev/ttyS0
. Finalmente 3) Conecte su programa a /dev/tty/28
. Los dos comandos tee descargarán ambas direcciones a la consola y reenviarán hacia / desde el puerto serie real. Tenga en cuenta que la configuración del puerto, como la velocidad en baudios, debe configurarse con anticipación.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
y xxd
le ayudará si es un protocolo binario: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
debe ser /dev/pts/27
. También cat /deb/pts/27 | tee /dev/ttyS0
debería sercat /dev/pts/27 | sudo tee /dev/ttyS0
Intenté la intercepción ( copia en GitHub ), y tuve éxito al usarla. Primero lo ejecuté en el puerto de interés:
interceptty /dev/ttyACM0
Luego conecté el programa bajo prueba al pseudo-terminal /dev/pts/5
que creó la intercepción.
Intenté usar slsnif , pero descubrí que recibí un error:
Failed to open a pty: No such file or directory
Este elemento de la lista de correo indica que slsnif solo admite los pseudo terminales "heredados" ( /dev/ttyp0
etc.) que probablemente no se usan en los núcleos Linux actuales.
interceptty
y trabajé!
Intente usar jpnevulator (debian packaged ) o slsniff . Tenga en cuenta que slsniff utiliza un modelo de emulación de terminal en desuso.