Como posso cheirar pacotes comunicados através de uma porta serial no Linux?
linux
serial
packet-sniffer
Peter Mortensen
fonte
fonte
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.
fonte
socat
etee
. 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 terminalsudo 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
exxd
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émcat /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:
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:
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.fonte
interceptty
e funcionou!Tente usar o jpnevulator (pacote debian) ou slsniff . Observe que o slsniff usa um modelo de emulação de terminal obsoleto.
fonte