ехо-сервер з netcat або socat


18

Я хочу, щоб ехо-сервер UDP отримував пакети та відповідав саме на те, що він отримав. Як я можу просто зробити це за допомогою netcatабо socat? Він повинен залишатися живим назавжди і обробляти пакети, що надходять від кількох хостів.


7
Будь ласка, не робіть цю річ через Інтернет. Оскільки він базується на UDP, його можна використовувати для надсилання потоку пакетів до довільних пунктів призначення за допомогою пакетів, підроблених джерелом.
— Еван Андерсон

Відповіді:


17

Іншим інструментом, що нагадує мережу, є версія nmap ncat, яка має багато вбудованих приємностей для спрощення таких речей. Це спрацювало б:

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

-e означає, що він виконує / bin / cat (відкликати назад те, що ви вводите)
-k означає, що продовжуйте жити, що він продовжує слухати після кожного з'єднання
-u означає udp
-l 1235 означає, що він слухає на порту 1235



6

Ви також можете використовувати socat (а не використовувати netcat) як ехо-сервер і netcat як клієнт.

Ec-сервер Socat (слухає TCP-порт 1234):

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

Клієнт Netcat (підключається до serverip на порті TCP 1234):

nc serverip 1234

2

Ви можете написати програму C, яка розщедриться, nc -u -l -p 4321 а потім використовує dup (2) для підключення:

  • nc stdin з батьківською строкою
  • nc stdout з stdin батьків

Потім у нескінченному циклі батько читає з stdin і пише в stdout все, що читає батько.


Я можу використовувати socat -v PIPE UDP-LISTEN:5555,fork, але в другому з'єднанні відмовляються. До речі, він прекрасно працює з TCP-LISTEN. Я уникаю кодування, інакше я міг би все це записати в C.
— Mohammad Hedayati

Ви повинні загортати всю справу в нескінченну петлю: поки правда; робити речі сокату; зроблено
— адамо

Ви також можете отримати натхнення, використовуючи цей підручник
— adamo

0

Якщо ви працюєте в Windows і використовуєте середовище, подібне unix, як cygwin, netcat migth не надає параметр -e. Це працювало для мене просто чудово.

http://bansky.net/echotool/


0

netcat рішення, попередньо встановлене в Ubunutu

netcatПопередньо встановлено в Ubuntu 16.04 поставляється з netcat-openbsd, і не мають -cопцій, але керівництво дає рішення:

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

Тоді приклад клієнта:

echo abc | netcat localhost 8000

TODO: як змінити значення вхідного рядка? Наступне не дає жодної відповіді:

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

Приклад віддаленої оболонки, однак, працює:

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

Я не знаю, як просто розібратися з одночасними запитами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.