Porta seriale sniff su Linux


Risposte:


27

Ci sono alcune opzioni:

  • sersniff è un semplice programma per tunnelare / annusare tra 2 porte seriali.

  • Serial to Network Proxy (ser2net) fornisce un modo per un utente di connettersi da una connessione di rete a una porta seriale.

  • SerialSpy funge da dispositivo pass-through seriale. Ascolta i dati in entrata su due porte seriali e li inoltra in modo che i dispositivi si comportino come se fossero collegati direttamente. Inoltre registra i dati mentre si sposta attraverso le porte.

  • sercd è un redirector di porta seriale conforme a RFC 2217. Ti consente di condividere una porta seriale attraverso una rete. Si basa su sredird. Il protocollo RFC2217 è un'estensione di telnet e consente di modificare i parametri della porta di comunicazione.

  • SerLooK è un'applicazione KDE per l'ispezione di dati che vanno su linee seriali. Può funzionare come un terminale binario che invia e riceve dati attraverso una porta definita (modalità Point to Point) e li visualizza in viste separate. Ogni vista può essere configurata per visualizzare i dati in formato ASCII esadecimale, decimale, ottale, binario e non elaborato. È anche possibile eseguire I / O attraverso le viste di emulazione del terminale e definire una porta secondaria e monitorare il traffico tra due host esterni utilizzando un cavo "Y" (modalità Snooper).

  • nullmodem crea una rete virtuale di pseudo-terminali. Può essere utilizzato come adattatore per collegare due programmi che normalmente richiedono schede di interfaccia seriale.

  • I / O terminali ttywatch monitor, registri e multiplex. Ha la rotazione completa del registro integrata e può utilizzare sia le porte TTY locali che Telnet.

  • Lo sniffer di linea seriale (slsnif) è un'utilità di registrazione della porta seriale. Ascolta la porta seriale specificata e registra tutti i dati che attraversano questa porta in entrambe le direzioni.


2
Puoi farlo con strumenti standard usando socate tee. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0. L'output ti darà due porte ...N PTY is /dev/pts/27... N PTY is /dev/pts/28. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27e in un altro terminale sudo cat /deb/pts/27 | tee /dev/ttyS0. Finalmente 3) Connetti il ​​tuo programma a /dev/tty/28. I due comandi tee eseguiranno il dump di entrambe le direzioni verso la console e inoltreranno alla / dalla porta seriale effettiva. Si noti che le impostazioni della porta come baudrate devono essere configurate in anticipo.
jtpereyda,

È possibile salvare la roba tee a un file, anche: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capse xxdsarà utile se si tratta di un protocollo binario: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
jtpereyda,

@jtpereyda sembra che il tuo terzo passo dovrebbe essere il programma di connessione a / dev / ttyS0. ad es. quando collego PUTTY lì a / dev / ttyS0 mi mostra correttamente quell'output nel passaggio 2 mentre comunico anche con la scheda embedded effettiva. A proposito, hai un refuso /deb/pts/27dovrebbe essere /dev/pts/27. Inoltre cat /deb/pts/27 | tee /dev/ttyS0dovrebbe esserecat /dev/pts/27 | sudo tee /dev/ttyS0
enthusiasticgeek il

Questa risposta è molto antica, si prega di considerare l'intercettazione per lo sniffing della porta seriale
CharlesB,

1
Potresti fornirlo come un'altra risposta. @CharlesB Spiegare perché è meglio sarebbe anche bello.
pulcini,

12

Ho provato intercettazione ( copia su GitHub ), e sono riuscito a usarlo. Prima l'ho eseguito sul porto di interesse:

interceptty /dev/ttyACM0 

Quindi ho collegato il programma sotto test allo pseudo-terminale /dev/pts/5creato dall'intercettazione.


Ho provato a usare slsnif , ma ho scoperto di avere un errore:

Failed to open a pty: No such file or directory

Questa voce della mailing list indica che slsnif supporta solo gli pseudo-terminali (legacy) "legacy" /dev/ttyp0che probabilmente non sono usati sugli attuali kernel Linux.


1
Grazie! Stesso errore qui sul mio dispositivo incorporato. Quindi uso intercepttye ha funzionato!
gfleck,

Come fai a sapere quale pseudo-terminale crea?
Chwi,

@chwi Puoi assegnargli un secondo parametro, che è il nome di un "front-device" che è un link simbolico allo pseudo-terminale che crea.
Craig McQueen,

Grazie. Ho scoperto che per impostazione predefinita, crea un / dev / intercepttydummy. Sono stato in grado di monitorare il traffico avanti e indietro, ma i dati in arrivo dal dispositivo venivano letti solo per intercettazione, non per il mio software in esecuzione pyserial.
Chwi,

3

Prova a usare jpnevulator (debian packaged) o slsniff . Si noti che slsniff utilizza un modello di emulazione terminale deprecato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.