máy chủ echo với netcat hoặc socat


18

Tôi muốn một máy chủ echo UDP nhận các gói và trả lời chính xác những gì nó đã nhận được. Làm thế nào tôi có thể đơn giản làm điều này bằng cách sử dụng netcathoặc socat? Nó sẽ tồn tại mãi mãi và xử lý các gói đến từ một số máy chủ.


7
Xin đừng làm điều này có thể truy cập Internet. Vì nó dựa trên UDP, nó có thể được sử dụng để gửi một luồng gói đến các đích tùy ý bằng cách sử dụng các gói giả mạo nguồn.
Evan Anderson

Câu trả lời:


17

Một công cụ giống như netcat khác là phiên bản nmap ncat, có rất nhiều tính năng được tích hợp sẵn để đơn giản hóa những thứ như thế này. Điều này sẽ làm việc:

ncat -e /bin/cat -k -u -l 1235

-e có nghĩa là nó thực thi / bin / cat (để lặp lại những gì bạn gõ)
-k có nghĩa là tiếp tục sống, rằng nó tiếp tục lắng nghe sau mỗi kết nối
-u có nghĩa là udp
-l 1235 có nghĩa là nó nghe trên cổng 1235



6

Bạn cũng có thể sử dụng socat (thay vì sử dụng netcat) làm máy chủ echo và netcat làm máy khách.

Máy chủ tiếng vang Socat (nghe trên cổng TCP 1234):

socat -v tcp-l:1234,fork exec:'/bin/cat'

Máy khách Netcat (kết nối với serverip trên cổng TCP 1234):

nc serverip 1234

2

Bạn có thể viết một chương trình C mà dĩa nc -u -l -p 4321 và sau đó sử dụng dup (2) để kết nối:

  • nc stdin với stdout của cha mẹ
  • nc stdout với stdin của cha mẹ

Sau đó, trong một vòng lặp vô tận, cha mẹ đọc từ stdin và viết trong thiết bị xuất chuẩn bất cứ điều gì cha mẹ đọc.


Tôi có thể sử dụng socat -v PIPE UDP-LISTEN:5555,fork, nhưng kết nối thứ hai bị từ chối. Nhân tiện, nó hoạt động tốt với TCP-LISTEN. Tôi đang tránh viết mã, nếu không tôi có thể viết tất cả bằng C.
Mohammad Hedayati

Bạn phải bọc toàn bộ mọi thứ trong một vòng lặp vô tận: trong khi sự thật; làm công cụ xã hội; xong
adamo

Bạn cũng có thể có được một chút cảm hứng khi sử dụng hướng dẫn này
adamo

0

Nếu bạn đang chạy trên Windows và sử dụng một môi trường unix như cygwin, netcat Migth không cung cấp tham số -e. Điều này làm việc tốt cho tôi.

http://bansky.net/echotool/


0

netcat giải pháp được cài đặt sẵn trong Ubunutu

Bản netcatcài đặt sẵn trong Ubuntu 16.04 đến từ netcat-openbsdvà không có -ctùy chọn nào , nhưng hướng dẫn sử dụng đưa ra giải pháp:

sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo

Sau đó, ví dụ khách hàng:

echo abc | netcat localhost 8000

TODO: làm thế nào để sửa đổi giá trị chuỗi đầu vào? Sau đây không trả lại bất kỳ trả lời:

cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo

Ví dụ shell từ xa hoạt động:

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo

Tuy nhiên, tôi không biết làm thế nào để giải quyết các yêu cầu đồng thời.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.