Làm cách nào tôi có thể đánh hơi các gói được truyền thông qua một cổng nối tiếp trên Linux?
Làm cách nào tôi có thể đánh hơi các gói được truyền thông qua một cổng nối tiếp trên Linux?
Câu trả lời:
Có một vài tùy chọn:
sersniff là một chương trình đơn giản để tạo đường hầm / đánh hơi giữa 2 cổng nối tiếp.
Nối tiếp với Proxy mạng (ser2net) cung cấp cách để người dùng kết nối từ kết nối mạng với cổng nối tiếp.
SerialSpy hoạt động như một thiết bị truyền qua nối tiếp. Nó lắng nghe dữ liệu đến trên hai cổng nối tiếp và chuyển tiếp nó để các thiết bị hoạt động như thể chúng được kết nối trực tiếp. Nó cũng ghi lại dữ liệu khi nó di chuyển qua các cổng.
sercd là một bộ chuyển hướng cổng nối tiếp tuân thủ RFC 2217. Nó cho phép bạn chia sẻ một cổng nối tiếp thông qua một mạng. Nó dựa trên sredird. Giao thức RFC2217 là một phần mở rộng cho telnet và cho phép thay đổi các tham số cổng giao tiếp.
SerLooK là một ứng dụng KDE để kiểm tra dữ liệu đi qua các dòng nối tiếp. Nó có thể hoạt động như một thiết bị đầu cuối nhị phân gửi và nhận dữ liệu thông qua một cổng được xác định (chế độ Điểm tới Điểm) và hiển thị chúng trên các chế độ xem riêng biệt. Mỗi chế độ xem có thể được cấu hình để hiển thị dữ liệu ở dạng thập lục phân, thập phân, bát phân, nhị phân và ASCII thô. Cũng có thể thực hiện I / O thông qua các chế độ xem mô phỏng đầu cuối và xác định cổng phụ và giám sát lưu lượng giữa hai máy chủ bên ngoài bằng cáp "Y" (chế độ Snooper).
nullmodem tạo ra một mạng ảo các thiết bị đầu cuối giả. Nó có thể được sử dụng như một bộ chuyển đổi để kết nối hai chương trình thường cần thẻ giao diện nối tiếp.
màn hình ttywatch , nhật ký và thiết bị đầu cuối đa kênh I / O. Nó có vòng quay nhật ký đầy đủ được tích hợp và có thể sử dụng telnet cũng như các cổng TTY cục bộ.
Sniffer dòng nối tiếp (slsnif) là một tiện ích ghi nhật ký cổng nối tiếp. Nó lắng nghe cổng nối tiếp được chỉ định và ghi lại tất cả dữ liệu đi qua cổng này theo cả hai hướng.
socat
và tee
. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0
. Đầu ra sẽ cung cấp cho bạn hai cổng ...N PTY is /dev/pts/27... N PTY is /dev/pts/28
. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27
và trong một thiết bị đầu cuối khác sudo cat /deb/pts/27 | tee /dev/ttyS0
. Cuối cùng 3) Kết nối chương trình của bạn với /dev/tty/28
. Hai lệnh tee sẽ kết xuất cả hai hướng vào bàn điều khiển và chuyển tiếp đến / từ cổng nối tiếp thực tế. Lưu ý rằng các cài đặt cổng như baudrate phải được cấu hình trước thời hạn.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
và xxd
sẽ giúp nếu đó là giao thức nhị phân : cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
nên được /dev/pts/27
. Cũng cat /deb/pts/27 | tee /dev/ttyS0
nêncat /dev/pts/27 | sudo tee /dev/ttyS0
Tôi đã thử đánh chặn ( sao chép tại GitHub ) và đã thành công trong việc sử dụng nó. Đầu tiên tôi chạy nó trên cảng quan tâm:
interceptty /dev/ttyACM0
Sau đó, tôi đã kết nối chương trình thử nghiệm dưới chương trình với thiết bị đầu cuối giả /dev/pts/5
được tạo ra.
Tôi đã thử sử dụng slsnif , nhưng tôi thấy rằng tôi đã gặp lỗi:
Failed to open a pty: No such file or directory
Mục danh sách gửi thư này chỉ ra rằng slsnif chỉ hỗ trợ các thiết bị đầu cuối giả "di sản" ( /dev/ttyp0
vv) có thể không được sử dụng trên các nhân Linux hiện tại.
interceptty
và đã làm việc!
Hãy thử sử dụng jpnevulator (debian đóng gói) hoặc slsniff . Lưu ý rằng slsniff sử dụng mô hình mô phỏng thiết bị đầu cuối không dùng nữa.