Wie kann ich Pakete aufspüren, die über eine serielle Schnittstelle unter Linux übertragen werden?
Wie kann ich Pakete aufspüren, die über eine serielle Schnittstelle unter Linux übertragen werden?
Antworten:
Es gibt einige Möglichkeiten:
sersniff ist ein einfaches Programm, um zwischen 2 seriellen Ports zu tunneln / zu schnüffeln.
Seriell-zu-Netzwerk-Proxy (ser2net) bietet einem Benutzer die Möglichkeit, eine Verbindung von einer Netzwerkverbindung zu einem seriellen Anschluss herzustellen.
SerialSpy fungiert als serielles Passthrough -Gerät. Es wartet auf eingehende Daten an zwei seriellen Schnittstellen und leitet sie weiter, sodass die Geräte so tun, als ob sie direkt verbunden wären. Es protokolliert auch die Daten, während sie über die Ports übertragen werden.
sercd ist ein RFC 2217-kompatibler Redirector für serielle Ports. Hiermit können Sie einen seriellen Port über ein Netzwerk freigeben. Es basiert auf sredird. Das RFC2217-Protokoll ist eine Erweiterung zu Telnet und ermöglicht das Ändern von Kommunikationsportparametern.
SerLooK ist eine KDE-Anwendung zum Überprüfen von Daten, die über serielle Leitungen übertragen werden. Es kann als binäres Terminal fungieren, das Daten über einen definierten Port sendet und empfängt (Punkt-zu-Punkt-Modus) und in separaten Ansichten anzeigt. Jede Ansicht kann so konfiguriert werden, dass Daten in hexadezimaler, dezimaler, oktaler, binärer und unformatierter ASCII-Darstellung angezeigt werden. Es ist auch möglich, E / A über Terminalemulationsansichten durchzuführen und einen sekundären Port zu definieren und den Datenverkehr zwischen zwei externen Hosts mit einem "Y" -Kabel zu überwachen (Snooper-Modus).
nullmodem erzeugt ein virtuelles Netzwerk von Pseudoterminals. Es kann als Adapter verwendet werden, um zwei Programme zu verbinden, die normalerweise serielle Schnittstellenkarten benötigen.
ttywatch überwacht, protokolliert und multiplext Terminal-E / A. Es verfügt über eine integrierte vollständige Protokollrotation und kann sowohl Telnet- als auch lokale TTY-Ports verwenden.
Serial Line Sniffer (slsnif) ist ein Dienstprogramm zur Protokollierung der seriellen Schnittstelle. Es überwacht die angegebene serielle Schnittstelle und protokolliert alle Daten, die über diese Schnittstelle in beide Richtungen übertragen werden.
socat
und tee
. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0
. Der Ausgang gibt Ihnen zwei Ports ...N PTY is /dev/pts/27... N PTY is /dev/pts/28
. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27
und in einem anderen Terminal sudo cat /deb/pts/27 | tee /dev/ttyS0
. Schließlich 3) Verbinden Sie Ihr Programm mit /dev/tty/28
. Die beiden tee-Befehle geben beide Richtungen an die Konsole aus und leiten sie an die / von der tatsächlichen seriellen Schnittstelle weiter. Beachten Sie, dass die Porteinstellungen wie die Baudrate im Voraus konfiguriert werden müssen.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
und xxd
hilft , wenn es sich um ein binäres Protokoll ist: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
sein /dev/pts/27
. Sollte auch cat /deb/pts/27 | tee /dev/ttyS0
seincat /dev/pts/27 | sudo tee /dev/ttyS0
Ich habe versucht abzufangen ( kopieren bei GitHub ) und war erfolgreich in der Verwendung. Zuerst lief ich es auf dem Hafen von Interesse:
interceptty /dev/ttyACM0
Dann verband ich das zu testende Programm mit dem Pseudo-Terminal /dev/pts/5
, das durch die Überwachung erzeugt wurde.
Ich habe versucht, slsnif zu verwenden , aber ich habe festgestellt, dass ich einen Fehler habe:
Failed to open a pty: No such file or directory
Dieses Mailinglistenelement gibt an, dass slsnif nur die "alten" Pseudo-Terminals ( /dev/ttyp0
usw.) unterstützt, die auf aktuellen Linux-Kerneln wahrscheinlich nicht verwendet werden.
interceptty
und arbeite ich !
Versuchen Sie es mit jpnevulator ( Debian-Paket ) oder slsniff . Beachten Sie, dass slsniff ein veraltetes Terminalemulationsmodell verwendet.