Frage Sniff seriellen Port unter Linux


Wie kann ich Pakete schnüffeln, die über einen seriellen Port unter Linux kommuniziert werden?


25
2018-02-15 12:13


Ursprung


Wenn einige Antworten Ihre Frage beantworten, sollten Sie sie akzeptieren (meta.serverfault.com/questions/1033/...) - Olli


Antworten:


Es gibt ein paar Optionen:

  • sernsiff ist ein einfaches Programm zu Tunnel / Sniff zwischen 2 seriellen Ports.

  • Seriell zu Netzwerk-Proxy (ser2net) bietet einen Weg für eine Benutzer zum Herstellen einer Verbindung von einem Netzwerk Verbindung zu einem seriellen Port.

  • SerialSpy fungiert als eine serielle Durchgangsgerät. Es hört zu eingehende Daten an zwei seriellen Ports und leitet es weiter, damit die Geräte so tun als ob Sie sind direkt miteinander verbunden. Es auch protokolliert die Daten, während sie sich durch die Häfen.

  • sercd ist ein RFC 2217-kompatibler serieller Port Redirector. Sie können einen seriellen Port über ein Netzwerk teilen. Es basiert auf sredird. Das RFC2217-Protokoll ist eine Erweiterung von Telnet und ermöglicht das Ändern von Kommunikationsportparametern.

  • SerLooK ist eine KDE-Anwendung zur Überprüfung von Daten über serielle Leitungen. Es kann als binäres Terminal arbeiten, das Daten über einen definierten Port sendet und empfängt (Punkt-zu-Punkt-Modus) und diese in separaten Ansichten anzeigt. Jede Ansicht kann so konfiguriert werden, dass Daten in hexadezimaler, dezimaler, oktaler, binärer und roher ASCII-Darstellung angezeigt werden. Es ist auch möglich, E / A über Terminalemulationssichten auszuführen und einen sekundären Port zu definieren und den Verkehr zwischen zwei externen Hosts mit einem "Y" -Kabel (Snooper-Modus) zu überwachen.

  • nullmodem erstellt ein virtuelles Netzwerk von Pseudo-Terminals. 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 vollständige Log-Rotation und kann sowohl Telnet- als auch lokale TTY-Ports verwenden.

  • Serielle Leitung Sniffer (slsnif) ist ein Protokollierungsdienstprogramm für serielle Schnittstellen. Es hört auf den angegebenen seriellen Port und protokolliert alle Daten, die dabei durchlaufen werden Port in beiden Richtungen.


27
2018-02-15 13:12



Dies erreichen Sie mit Standardwerkzeugen mit socat und tee. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0. Die Ausgabe wird Ihnen zwei Ports geben ...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. Endlich 3) Verbinden Sie Ihr Programm mit /dev/tty/28. Die beiden Abzweigbefehle werden beide Richtungen an die Konsole ausgeben und an die tatsächliche serielle Schnittstelle weiterleiten. Beachten Sie, dass die Porteinstellungen wie die Baudrate im Voraus konfiguriert werden müssen. - jtpereyda
Sie können den Tee auch in einer Datei speichern: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps und xxd wird helfen, wenn es ein binäres Protokoll ist: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd. - jtpereyda
@jtpereyda sieht aus wie Ihr 3. Schritt sollte Programm mit / dev / ttyS0 verbinden. z.B. Wenn ich PUTTY dort an / dev / ttyS0 anschließe, zeigt es mir die Ausgabe in Schritt 2 korrekt an und kommuniziert auch mit der tatsächlich eingebetteten Platine. Übrigens hast du einen Tippfehler /deb/pts/27 sollte sein /dev/pts/27. Ebenfalls cat /deb/pts/27 | tee /dev/ttyS0 sollte sein cat /dev/pts/27 | sudo tee /dev/ttyS0 - enthusiasticgeek
Diese Antwort ist sehr alt, bitte beachten Sie Interzept für Serial Port Sniffing - CharlesB
Sie könnten das als eine andere Antwort liefern. @CharlesB Erklären, warum es besser ist, wäre auch schön. - chicks


Ich habe es versucht Abhörenund war erfolgreich bei der Verwendung. Zuerst habe ich es auf dem Hafen von Interesse ausgeführt:

interceptty /dev/ttyACM0 

Dann habe ich das Programm unter Test mit dem Pseudo-Terminal verbunden /dev/pts/5 diese Intercepty erstellt.


Ich habe versucht zu verwenden Slsnif, aber ich habe festgestellt, dass ich einen Fehler bekommen habe:

Failed to open a pty: No such file or directory

Dieser Mailing-Listen-Artikel zeigt an, dass slsnif nur die "Legacy" Pseudo-Terminals unterstützt (/dev/ttyp0 usw.), die bei aktuellen Linux-Kernen wahrscheinlich nicht verwendet werden.


12
2018-05-10 06:50



Vielen Dank! Derselbe Fehler hier auf meinem Embedded-Gerät. Dann benutze ich interceptty und hat funktioniert! - gfleck


Versuchen Sie es mit jpnevulator (debian verpackt) oder Slsniff. Beachten Sie, dass slsniff ein veraltetes Terminal-Emulationsmodell verwendet.


3
2018-02-15 12:47