Netcat windows как пользоваться

Команда Netcat (nc) с примерами

Netcat (nc) Command with Examples

Netcat (или nc) — это утилита командной строки, которая читает и записывает данные через сетевые подключения, используя протоколы TCP или UDP.

Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого. Пакет Netcat предустановлен в MacOS и популярных дистрибутивах Linux, таких как Ubuntu.

Синтаксис Netcat

Самый основной синтаксис утилиты Netcat имеет следующий вид:

В Ubuntu вы можете использовать либо netcat или nc . Обе они являются символическими ссылками на версию Netcat для openBSD.

По умолчанию Netcat пытается установить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте -u опцию:

Сканирование портов

Сканирование портов является одним из наиболее распространенных способов использования Netcat. Вы можете сканировать один порт или диапазон портов.

Например, для поиска открытых портов в диапазоне 20-80 вы должны использовать следующую команду:

-z — Опция указывает nc на сканирование только для открытых портов, без отправки каких — либо данных для них и -v возможность предоставить более подробную информацию.

Вывод будет выглядеть примерно так:

Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep .

Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер по стандартному SSH-порту 22 :

Вывод будет выглядеть примерно так:

Для сканирования портов UDP просто добавьте -u параметр в команду, как показано ниже:

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

Отправка файлов через Netcat

Netcat можно использовать для передачи данных с одного хоста на другой, создав базовую модель клиент / сервер.

Это работает, настроив Netcat на прослушивание определенного порта (используя -l опцию) на принимающем хосте, а затем установив обычное TCP-соединение с другим хостом и отправив файл через него.

На приеме запустите следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:

С узла-отправителя подключитесь к узлу-получателю и отправьте файл:

Для передачи каталога вы можете использовать tar для архивирования каталога на исходном хосте и для извлечения архива на конечном хосте.

На принимающем хосте настройте средство Netcat на прослушивание входящего соединения через порт 5555. Входящие данные передаются в команду tar, которая извлечет архив:

На отправляющем хосте упакуйте каталог и отправьте данные, подключившись к nc процессу прослушивания на принимающем хосте:

Вы можете наблюдать за прогрессом передачи на обоих концах. После завершения введите, CTRL+C чтобы закрыть соединение.

Создание простого сервера чата

Процедура создания онлайн-чата между двумя или более хостами такая же, как и при передаче файлов.

На первом хосте запустите процесс Netcat для прослушивания порта 5555:

Со второго хоста выполните следующую команду для подключения к порту прослушивания:

Теперь, если вы наберете сообщение и нажмете, ENTER оно будет показано на обоих хостах.

Читайте также:  Как синхронизировать время windows server

Чтобы закрыть соединение, введите CTRL+C .

Выполнение HTTP-запроса

Несмотря на то, что есть намного лучшие инструменты для HTTP-запросов, такие как curl , вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.

Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, введите:

Полный ответ, включая заголовки HTTP и код HTML, будет напечатан в терминале.

Вывод

Из этого руководства вы узнали, как использовать утилиту Netcat для установки и тестирования соединений TCP и UDP.

Для получения дополнительной информации посетите справочную страницу Netcat и прочитайте обо всех других мощных параметрах команды Netcat.

Использование Netcat для создания и тестирования соединений TCP и UDP на VPS

Система Linux известна тем, что в большинстве дистрибутивов огромное количество полезных утилит командной строки поставляются сразу вместе с ОС. Опытные системные администраторы могут выполнить большинство задач с помощью встроенных инструментов без необходимости установки дополнительного программного обеспечения.

Данное руководство посвящено работе утилиты netcat. Этот своеобразный “швейцарский армейский нож” сетевых инструментов может быть полезен при мониторинге, тестировании и передаче данных через сетевые соединения.

В данном руководстве используется сервер Ubuntu 12.04, но в целом утилита netcat доступна практически на любом современном дистрибутиве. Ubuntu поставляется с BSD-вариантом утилиты, который и будет использован в этой статье. Другие версии могут работать по-другому или предоставлять другие опции.

Общий синтаксис

По умолчанию netcat работает путем инициации соединения TCP с удаленным хостом.

netcat [опции] хост порт

Такая команда инициирует TCP-соединение с указанным хостом через заданный порт. В основном, она функционирует аналогично старой команде Linux – telnet. Имейте в виду, что ваше соединение будет установлено в незашифрованном виде.

Чтобы вместо установления TCP-соединения отправить UDP-пакет, используйте опцию -u:

netcat -u хост порт

Чтобы задать диапазон портов, укажите первый и последний порт диапазона через тире:

netcat хост первый_порт-последний_порт

Обычно данная команда используется с дополнительными флагами.

