Как я могу прослушивать пакеты, передаваемые через последовательный порт в Linux?
Как я могу прослушивать пакеты, передаваемые через последовательный порт в Linux?
Ответы:
Есть несколько вариантов:
sersniff - это простая программа для туннелирования / прослушивания между двумя последовательными портами.
Serial to Network Proxy (ser2net) предоставляет пользователю способ подключения из сетевого подключения к последовательному порту.
SerialSpy действует как последовательное сквозное устройство. Он прослушивает входящие данные через два последовательных порта и передает их таким образом, чтобы устройства действовали так, как если бы они были напрямую подключены. Это также регистрирует данные, поскольку это перемещается через порты.
sercd - это перенаправитель последовательного порта, совместимый с RFC 2217. Это позволяет вам использовать последовательный порт через сеть. Это основано на Sredird. Протокол RFC2217 является расширением для telnet и позволяет изменять параметры порта связи.
SerLooK - это приложение KDE для проверки данных, передаваемых по последовательным линиям. Он может работать как бинарный терминал, который отправляет и получает данные через определенный порт (режим «точка-точка») и отображает их в отдельных представлениях. Каждое представление может быть настроено для отображения данных в шестнадцатеричном, десятичном, восьмеричном, двоичном и необработанном ASCII. Также возможно выполнить ввод / вывод через представления эмуляции терминала и определить вторичный порт и контролировать трафик между двумя внешними хостами, используя кабель "Y" (режим Snooper).
nullmodem создает виртуальную сеть псевдо-терминалов. Его можно использовать в качестве адаптера для подключения двух программ, для которых обычно требуются карты последовательного интерфейса.
ttywatch контролирует, регистрирует и мультиплексирует терминальный ввод-вывод. Он имеет встроенную полную ротацию логов и может использовать как telnet, так и локальные порты TTY.
Анализатор последовательной линии (slsnif) - это утилита регистрации последовательного порта. Он слушает указанный последовательный порт и регистрирует все данные, проходящие через этот порт в обоих направлениях.
socat
и tee
. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0
. Выход выдаст вам два порта ...N PTY is /dev/pts/27... N PTY is /dev/pts/28
. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27
и в другом терминале sudo cat /deb/pts/27 | tee /dev/ttyS0
. Наконец 3) Подключите вашу программу к /dev/tty/28
. Две команды tee сбросят оба направления на консоль и перенаправят в / из фактического последовательного порта. Обратите внимание, что параметры порта, такие как скорость передачи данных, должны быть настроены заранее.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
и xxd
помогут , если это двоичный протокол: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
должна быть /dev/pts/27
. Также cat /deb/pts/27 | tee /dev/ttyS0
должно бытьcat /dev/pts/27 | sudo tee /dev/ttyS0
Я попытался перехватить ( копия на GitHub ), и успешно его использовал. Сначала я запустил его в интересующем порту:
interceptty /dev/ttyACM0
Затем я подключил тестируемую программу к псевдотерминалу, /dev/pts/5
который создал перехват.
Я попытался использовать slsnif , но обнаружил, что получил ошибку:
Failed to open a pty: No such file or directory
Этот элемент списка рассылки указывает, что slsnif поддерживает только «устаревшие» псевдо-терминалы (и /dev/ttyp0
т. Д.) , Которые , вероятно, не используются в современных ядрах Linux.
interceptty
и сделал работу!
Попробуйте использовать jpnevulator (в комплекте с Debian) или slsniff . Обратите внимание, что slsniff использует устаревшую модель эмуляции терминала.