ехо-сервер з 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.