Sniff port szeregowy w systemie Linux

Odpowiedzi:

27

Istnieje kilka opcji:

  • sersniff to prosty program do tunelowania / wąchania między 2 portami szeregowymi.

  • Serial to Network Proxy (ser2net) zapewnia użytkownikowi możliwość połączenia z połączenia sieciowego do portu szeregowego.

  • SerialSpy działa jak szeregowe urządzenie tranzytowe . Nasłuchuje przychodzących danych na dwóch portach szeregowych i przesyła je dalej, aby urządzenia działały tak, jakby były bezpośrednio połączone. Rejestruje również dane, gdy przemieszcza się przez porty.

  • sercd to readresator portów szeregowych zgodny z RFC 2217. Umożliwia współdzielenie portu szeregowego przez sieć. Opiera się na świcie. Protokół RFC2217 stanowi rozszerzenie usługi Telnet i umożliwia zmianę parametrów portu komunikacyjnego.

  • SerLooK to aplikacja KDE do kontroli danych przechodzących przez linie szeregowe. Może działać jako terminal binarny, który wysyła i odbiera dane przez określony port (tryb Point to Point) i wyświetla je w osobnych widokach. Każdy widok można skonfigurować do wyświetlania danych w formacie szesnastkowym, dziesiętnym, ósemkowym, binarnym i surowym ASCII. Możliwe jest również wykonywanie operacji we / wy za pomocą widoków emulacji terminala oraz definiowanie portu dodatkowego i monitorowanie ruchu między dwoma hostami zewnętrznymi za pomocą kabla „Y” (tryb Snooper).

  • nullmodem tworzy wirtualną sieć pseudoterminalów. Może być używany jako adapter do połączenia dwóch programów, które normalnie wymagają kart interfejsu szeregowego.

  • ttywatch monitoruje, loguje i multipleksuje terminale I / O. Ma wbudowaną pełną rotację logów i może używać zarówno telnet, jak i lokalnych portów TTY.

  • Sniffer linii szeregowej (slsnif) to narzędzie do rejestrowania portów szeregowych. Nasłuchuje na określonym porcie szeregowym i rejestruje wszystkie dane przechodzące przez ten port w obu kierunkach.

hlovdal
źródło
2
Możesz to osiągnąć za pomocą standardowych narzędzi, używając socati tee. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0. Wyjście da ci dwa porty ...N PTY is /dev/pts/27... N PTY is /dev/pts/28. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27i w innym terminalu sudo cat /deb/pts/27 | tee /dev/ttyS0. Wreszcie 3) Podłącz swój program do /dev/tty/28. Dwie komendy tee zrzucą oba kierunki do konsoli i przekażą do / z faktycznego portu szeregowego. Należy pamiętać, że ustawienia portu, takie jak szybkość transmisji, należy skonfigurować wcześniej.
jtpereyda
Można zapisać rzeczy tee do pliku, zbyt: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsi xxdpomoże, jeśli jest to protokół binarny: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
jtpereyda
@ jtpereyda wygląda na to, że twoim trzecim krokiem powinno być połączenie programu z / dev / ttyS0. np. kiedy podłączę PUTTY tam do / dev / ttyS0, poprawnie pokazuje mi to wyjście w kroku 2, jednocześnie komunikując się z rzeczywistą osadzoną płytką. BTW masz literówka /deb/pts/27powinno być /dev/pts/27. cat /deb/pts/27 | tee /dev/ttyS0Powinien też byćcat /dev/pts/27 | sudo tee /dev/ttyS0
entuzjastyczny
Ta odpowiedź jest bardzo stara, proszę wziąć pod uwagę przechwycenie węszenia portu szeregowego
CharlesB
1
Możesz podać to jako inną odpowiedź. @CharlesB Wyjaśnienie, dlaczego tak jest, byłoby również miłe.
pisklęta
12

Próbowałem przechwycenia ( kopiowanie na GitHub ) i udało mi się go użyć. Najpierw uruchomiłem go w interesującym porcie:

interceptty /dev/ttyACM0 

Następnie podłączyłem testowany program do pseudo-terminala, /dev/pts/5który utworzył przechwycenie.


Próbowałem użyć slsnif , ale znalazłem błąd:

Failed to open a pty: No such file or directory

Ta pozycja listy mailingowej wskazuje, że slsnif obsługuje tylko „starsze” pseudo-terminale ( /dev/ttyp0itp.), Które prawdopodobnie nie są używane w obecnych jądrach Linuksa.

Craig McQueen
źródło
1
Dzięki! Ten sam błąd tutaj na moim urządzeniu osadzonym. Potem korzystałem intercepttyi działałem!
gfleck
Skąd wiesz, który pseudo-terminal tworzy?
chwi
@chwi Możesz nadać mu drugi parametr, który jest nazwą „urządzenia z przodu”, które jest dowiązaniem symbolicznym do tworzonego przez niego pseudo-terminala.
Craig McQueen
Dziękuję Ci. Odkryłem, że domyślnie tworzy / dev / intercepttydummy. Byłem w stanie obserwować ruch do przodu i do tyłu, ale dane przychodzące z urządzenia były odczytywane tylko przez przechwytywanie, a nie moje oprogramowanie działające w trybie Pyserial.
chwi
3

Spróbuj użyć jpnevulator (w pakiecie debian) lub slsniff . Zauważ, że slsniff używa przestarzałego modelu emulacji terminala.

sntg
źródło