Sniff послідовний порт в Linux


Відповіді:


27

Є кілька варіантів:

  • sersniff - це проста програма для тунелю / обнюху між двома послідовними портами.

  • Serial to Network Proxy (ser2net) надає користувачеві можливість підключення з мережевого з'єднання до послідовного порту.

  • SerialSpy виконує функцію послідовного пропускного пристрою. Він слухає вхідні дані на два послідовних порти та передає їх, щоб пристрої діяли так, ніби вони безпосередньо підключені. Він також записує дані під час переміщення через порти.

  • sercd - це сумісний з RFC 2217 послідовний переспрямовувач портів. Це дозволяє ділитися послідовним портом через мережу. В його основі лежить sredird. Протокол RFC2217 є розширенням до telnet і дозволяє змінювати параметри порту зв'язку.

  • SerLooK - додаток KDE для перевірки даних, що переходять через послідовну лінію. Він може працювати як двійковий термінал, який надсилає та приймає дані через визначений порт (режим "Показувати в точку") та відображає їх на окремих представленнях. Кожен вигляд може бути налаштований для відображення даних у шістнадцятковій, десятковій, вісімковій, двійковій та необробленій ASCII. Можливо також виконувати введення / виведення через перегляд емуляції терміналів та визначити вторинний порт та контролювати трафік між двома зовнішніми хостами за допомогою кабелю "Y" (режим Snooper).

  • nullmodem створює віртуальну мережу псевдотерміналів. Його можна використовувати як адаптер для підключення двох програм, яким зазвичай потрібні послідовні інтерфейсні карти.

  • ttywatch монітори, журнали та мультиплекси терміналу вводу / виводу. У ньому вбудований повний оберт журналу, і він може використовувати telnet, а також локальні порти TTY.

  • Снайпер послідовних ліній (slsnif) - це утиліта реєстрації послідовних портів. Він слухає вказаний послідовний порт і записує всі дані, що проходять через цей порт, в обох напрямках.


2
Цього можна досягти за допомогою стандартних інструментів 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. Дві команди трійника скидають обидва напрямки до консолі та переходять до / від фактичного послідовного порту. Зауважте, що параметри портів, наприклад, баудрат, повинні бути налаштовані заздалегідь.
jtpereyda

Ви можете зберегти трійник матеріал в файл, теж: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsі xxdдопоможуть , якщо це бінарний протокол: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
jtpereyda

@jtpereyda, схоже, вашим третім кроком має бути підключення програми до / dev / ttyS0. наприклад, коли я підключаю PUTTY туди / dev / ttyS0, це правильно показує мені, що вихід на етапі 2, а також спілкується з фактично вбудованою платою. До речі у вас є помилка /deb/pts/27повинна бути /dev/pts/27. Також cat /deb/pts/27 | tee /dev/ttyS0має бутиcat /dev/pts/27 | sudo tee /dev/ttyS0
enthusiasticgeek

Ця відповідь дуже стара, враховуйте перехоплення для нюхання серійного порту
CharlesB

1
Ви можете надати це як іншу відповідь. @CharlesB Пояснення, чому це теж було б добре
пташенята

12

Я спробував перехоплення ( копіювати в GitHub ) і досяг успіху в його використанні. Спочатку я запустив його на цікавий порт:

interceptty /dev/ttyACM0 

Потім я підключив тестувану програму до псевдотерміналу, /dev/pts/5який створив перехоплення.


Я спробував використати slsnif , але виявив, що отримав помилку:

Failed to open a pty: No such file or directory

Цей пункт списку розсилки вказує, що slsnif підтримує лише "застарілі" псевдо-термінали ( /dev/ttyp0тощо), які, ймовірно, не використовуються в поточних ядрах Linux.


1
Спасибі! Така ж помилка і на моєму вбудованому пристрої. Тоді я користувався intercepttyі робив роботу!
gfleck

Як ви знаєте, який псевдотермінал він створює?
chwi

@chwi Ви можете надати йому другий параметр, який є назвою "переднього пристрою", який є символьним посиланням на створений ним псевдотермінал.
Крейг МакКуїн,

Дякую. Я виявив, що за замовчуванням він створює / dev / intercepttydummy. Я міг спостерігати за трафіком вперед і назад, але вхідні дані з пристрою читалися лише за перехопленням, а не моїм програмним забезпеченням, що працює під керуванням pyserial.
chwi

3

Спробуйте використовувати jpnevulator (пакується з debian) або slsniff . Зауважте, що slsniff використовує застарілу модель емуляції терміналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.