Nc синтаксис


Предыдущая страница Далее Добавить эту кнопку Социальной Закладки nc — произвольные TCP-и UDP-соединения и прослушивание nc
.Bk -words [-46DdhklnrStUuvz] [-i interval] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [Xo —x proxy_address[: port]] [hostname] [port[s]]
.Ek Утилита nc (или netcat) используется практически для всего. Что связано с TCP или UDP. Он может открывать TCP-соединения, отправлять UDP-пакеты, прослушивать произвольные TCP-и UDP-порты, выполнять сканирование портов и работать как с IPv4, так и с IPv6. В отличие от telnet(1), nc прекрасно скриптует и разделяет сообщения об ошибках на стандартные ошибки вместо того. Чтобы отправлять их на стандартный вывод, как

это делает telnet(1) с некоторыми.

Общее использование включает в себя:

  • простые TCP-прокси
  • HTTP-клиенты и серверы на основе shell-скриптов
  • тестирование сетевых демонов
  • команда SOCKS или HTTP ProxyCommand для ssh(1)
  • и многое, многое другое

Эти варианты заключаются в следующем:

Метка Описание
4 Заставляет nc использовать только IPv4-адреса.
6 Заставляет nc использовать только IPv6-адреса.
Д Включите отладку на сокете.
д Не пытайтесь читать из stdin.
ч Распечатывает справку ЧПУ.
я интервале
  Задает интервал времени задержки между отправленными и полученными строками текста.

Также это приводит к задержке времени между подключениями к нескольким портам.

к Заставляет nc продолжать прослушивать другое соединение после завершения текущего соединения. Использование этой опции без опции —l является ошибкой.
л Используется для указания того, что nc должен прослушивать входящее соединение. А не инициировать соединение с удаленным хостом. Использование этой опции в сочетании с опциями —p , —s или —z является ошибкой. Кроме того, любые тайм — ауты, указанные с помощью опции-

w, игнорируются.

n Не выполняйте поиск DNS или служб по указанным адресам, именам хостов или портам.
p source_port
  Указывает исходный порт, который должен использовать nc. В зависимости от ограничений привилегий и доступности. Было бы ошибкой использовать эту опцию в сочетании с опцией —l.
р Указывает, что исходные и/или целевые порты должны выбираться случайным образом. А не последовательно в пределах диапазона или в том порядке. В котором их назначает система.
С Включает опцию подписи TCP MD5 RFC 2385.
s source_ip_address
  Указывает IP-адрес интерфейса, который используется для отправки пакетов.

Было бы ошибкой использовать эту опцию в сочетании с опцией —l.

T ToS
  Указывает IP-тип службы (ToS) для подключения. Допустимыми значениями являются токены
т Заставляет nc отправлять ответы RFC 854 DO NOT и WILL NOT на запросы RFC 854 DO и WILL. Это позволяет использовать nc для написания сценариев сеансов telnet.
У Указывает на использование доменных сокетов Unix.
у Используйте UDP вместо стандартного варианта TCP.
в Пусть nc даст более подробный вывод.
тайм-аут w
  Если соединение и stdin простаивают более

нескольких секунд тайм-аута, то соединение автоматически закрывается. Флаг —w не влияет на опцию —l, то есть nc будет вечно прослушивать соединение, сфлагом — w или без него. По умолчанию тайм-аут отсутствует.

X proxy_version
  Запрашивает, чтобы nc использовал указанный протокол при разговоре с прокси-сервером. Поддерживаемые протоколы: Если протокол не указан, используется SOCKS версии 5.
x proxy_address[: port]
  Запрашивает, чтобы nc подключался к имени хоста с помощью прокси-сервера proxy_address и порта. Если порт не указан, то используется известный порт для протокола прокси (1080 для SOCKS, 3128 для HTTPS).

z Указывает, что nc должен просто сканировать прослушивающие демоны. Не отправляя им никаких данных. Было бы ошибкой использовать эту опцию в сочетании с опцией —l.

