В этой статье мы расскажем, как установить инструмент netcat на linux и использовать его для сетей TCP / IP.
Netcat – очень полезная утилита, когда речь заходит о сокетах TCP / UDP.
Эта статья будет охватывать только очень небольшое количество команд netcat, поэтому, если у вас есть интересные вещи, касающиеся использования netcat, не стесняйтесь делиться ими в комментариях.
- Как установить netcat
- Как установить netcat из исходного кода
- Как использовать netcat
- 1. Проверьте, открыт ли конкретный порт TCP удаленного хоста
- 2. Выполните проверку TCP-порта на удаленном хосте
- 3. Выполните проверку порта UDP на удаленном хосте
- 4. Отправьте тестовый пакет UDP на удаленный хост
- 5. Скопируйте файл (например, test.txt) с одного хоста на другой
- 7. Создайте сжатую резервную копию жесткого диска (например, / dev / sdc) на удаленном хосте
- 8. Восстановите жесткий диск (например, / dev / sdc) из образа сжатого диска, сохраненного на удаленном хосте
- 9. Запустите незащищенный онлайн-чат между двумя хостами
- 10. Запустите веб-сервер со статической веб-страницей.
- 11. Прослушивание TCP-порта с использованием адреса IPv6
- 12. Поток видеофайла с сервера для клиента для просмотра потокового видео с помощью видеоплеера (например, mplayer)
Как установить netcat
Мы собираемся установить netcat на Ubuntu 18.04, используя apt install или компилируя его из исходного кода.
Установка с использованием apt довольно проста, вам просто нужно ввести следующую команду в терминал:
sudo apt install netcat
Как установить netcat из исходного кода
Компиляция netcat из исходного кода не так проста, как установка через apt install, но если вы выполните следующие шаги, вы можете легко установить ее.
Загрузите исходный код с сайта netcat с помощью следующей команды:
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
Извлеките недавно загруженный архив.
Для этого вы можете запустить:
tar -xzvf netcat-0.7.1.tar.gz
перейдите в каталог, содержащий исходный код пакета, и введите ./configure, чтобы настроить пакет для вашей системы.
cd netcat-0.7.1 ./configure
Если вы получаете сообщение об ошибке, подобное этому, – «no acceptable C compiler found in $PATH”» при запуске ./configure, убедитесь, что вы установили gcc-компилятор.
Чтобы установить его, введите следующую команду:
apt-get install build-essential
Запуск configure занимает некоторое время.
После успешного завершения настройки выполните:
sudo make sudo make install
Вы можете удалить двоичные файлы программы и объектные файлы из каталога исходного кода, набрав make clean.
Чтобы удалить файлы, которые были созданы, выполните команду make distclean.
Как использовать netcat
Прежде чем приступать к изучению некоторых команд netcat, важно знать, что если вы привязываетесь к известным портам (0-1023) с nc, вам нужна привилегия root.
В противном случае вы можете запустить nc как обычный пользователь.
1. Проверьте, открыт ли конкретный порт TCP удаленного хоста
nc -vn 192.168.40.146 2424
Вывод, если порт 2424 на удаленном сервере закрыт
nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused
Вывод, если порт на удаленном сервере открыт (например, 22 порт)
Connection to 192.168.40.146 22 port [tcp/*] succeeded! SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
2. Выполните проверку TCP-порта на удаленном хосте
Приведенная ниже команда проверяет порты от 20 до 25 на удаленном хосте и выводит результат.
nc -vnz -w 1 192.168.40.146 20-25
Результат будет выглядеть следующим образом:
nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused Connection to 192.168.40.146 22 port [tcp/*] succeeded! nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused
3. Выполните проверку порта UDP на удаленном хосте
nc -vnzu 192.168.40.146 1-65535
На выводе будут отображаться только порты, которые разрешают соединения udp.
Connection to 192.168.40.146 2424 port [udp/*] succeeded! Connection to 192.168.40.146 12354 port [udp/*] succeeded!
4. Отправьте тестовый пакет UDP на удаленный хост
echo -n "udp test" | nc -u -w1 192.168.40.146 2424
Приведенная выше команда отправит тестовый пакет UDP с 1 секундой таймаута на удаленный хост на порту 2424
5. Скопируйте файл (например, test.txt) с одного хоста на другой
На принимающем хосте (192.168.40.146 в моем случае) выполните:
nc -lp 2424> test.txt
На хосте отправителя (192.168.40.144) выполните следующую команду:
nc 192.168.40.146 2424 <test.txt
Это скопирует файл test.txt с хоста отправителя на хост-получатель через порт 2424. убедитесь, что входящие соединения подключены к порту 2424 на хост-ресивере.
На хосте:
nc -l 2424 | tar xvf -
На хосте отправителя выполните следующую команду:
tar cvf - /path/to/dir | nc 192.168.40.146 2424
7. Создайте сжатую резервную копию жесткого диска (например, / dev / sdc) на удаленном хосте
При запуске удаленного хоста:
nc -lp 2424 | sudo dd of=/path/to/image.img.gz
На локальном хосте выполните следующую команду:
dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424
8. Восстановите жесткий диск (например, / dev / sdc) из образа сжатого диска, сохраненного на удаленном хосте
На локальном хосте:
nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc
На удаленном хосте выполните следующую команду:
cat /path/to/image.img.gz | nc 192.168.40.144 2424
9. Запустите незащищенный онлайн-чат между двумя хостами
На одном хосте (например, 192.168.40.144) выполните следующую команду:
nc -lp 2424
На другом хосте (например, 192.168.40.146) выполните следующую команду:
nc 192.168.40.144 2424
После запуска этих команд на обеих машинах будут отображаться все, что набирается на обоих терминалах.
10. Запустите веб-сервер со статической веб-страницей.
Выполните команду ниже на локальном хосте (например, 192.168.40.144), чтобы запустить веб-сервер, обслуживающий test.html на порту 80.
Обратите внимание, что вы должны запускать с правами sudo, поскольку 80 находится в диапазоне известных портов (1-1023)
while true; do sudo nc -lp 80 < test.html; done
Теперь откройте http://192.168.40.144/test.html с другого хоста, чтобы получить доступ к нему.
11. Прослушивание TCP-порта с использованием адреса IPv6
Вы можете использовать следующую команду, чтобы разрешить nc использовать адрес IPv6 при прослушивании на TCP-порту.
nc -6 -l 2424
Проверьте, работает ли она с приведенной ниже командой
sudo netstat -nap | grep 2424
Результат будет выглядеть следующим образом:
tcp6 0 0 :::2424 :::* LISTEN 15665/nc
12. Поток видеофайла с сервера для клиента для просмотра потокового видео с помощью видеоплеера (например, mplayer)
На видеосервере (192.168.40.144):
cat sample_video.avi | nc -l 2424
На клиентском хосте (192.168.40.146):
nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 -