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.


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



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

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.


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/


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.