На большинстве систем можно использовать netcat или nc. Они взаимозаменяемы, поскольку являются псевдонимами для одной команды.

Использование Netcat для сканирования портов

Чаще всего netcat используют как сканер портов.

Хотя Netcat, вероятно, не самый умный инструмент для выполнения этой задачи (в большинстве случаев для этого больше подойдет nmap), он может выполнять простое сканирование портов, чтобы быстро определить открытые порты.

Для этого укажите диапазон портов для сканирования (как показано выше), а также используйте опцию -z, которая выполняет сканирование вместо установления соединений.

К примеру, чтобы просканировать все порты до порта 1000, выполните:

netcat -z -v domain.com 1-1000

Как видите, кроме опции -z в данной команде использована опция -v, благодаря которой netcat выводит более подробную информацию.

Результат имеет такой вид:

nc: connect to domain.com port 1 (tcp) failed: Connection refused
nc: connect to domain.com port 2 (tcp) failed: Connection refused
nc: connect to domain.com port 3 (tcp) failed: Connection refused
nc: connect to domain.com port 4 (tcp) failed: Connection refused
nc: connect to domain.com port 5 (tcp) failed: Connection refused
nc: connect to domain.com port 6 (tcp) failed: Connection refused
nc: connect to domain.com port 7 (tcp) failed: Connection refused
. . .
Connection to domain.com 22 port [tcp/ssh] succeeded!
. . .

Как видите, эта команда выводит достаточно подробный результат, а также сообщает, было ли сканирование каждого отдельного порта успешным или нет.

Это удобно при использовании доменного имени.

Тем не менее, указывая нужные IP-адреса, можно значительно ускорить сканирование. Затем можно использовать флаг -n, чтобы указать, что не нужно разрешать IP-адрес с помощью DNS:

netcat -z -n -v 111.111.111.111 1-1000

Читайте также:  Скрыть панель задач windows 10 не активирована

Возвращаемые сообщения отправляются в стандартный поток ошибок. Сообщения о стандартных ошибках можно отправлять в стандартный вывод, чтобы фильтровать результаты.

Для перенаправления стандартной ошибки в стандартный вывод используется bash-синтаксис 2>&1; полученные результаты фильтруются с помощью grep:

