Port serial sniff di Linux

Jawaban:

27

Ada beberapa opsi:

  • sersniff adalah program sederhana untuk tunnel / sniff antara 2 port serial.

  • Serial to Network Proxy (ser2net) menyediakan cara bagi pengguna untuk terhubung dari koneksi jaringan ke port serial.

  • SerialSpy bertindak sebagai perangkat pass-through serial. Ini mendengarkan data yang masuk pada dua port serial dan meneruskannya sehingga perangkat bertindak seolah-olah mereka terhubung langsung. Ini juga mencatat data saat bergerak melalui port.

  • sercd adalah redirector port serial yang kompatibel dengan RFC 2217. Ini memungkinkan Anda berbagi port serial melalui jaringan. Itu didasarkan pada sredird. Protokol RFC2217 adalah ekstensi untuk telnet dan memungkinkan perubahan parameter port komunikasi.

  • SerLooK adalah aplikasi KDE untuk memeriksa data yang melewati saluran serial. Ia dapat berfungsi sebagai terminal biner yang mengirim dan menerima data melalui port yang ditentukan (mode Point to Point) dan menampilkannya pada tampilan terpisah. Setiap tampilan dapat dikonfigurasi untuk menampilkan data dalam heksadesimal, desimal, oktal, biner, dan ASCII mentah. Dimungkinkan juga untuk melakukan I / O melalui tampilan emulasi terminal dan menentukan port sekunder dan memonitor lalu lintas antara dua host eksternal menggunakan kabel "Y" (mode pengintai).

  • nullmodem menciptakan jaringan virtual pseudo-terminal. Ini dapat digunakan sebagai adaptor untuk menghubungkan dua program yang biasanya membutuhkan kartu antarmuka serial.

  • monitor ttywatch , log, dan terminal I / O multipleks. Ini memiliki rotasi log penuh bawaan, dan dapat menggunakan telnet serta port TTY lokal.

  • Serif garis sniffer (slsnif) adalah utilitas pembuatan port serial. Ini mendengarkan port serial yang ditentukan dan mencatat semua data melalui port ini di kedua arah.

hlovdal
sumber
2
Anda dapat mencapai ini dengan alat standar menggunakan socatdan tee. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0. Output akan memberi Anda dua port ...N PTY is /dev/pts/27... N PTY is /dev/pts/28. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27dan di terminal lain sudo cat /deb/pts/27 | tee /dev/ttyS0. Akhirnya 3) Hubungkan program Anda ke /dev/tty/28. Kedua perintah tee akan membuang kedua arah ke konsol dan meneruskan ke / dari port serial yang sebenarnya. Perhatikan bahwa pengaturan port seperti baudrate harus dikonfigurasikan sebelumnya.
jtpereyda
Anda dapat menyimpan barang-barang tee ke file, juga: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsdan xxdakan membantu jika protokol biner: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
jtpereyda
@ jtpereyda sepertinya langkah ke-3 Anda harus menghubungkan program ke / dev / ttyS0. misalnya ketika saya menghubungkan PUTTY di sana ke / dev / ttyS0 dengan benar menunjukkan kepada saya bahwa output pada langkah 2 sementara juga berkomunikasi dengan papan tertanam yang sebenarnya. BTW Anda memiliki salah ketik /deb/pts/27harus /dev/pts/27. Juga cat /deb/pts/27 | tee /dev/ttyS0haruscat /dev/pts/27 | sudo tee /dev/ttyS0
antusias
Jawaban ini sudah sangat lama, harap pertimbangkan interceptty untuk menghirup port serial
CharlesB
1
Anda bisa memberikan itu sebagai jawaban lain. @CharlesB Menjelaskan mengapa lebih baik akan menyenangkan juga.
anak ayam
12

Saya mencoba interceptty ( salin di GitHub ), dan berhasil menggunakannya. Pertama saya menjalankannya di port of interest:

interceptty /dev/ttyACM0 

Kemudian saya menghubungkan program-tes-ke terminal semu /dev/pts/5yang dibuat intersepsi.


Saya mencoba menggunakan slsnif , tetapi saya menemukan kesalahan:

Failed to open a pty: No such file or directory

Item milis ini menunjukkan bahwa slsnif hanya mendukung terminal semu "legacy" ( /dev/ttyp0dll) yang mungkin tidak digunakan pada kernel Linux saat ini.

Craig McQueen
sumber
1
Terima kasih! Kesalahan yang sama di sini di perangkat saya yang tertanam. Kemudian saya menggunakan intercepttydan berhasil!
geckeck
Bagaimana Anda tahu pseudo-terminal mana yang dibuatnya?
chwi
@ chwi Anda dapat memberikan parameter kedua, yang merupakan nama "perangkat depan" yang merupakan symlink ke pseudo-terminal yang dibuatnya.
Craig McQueen
Terima kasih. Saya menemukan bahwa secara default, ini menciptakan / dev / intercepttydummy. Saya bisa melihat lalu lintas bolak-balik, tetapi data yang masuk dari perangkat hanya dibaca dengan intersepsi, bukan perangkat lunak saya yang menjalankan pyserial.
chwi
3

Coba gunakan jpnevulator (paket debian) atau slsniff . Perhatikan bahwa slsniff menggunakan model emulasi terminal yang sudah tidak digunakan lagi.

sntg
sumber