Porta serial do sniff no Linux

Respostas:

27

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.

hlovdal
fonte
2
Você pode conseguir isso com ferramentas padrão usando socate 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/27e 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.
Jtpereyda
Você pode salvar o tee material para um arquivo, também: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capse xxdirá ajudar se é um protocolo binário: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
Jtpereyda
@jtpereyda, parece que seu terceiro passo deve ser conectar o programa ao / dev / ttyS0. por exemplo, quando eu conecto PUTTY lá em / dev / ttyS0, ele me mostra corretamente essa saída na etapa 2 enquanto também me comunico com a placa incorporada real. BTW você tem um erro de digitação /deb/pts/27deve ser /dev/pts/27. Também cat /deb/pts/27 | tee /dev/ttyS0deve sercat /dev/pts/27 | sudo tee /dev/ttyS0
entusiasticgeek
Esta resposta é muito antiga, por favor considere interceptty para a porta serial sniffing
charlesb
11
Você poderia fornecer isso como outra resposta. @CharlesB Explicar por que é melhor também seria legal.
pintainhos
12

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/5que 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/ttyp0etc) que provavelmente não são usados ​​nos kernels atuais do Linux.

Craig McQueen
fonte
11
Obrigado! O mesmo erro aqui no meu dispositivo incorporado. Então eu uso intercepttye funcionou!
gfleck
Como você sabe qual pseudo-terminal ele cria?
chwi 25/09
@chwi Você pode atribuir a ele um segundo parâmetro, que é o nome de um "dispositivo frontal", que é um link simbólico para o pseudo-terminal que ele cria.
Craig McQueen
Obrigado. Descobri que, por padrão, ele cria um / dev / intercepttydummy. Eu era capaz de observar o tráfego de um lado para outro, mas os dados recebidos do dispositivo eram lidos apenas por interceptação, não meu software rodando em série.
chwi 27/09
3

Tente usar o jpnevulator (pacote debian) ou slsniff . Observe que o slsniff usa um modelo de emulação de terminal obsoleto.

sntg
fonte