имя хоста может быть числовым IP — адресом или символическим именем хоста (если не задана опция-n). Как правило, необходимо указать имя хоста. Если только не задана опция — l (в этом случае используется локальный хост).

порт [ы] может быть одним целым числом или диапазоном. Диапазоны имеют вид nn-mm. В общем случае должен быть указан порт назначения, если

только не задана опция — U (в этом случае должен быть указан сокет). Довольно просто построить очень простую клиент-серверную модель с использованием nc. На одной консоли запустите прослушивание nc на определенном порту для подключения. Например:

    $ nc -l 1234

nc теперь прослушивает порт 1234 для подключения. На второй консоли (или на второй машине) подключитесь к машине и порту. Который прослушивается:

    $ nc 127.0.0.1 1234

Теперь между портами должно быть соединение. Все, что набирается на второй консоли, будет соединено с первой, и наоборот.

После установки соединения nc на самом деле не заботится о том. Какая сторона используется в качестве Соединение может быть прервано с помощью EOF (‘^D’). Пример, приведенный в предыдущем разделе. Может быть расширен для построения базовой модели передачи данных. Любая информация, входящая в один конец соединения, будет выводиться на другой конец. А вход и выход могут быть легко захвачены для эмуляции передачи файлов.

Начните с использования nc для прослушивания определенного порта. А выходные данные будут записаны в файл:

   

Используя вторую машину, подключитесь к прослушивающему процессу ЧПУ, подавая ему файл. Который должен быть передан:

    $ nc host.example.com 1234

После передачи файла соединение будет автоматически закрыто.

Иногда полезно разговаривать с серверами Это может помочь в устранении неполадок. Когда может потребоваться проверить. Какие данные сервер отправляет в ответ на команды. Выданные клиентом. Например, чтобы получить домашнюю страницу веб-сайта:

$ echo -n 

Обратите внимание, что при этом также отображаются заголовки, отправленные веб-сервером. При необходимости их можно отфильтровать с помощью такого инструмента, как sed(1).

Более сложные примеры могут быть построены, когда пользователь знает формат запросов. Требуемых сервером. В качестве другого примера электронное письмо может быть отправлено на SMTP-сервер с помощью:

Может быть полезно знать, какие порты открыты и работают службы на целевой машине. Флаг —z может использоваться для указания nc сообщать об открытых портах. А не инициировать соединение. Например:

$ nc -z host.example.com 20-30 Подключение к host.example.com 22 порта [tcp/ssh] удалось! Подключение к host.example.com 25 порт [tcp/smtp] успешно! 

Диапазон портов был задан таким образом, чтобы ограничить поиск портами 20-30.

Кроме того, было бы полезно узнать. Какое серверное программное обеспечение работает и какие версии. Эта информация часто содержится в поздравительных баннерах. Чтобы получить их, необходимо сначала установить соединение. А затем разорвать соединение. Когда баннер будет извлечен. Это можно сделать, указав небольшой тайм — аут с флагом-w или, возможно. Выдавсерверу команду

$ echo SSH-1.99-OpenSSH_3.6.1p2 Несоответствие протокола. 220 host.example.com IMS SMTP Receiver Версия 0.84 Готов 

Откройте TCP — соединение с портом 42 host.example.com. Используя порт 31337 в качестве исходного порта. С тайм-ау 5 секунд:

    $ nc -p 31337 -w 5 host.example.com 42

Откройте соединение UDP с портом 53 host.example.com:

    $ nc -u host.example.com 53

Откройте TCP — соединение с портом 42 host.example.com использование 10.1.2.3 в качестве IP для локального конца соединения:

    $ nc -s 10.1.2.3 host.example.com 42

Создание и прослушивание доменного сокета Unix:

    $ nc -lU /var/tmp/dsocket

Подключение к порту 42 host.example.com через HTTP-прокси в 10.2.3.4, порт 8080. Этот пример также может быть использован ssh(1); дополнительные сведения см. в директиве ProxyCommand в ssh_config(5).

    $ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

ssh(1) Оригинальная реализация *Hobbit*