gema server dengan netcat atau socat

18

Saya ingin server gema UDP untuk mendapatkan paket, dan membalas dengan tepat apa yang telah diterima. Bagaimana saya bisa melakukan ini menggunakan netcatatau socat? Itu harus tetap hidup selamanya dan menangani paket yang datang dari beberapa host.

Mohammad Hedayati
sumber
7
Tolong jangan membuat hal ini dapat diakses internet. Karena berbasiskan UDP, ia dapat digunakan untuk mengirim aliran paket ke tujuan yang sewenang-wenang menggunakan paket yang dipalsukan sumber.
Evan Anderson

Jawaban:

17

Alat seperti netcat lainnya adalah versi nmap ncat,, yang memiliki banyak bawaan untuk menyederhanakan hal-hal seperti ini. Ini akan berhasil:

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

-e berarti itu mengeksekusi / bin / cat (untuk mengulang apa yang Anda ketik)
-k berarti tetap-hidup, bahwa ia tetap mendengarkan setelah setiap koneksi
-u berarti udp
-l 1235 berarti ia mendengarkan pada port 1235

Mattias Ahnberg
sumber
11

Saya dulu socat -v PIPE udp-recvfrom:5553,forkmenjalankan server dan socat - udp:localhost:5553untuk klien. Ini sangat membantu!

Mohammad Hedayati
sumber
1
Sebuah alternatif, yang berasal dari stackoverflow.com/a/35857095/222529 adalahsocat TCP4-LISTEN:2000,fork EXEC:cat
Jir
6

Anda juga dapat menggunakan socat (daripada menggunakan netcat) sebagai server gema dan netcat sebagai klien.

Server gema Socat (mendengarkan pada port TCP 1234):

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

Klien Netcat (terhubung ke serverip pada port TCP 1234):

nc serverip 1234
Andre Miras
sumber
2

Anda dapat menulis program C yang bercabang nc -u -l -p 4321 dan kemudian menggunakan dup (2) untuk menghubungkan:

  • nc stdin dengan stdout orang tua
  • nc stdout dengan stdin orang tua

Kemudian dalam loop tanpa akhir orangtua membaca dari stdin dan menulis di stdout apa pun yang dibaca orang tua.

adamo
sumber
Saya bisa menggunakan socat -v PIPE UDP-LISTEN:5555,fork, tetapi koneksi kedua ditolak. Omong-omong, ini berfungsi baik dengan TCP-LISTEN. Saya menghindari kode, kalau tidak saya bisa menulis semuanya dalam C.
Mohammad Hedayati
Anda harus membungkus semuanya dalam satu lingkaran tanpa akhir: sementara benar; melakukan hal-hal socat; selesai
adamo
Anda juga bisa mendapatkan inspirasi menggunakan tutorial ini
adamo
0

Jika Anda menjalankan pada Windows dan menggunakan lingkungan seperti unix seperti cygwin, netcat migth tidak menyediakan parameter -e. Ini bekerja dengan baik untuk saya.

http://bansky.net/echotool/

Chris
sumber
0

netcat solusi pra-instal di Ubunutu

The netcatpra-instal di Ubuntu 16.04 berasal dari netcat-openbsd, dan tidak memiliki -cpilihan, tetapi panduan memberikan solusi:

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

Kemudian contoh klien:

echo abc | netcat localhost 8000

TODO: bagaimana cara memodifikasi nilai string input? Berikut ini tidak mengembalikan balasan apa pun:

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

Contoh shell jarak jauh berfungsi:

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

Namun, saya tidak tahu bagaimana menangani permintaan bersamaan.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber