Есть ли способ быстро привязываться к TCP-порту/ip-адресу и просто распечатывать всю информацию в STDOUT? У меня есть простое решение для отладки, которое пишет вещи до 127.0.0.1:4444, и я хотел бы просто привязать порт из bash и распечатать все, что попадается. Есть ли простой способ сделать это?
Простой сервер Socket в Bash?
Ответ 1
$ nc -k -l 4444 > filename.out
см. nc(1)
Ответ 2
Просто потому, что вы спросили, как это сделать в bash
, хотя ответ netcat
очень важен:
$ exec 3<>/dev/tcp/127.0.0.1/4444
$ cat <&3
Ответ 3
Это работает так, как вы ожидаете:
nc -k -l 4444 |bash
а затем вы
echo "ls" >/dev/tcp/127.0.0.1/4444
то вы увидите список, выполненный bash.
[Краткое предупреждение безопасности]
Конечно, если вы оставите что-то вроде этого на вашем компьютере, у вас есть широкий открытый шлюз для всех видов атак, потому что команды могут быть отправлены из любой учетной записи пользователя на любом хосте в вашей сети. Это не обеспечивает никакой безопасности (аутентификации, идентификации) и передает все переданные команды, незашифрованные по сети, поэтому их можно легко злоупотреблять.
Ответ 4
Добавление ответа с помощью ncat
, которое @Freedom_Ben ссылается на:
ncat -k -l 127.0.0.1 4444
и объяснение вариантов из man ncat:
-k, --keep-open Accept multiple connections in listen mode
-l, --listen Bind and listen for incoming connections