Поиск по сайту:
Начать войну легко, а закончить трудно (Эразм Роттердамский).

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

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

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

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

 

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

nc [options] host port

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

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

nc -u host port

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

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

nc -z -v 10.9.9.9 20-80

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

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

nc: connect to 10.9.9.9 port 20 (tcp) failed: Connection refused
nc: connect to 10.9.9.9 port 21 (tcp) failed: Connection refused
Connection to 10.9.9.9 22 port [tcp/ssh] succeeded!
nc: connect to 10.9.9.9 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.9.9.9 port 79 (tcp) failed: Connection refused
Connection to 10.9.9.9 80 port [tcp/http] succeeded!

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

nc -z -v 10.9.9.9 20-80 2>&1 | grep succeeded
Connection to 10.9.9.9 22 port [tcp/ssh] succeeded!
Connection to 10.9.9.9 80 port [tcp/http] succeeded!

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

echo "EXIT" | nc 10.9.9.9 22

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

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

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

nc -z -v -u 10.9.9.9 20-80

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

 

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

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

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

nc -l 5555 > file_name

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

nc receiving.andreyex.ru 5555 < file_name

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

nc -l 5555 | tar xzvf -

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

tar czvf - /path/to/dir | nc receiving.andreyex.ru 5555

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

 

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

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

nc -l 5555

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

nc first.andreyex.ru 5555

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

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

 

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

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

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

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

 

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

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

Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Yuri

Спасибо. Очень интересные примеры

Читайте также

Спасибо!

Теперь редакторы в курсе.