Jak mogę wąchać pakiety komunikowane przez port szeregowy w systemie Linux?
Jak mogę wąchać pakiety komunikowane przez port szeregowy w systemie Linux?
Odpowiedzi:
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.
socat
i 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/27
i 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.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
i xxd
pomoże, jeśli jest to protokół binarny: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
powinno być /dev/pts/27
. cat /deb/pts/27 | tee /dev/ttyS0
Powinien też byćcat /dev/pts/27 | sudo tee /dev/ttyS0
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/5
któ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/ttyp0
itp.), Które prawdopodobnie nie są używane w obecnych jądrach Linuksa.
interceptty
i działałem!
Spróbuj użyć jpnevulator (w pakiecie debian) lub slsniff . Zauważ, że slsniff używa przestarzałego modelu emulacji terminala.