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