Como posso cheirar pacotes comunicados através de uma porta serial no Linux?
Como posso cheirar pacotes comunicados através de uma porta serial no Linux?
Respostas:
Existem algumas opções:
O sersniff é um programa simples para tunelar / cheirar entre 2 portas seriais.
Serial to Network Proxy (ser2net) fornece uma maneira de um usuário se conectar de uma conexão de rede a uma porta serial.
O SerialSpy atua como um dispositivo de passagem serial. Ele escuta os dados recebidos em duas portas seriais e os encaminha para que os dispositivos atuem como se estivessem diretamente conectados. Ele também registra os dados enquanto se move pelas portas.
O sercd é um redirecionador de porta serial compatível com RFC 2217. Permite compartilhar uma porta serial através de uma rede. É baseado em sredird. O protocolo RFC2217 é uma extensão para o telnet e permite alterar os parâmetros da porta de comunicação.
O SerLooK é um aplicativo do KDE para inspeção de dados passando por linhas seriais. Ele pode funcionar como um terminal binário que envia e recebe dados através de uma porta definida (modo ponto a ponto) e os exibe em visualizações separadas. Cada visualização pode ser configurada para exibir dados em ASCII hexadecimal, decimal, octal, binário e bruto. Também é possível executar E / S através das visualizações de emulação de terminal e definir uma porta secundária e monitorar o tráfego entre dois hosts externos usando um cabo "Y" (modo Snooper).
nullmodem cria uma rede virtual de pseudo-terminais. Ele pode ser usado como um adaptador para conectar dois programas que normalmente precisam de placas de interface serial.
O ttywatch monitora, registra e multiplexa a E / S do terminal. Possui rotação total de log embutida e pode usar telnet e portas TTY locais.
Sniffer de linha serial (slsnif) é um utilitário de registro de porta serial. Ele escuta a porta serial especificada e registra todos os dados que passam por essa porta nas duas direções.
socat
e tee
. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0
. A saída fornecerá duas portas ...N PTY is /dev/pts/27... N PTY is /dev/pts/28
. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27
e em outro terminal sudo cat /deb/pts/27 | tee /dev/ttyS0
. Finalmente 3) Conecte seu programa a /dev/tty/28
. Os dois comandos tee descarregam as duas direções para o console e encaminham para / da porta serial real. Observe que as configurações da porta como baudrate devem ser definidas com antecedência.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
e xxd
irá ajudar se é um protocolo binário: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
deve ser /dev/pts/27
. Também cat /deb/pts/27 | tee /dev/ttyS0
deve sercat /dev/pts/27 | sudo tee /dev/ttyS0
Tentei interceptar ( copiar no GitHub ) e tive sucesso em usá-lo. Primeiro, eu o executei no porto de interesse:
interceptty /dev/ttyACM0
Então conectei o programa em teste ao pseudo-terminal /dev/pts/5
que a interceptação criou.
Tentei usar o slsnif , mas descobri que havia um erro:
Failed to open a pty: No such file or directory
Este item da lista de discussão indica que o slsnif suporta apenas os pseudo-terminais "herdados" ( /dev/ttyp0
etc) que provavelmente não são usados nos kernels atuais do Linux.
interceptty
e funcionou!
Tente usar o jpnevulator (pacote debian) ou slsniff . Observe que o slsniff usa um modelo de emulação de terminal obsoleto.