netcat -z -n -v 111.111.111.111 1-1000 2>&1 | grep succeeded
Connection to 111.111.111.111 22 port [tcp/*] succeeded!

Итак, теперь можно видеть, что единственный открытый порт на удаленной машине в диапазоне 1-1000 – это порт 22, стандартный порт SSH.

Общение с помощью netcat

Команда netcat не ограничивается отправкой пакетов TCP и UDP. Она также может прослушивать порт на соединения и пакеты, что дает возможность подключить два экземпляра netcat в отношении “клиент-сервер”.

Который компьютер является сервером, а который – клиентом, существенно только во время начальной настройки. После того, как соединение установлено, связь одинакова в обоих направлениях.

На одной машине нужно сказать netcat прослушивать определенный порт на подключения. Это делается с помощью параметра -l, после которого указывается номер порта:

Выполнив эту команду, netcat прослушивает соединения TCP на порту 4444. Теперь обычный пользователь (не root) не сможет открывать какие-либо порты до 1000 (для безопасности сервера).

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

netcat domain.com 4444

После установления соединения может показаться, что ничего не произошло. Но теперь можно отправлять сообщения по обе стороны соединения и они будут видны на обоих серверах.

Введите сообщение и нажмите ENTER. Сообщение появится как на локальном, так и на удаленном сервере. Это работает и в обратном направлении.

Завершив передачу сообщений, нажмите CTRL-D, чтобы прервать TCP-соединение.

Обмен файлами с помощью netcat

Ознакомившись с основными функциями утилиты и выполнив предыдущие примеры, можно перейти к более сложным задачам.

Как уже говорилось, утилита netcat создает TCP-соединения, с помощью которых можно передавать практически любой вид информации, не ограничиваясь набранными пользователем сообщениями. Эти знания можно использовать, чтобы превратить netcat в программу передачи файлов.

Опять же, нужно выбрать одну машину для прослушивания соединений. Однако, вместо того, чтобы печатать информацию на экран (как в предыдущем примере), netcat разместит всю информацию прямо в файл:

netcat -l 4444 > received_file

На втором компьютере нужно создать простой текстовый файл:

echo «Hello, this is a file» > original_file

Теперь можно использовать этот файл в качестве входных данных для создания соединения со слушающим компьютером. Файл будет передаваться так же, как если бы он был набран в интерактивном режиме:

netcat domain.com 4444

Как можно видеть, на компьютере, который ожидал соединения, теперь есть новый файл с именем “received_file”, содержащий введенные на другом компьютере данные:

cat received_file
Hello, this is a file

Как видите, подобные соединения можно легко использовать для передачи любого рода информации.

К примеру, можно передать содержимое целого каталога; для этого создайте безымянный тарбол, передайте его на удаленную систему и распакуйте его в удаленный каталог.

На принимающей стороне можно использовать следующую команду, чтобы предупредить о том, что нужно получить и распаковать файл:

netcat -l 4444 | tar xzvf —

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

На стороне, содержащей каталог, который нужно передать, упакуйте данный каталог в архив, а затем отправьте его на удаленный компьютер с помощью netcat:

tar -czf — * | netcat domain.com 4444

На этот раз тире в команде tar значит, что содержимое текущего каталога (как указано символом *) нужно заархивировать и передать, а затем записать результат в стандартный вывод.

Читайте также:  Центр обновления windows ожидания установки что это

Затем это записывается в подключение ТСР, передается другой стороне соединения и распаковывается в текущий каталог удаленного компьютера.

Это лишь один пример передачи более сложных данных с одного компьютера на другой. Также часто используется команда dd, которая создает образ диска на одной стороне и передает его на удаленный компьютер. Тем не менее, такой подход не охвачен данным руководством.

Netcat как простой веб-сервер

Утилита netcat уже была использована для передачи сообщений и файлов. Этот же подход поможет использовать netcat как простой веб-сервер. Это может пригодиться для тестирования готовых страниц.

Для начала нужно создать HTML-файл на одном сервере:

В данном файле можно разместить следующий простой код:

Установка NetCat на Windows

В этом руководстве будет рассмотрен процесс установки и использования утилиты netcat на виртуальных серверах под управлением операционной системы семейства Windows.

Виртуальный сервер на базе Windows

  • Лицензия включена в стоимость
  • Тестирование 3-5 дней
  • Безлимитный трафик

Что это такое

Netcat — сетевая утилита, которую часто называют “Швейцарским армейским ножом”, используется для чтения или записи по TCP и UDP соединениям, используя простой интерфейс.

Установка

Загрузите архив с утилитой.
Перейдите в каталог с загрузками и распакуйте содержимое архива в любое удобное место.
В нашем примере мы будем использовать каталог “C:\Program files\netcat”.
При перемещении Вам необходимо ввести пароль “nc”.

Содержимое каталога после перемещения файлов.

Далее откройте командную строку Windows или PowerShell. С помощью команды cd перейдите в каталог с файлами: cd ‘C:\Program files\netcat’

Запустите утилиту netcat: .\nc.exe

В поле открывшейся командной строки можно начинать работу с утилитой. Для вывода доступных опций воспользуйтесь ключом -h: nc -h

-d detach from console, background mode фоновый режим работы
-e prog inbound program to exec [dangerous!!] программа на исполнение для
обмена данными с сетью
-g gateway source-routing hop point[s], up to 8 свободная маршрутизация пакета
от источника по указанному маршруту, максимум 8 точек
-G num source-routing pointer: 4, 8, 12, … свободная маршрутизация пакета
от источника по указанному количеству указателей
-h this cruft вывод справочной информации
-i secs delay interval for lines sent, ports scanned задержка между отправляемыми
данными в секундах
-l listen mode, for inbound connects режим прослушивания порта,
для входящих подключений
-L listen harder, re-listen on socket close повторное прослушивание
сокета закрытия
-n numeric-only IP addresses, no DNS использование IP-адреса,
а не DNS записи
-o file hex dump of traffic вывести дамп данных
-p port local port number локальный номер порта
-r randomize local and remote ports cлучайные локальные и
удаленные порты
-s addr local source address определяет заданный IP-адрес
для использования
-t answer TELNET negotiation совместимость с telnet
-u UDP mode режим подключения по UDP
-v verbose [use twice to be more verbose] дополнительная диагностика
-w secs timeout for connects and final net reads таймаут подключения в секундах
-z zero-I/O mode [used for scanning] не посылать данные

Примеры использования

На первой машине с IP-адресом X.X.X.X выполните команду nc с указанием порта, например 80.
Для Linux: nc -l -p 80

Для Windows после запуска утилиты netcat: -l -p 80

На другой машине, которая подключается, выполните команду, указав IP-адрес первой машины и порт.
Для Linux: nc X.X.X.X 80

  1. Получаем код страницы и дополнительную информацию с помощью GET-запроса. PS C:\Program Files\netcat> .\nc.exe
  2. Сканирование портов. PS C:\Program Files\netcat> .\nc.exe PS C:\Program Files\netcat> .\nc.exe
  3. Чат-сервер
    Для Windows: X.X.X.X 80

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

Оцените статью