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

Основные команды 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 есть маленькая незаметная утилита 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 также содержится и ряд других полезных советов и интересных примеров использования данной программы.

nc [-46bCDdhklnrStUuvZz] [-I length ] [-i interval ] [-O length ] [-P proxy_username ] [-p source_port ] [-q seconds ] [-s source ] [-T toskeyword ] [-V rtable ] [-w timeout ] [-X proxy_protocol ] [-x proxy_address [:port ]] [destination ] [port ]

Options

-4 Forces nc to use IPv4 addresses only.
-6 Forces nc to use IPv6 addresses only.
-b Allow broadcast.
-C Send as line-ending.
-D Enable debugging on the socket.
-d Do not attempt to read from stdin .
-h Prints out nc help.
-I length Specifies the size of the TCP receive buffer .
-i interval Specifies a delay time interval between lines of text sent and received. Also, causes a delay time between connections to multiple ports.
-k Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option.
-l Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote host . It is an error to use this option in conjunction with the -p , -s , or -z options. Additionally, any timeouts specified with the -w option are ignored.
-n Do not do any DNS or service lookups on any specified addresses, hostnames or ports .
-O length Specifies the size of the TCP send buffer.
-P proxy_username Specifies a username to present to a proxy server that requires authentication . If no username is specified then authentication will not be attempted. Proxy authentication is only supported for HTTP CONNECT proxies at present.
-p source_port Specifies the source port nc should use, subject to privilege restrictions and availability.
-q seconds after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.
-r Specifies that source or destination ports should be chosen randomly instead of sequentially within a range or in the order that the system assigns them.
-S Enables the RFC 2385 TCP MD5 signature option.
-s source Specifies the of the interface that is used to send the packets . For UNIX-domain datagram sockets, specifies the local temporary socket file to create and use so that datagrams can be received. It is an error to use this option in conjunction with the -l option.
-T toskeyword Change IPv4 TOS value. toskeyword may be one of critical , inetcontrol , lowcost , lowdelay , netcontrol , throughput , reliability , or one of the DiffServ Code Points: ef , af11 ... af43 , cs0 ... cs7 ; or a number in either hex or decimal .
-t Causes nc to send RFC 854 DON"T and WON"T responses to RFC 854 DO and WILL requests. This makes it possible to use nc to script telnet sessions.
-U Specifies to use UNIX-domain sockets.
-u Use UDP instead of the default option of TCP. For UNIX-domain sockets, use a datagram socket instead of a stream socket. If a UNIX-domain socket is used, a temporary receiving socket is created in /tmp unless the -s flag is given.
-V rtable Set the routing table to be used. The default is 0.
-v Have nc give more verbose output.
-w timeout Connections which cannot be established or are idle timeout after timeout seconds. The -w flag has no effect on the -l option, i.e. nc will listen forever for a connection, with or without the -w flag. The default is no timeout.
-X proxy_protocol Requests that nc should use the specified protocol when talking to the proxy server. Supported protocols are "4 " (SOCKS v.4), "5 " (SOCKS v.5) and "connect " (HTTPS proxy). If the protocol is not specified, SOCKS version 5 is used.
-x proxy_address[:port] Requests that nc should connect to destination using a proxy at proxy_address and port . If port is not specified, the well-known port for the proxy protocol is used (1080 for SOCKS, 3128 for HTTPS).
-Z DCCP mode.
-z Specifies that nc should only scan for listening daemons, without sending any data to them. It is an error to use this option in conjunction with the -l option.

destination can be a numerical IP address or a symbolic hostname (unless the -n option is given). In general, a destination must be specified, unless the -l option is given (in which case the local host is used). For UNIX-domain sockets, a destination is required and is the socket path to connect to (or listen on if the -l option is given).

port can be a single integer or a range of ports. Ranges are in the form nn-mm . In general, a destination port must be specified, unless the -U option is given.

Client/Server model

It is quite simple to build a very basic client/server model using nc . On one console, start nc listening on a specific port for a connection. For example:

Nc -l 1234

nc is now listening on port 1234 for a connection. On a second console (or a second machine), connect to the machine and port being listened on:

Nc 127.0.0.1 1234

There should now be a connection between the ports. Anything typed at the second console will be concatenated to the first, and vice-versa. After the connection was set up, nc does not really care which side is being used as a ‘server’ and which side is being used as a ‘client’. The connection may be terminated using an EOF (‘^D ’).

There is no -c or -e option in modern netcat, but you still can execute a command after connection being established by redirecting file descriptors. Be cautious here because opening a port and let anyone connected execute arbitrary command on your site is DANGEROUS. If you really need to do this, here is an example:

On ‘server’ side:

Rm -f /tmp/f; mkfifo /tmp/f cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

On ‘client’ side:

Nc host.example.com 1234

(shell prompt from host.example.com)

Start by using nc to listen on a specific port, with output captured into a file:

Nc -l 1234 > filename.out

Using a second machine, connect to the listening nc process, feeding it the file that is to be transferred:

Nc host.example.com 1234 < filename.in

After the file is transferred, the connection will close automatically.

Talking to servers

It is sometimes useful to talk to servers "by hand" rather than through a user interface. It can aid in troubleshooting, when it might be necessary to verify what data a server is sending in response to commands issued by the client. For example, to retrieve the homepage of a website:

Printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Note that this also displays the headers sent by the web server. They can be filtered, using a tool such as sed , if necessary.

More complicated examples can be built up when the user knows the format of requests required by the server. As another example, an e-mail may be submitted to an SMTP server using:

Nc [-C] localhost 25 << EOF HELO host.example.com MAIL FROM:< > RCPT TO:< > DATA Body of e-mail. . QUIT EOF

Port scanning

It may be useful to know which ports are open and running services on a target machine. The -z flag can be used to tell nc to report open ports, rather than initiate a connection. Usually, it"s useful to turn on verbose output to stderr by use this option in conjunction with -v option.

Nc -zv host.example.com 20-30 Connection to host.example.com 22 port succeeded! Connection to host.example.com 25 port succeeded!

The port range was specified to limit the search to ports 20 - 30 , and is scanned by increasing order.

You can also specify a list of ports to scan, for example:

Nc -zv host.example.com 80 20 22 nc: connect to host.example.com 80 (tcp) failed: Connection refused nc: connect to host.example.com 20 (tcp) failed: Connection refused Connection to host.example.com port succeeded!

The ports are scanned by the order you given.

Alternatively, it might be useful to know which server software is running, and which versions. This information is often contained in the greeting banners. To retrieve these, it is necessary to first make a connection, and then break the connection when the banner was retrieved. This can be accomplished by specifying a small timeout with the -w flag, or perhaps by issuing a "QUIT" command to the server:

Echo "QUIT" | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Examples

nc -p 31337 -w 5 host.example.com 42

Opens a TCP connection to port 42 of host.example.com , using port 31337 as the source port, with a timeout of 5 seconds.

Nc -u host.example.com 53 nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

The same as the above example, but this time enabling proxy authentication with username "ruser " if the proxy requires it.

Related commands

ifconfig — View or modify the configuration of network interfaces.


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

Утилиту Netcat часто называют эдаким "Швейцарским армейским ножом", в хорошем смысле этого слова. Функционал netcat полезен в той-же степени, в какой полезна многофункциональность и сподручность зарекомендовавшего себя карманного Швейцарского армейского ножа. Некоторые из ее возможностей включают сканирование портов, передачу файлов, прослушивание портов и она может быть использована как бэкдор.

В 2006 году netcat получила 4-ое место в опросе "100 утилит сетевой безопасности", поэтому она - это определенно тот инструмент, который необходимо знать.

Как пользоваться nc?

Если Вы помните, я говорил, что netcat это Швейцарский армейский нож. Чем-бы этот нож был, если бы его нельзя было использовать как обычный нож? Вот почему netcat может использоваться вместо обычного telnet:

$ nc www.google.com 80

В действительности он более удобный чем обычный telnet, потому что Вы можете завершить соединение в любое время, нажав Ctrl+C и он обрабатывает двоичные данные как обычные (никаких escape последовательностей, ничего).

Вы можете добавить параметр “-v” для более подробного вывода результатов действий, и параметр (-vv) для получения статистики о том, сколько байт было передано во время текущего сеанса соединения.

Netcat может быть использован в качестве сервера. Если Вы запустите его, как указано ниже, он будет слушать на порту 12345 (на всех интерфейсах):

$ nc -l -p 12345

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

# На компьютере A с IP 10.10.10.10 $ nc -l -p 12345

И подключитесь к нему с другого:

# На компьютере B $ nc 10.10.10.10 12345

Теперь обе стороны могут переговариваться!

Такой способ разговора, когда обе стороны могут разговаривать друг с другом делает возможным использование nc для операций ввода/вывода через сеть! К примеру, Вы можете послать целую директорию с одного компьютера на другой организовав tar конвейер через nc на первом компьютере, и перенаправив вывод в другой tar процесс на втором.

Предположим, Вы хотите переслать файлы из директории /data компьютера A с IP 192.168.1.10 на компьютер B (с любым IP). Это просто:

# На компьютере A с IP 192.168.1.10 $ tar -cf - /data | nc -l -p 6666 # На компьютере B $ nc 192.168.1.10 6666 | tar -xf -

Не забудьте скомбинировать конвейер с Рipe Viewer , который был описан в предыдущей статье, что-бы посмотреть статистику того, как быстро происходит передача!

Одиночный файл может быть послан проще:

# На компьютере A с IP 192.168.1.10 $ cat file | nc -l -p 6666 # На компьютере B $ nc 192.168.1.10 6666 > file

Вы даже можете скопировать и восстановить целый диск, с помощью nc:

# На компьютере A с IP 192.168.1.10 $ cat /dev/hdb | nc -l -p 6666 # На компьютере B $ nc 192.168.1.10 6666 > /dev/hdb

Заметим: Опция “-l” не может быть использована совместно с “-p” на Mac компьютерах! Решение, - просто заменить “-l -p 6666? на “-l 6666?. Как здесь:

# теперь nc слушает на порту 6666 для Mac компьютеров $ nc -l 6666

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

$ nc -v -n -z -w 1 192.168.1.2 1-1000 (UNKNOWN) 445 (microsoft-ds) open (UNKNOWN) 139 (netbios-ssn) open (UNKNOWN) 111 (sunrpc) open (UNKNOWN) 80 (www) open (UNKNOWN) 25 (smtp) : Connection timed out (UNKNOWN) 22 (ssh) open

Параметр “-n” предотвращает от просмотра DNS, “-z” не ждет ответа от сервера, и “-w 1? задает таймаут для соединения в 1 секунду.

Другое нетривиальное использование netcat в роли прокси. И порт и хост могут быть перенаправлены. Посмотрите на этот пример:

$ nc -l -p 12345 | nc www.google.com 80

Эта команда запускает nc на порту 1234 и перенаправляет все соединения на google.com:80. Если теперь Вы подключитесь к этому компьютеру на порту 12345 и сделаете запрос, Вы обнаружите, что в ответ не получаете никаких данных. Это правильно, потому-что мы не установили двунаправленный канал. Если Вы добавите второй канал, Вы получите Ваши данные на другом порту:

$ nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

После посылки запроса на порт 12345, получите Ваши данные ответа на порту 12346.

Вероятно самая мощная возможность netcat - запустить любой процесс как сервер:

$ nc -l -p 12345 -e /bin/bash

Параметр “-e” пораждает выполнение ввода и вывода перенаправляемого через сетевой сокет. Теперь, если Вы подключитесь к хосту на порту 12345, Вы можете использовать bash:

$ nc localhost 12345 ls -las total 4288 4 drwxr-xr-x 15 pkrumins users 4096 2009-02-17 07:47 . 4 drwxr-xr-x 4 pkrumins users 4096 2009-01-18 21:22 .. 8 -rw------- 1 pkrumins users 8192 2009-02-16 19:30 .bash_history 4 -rw-r--r-- 1 pkrumins users 220 2009-01-18 21:04 .bash_logout ...

Последствия таковы, что nc это популярный инструмент хакера и с его помощью можно очень легко сделать бэкдор. На Linux сервере вы можете запустить /bin/bash а на Windows cmd.exe и иметь в своих руках полный контроль.

Это все, что я хотел сказать. Вам знакомы какие-либо другие полезные приемы работы с netcat, которые здесь не описаны?

Как установить nc?

Если у Вас Debian или система базирующаяся на Debian, такая как Ubuntu, сделайте следующее:

$ sudo aptitude install netcat

Если у Вас Fedora или система базирующаяся на Fedora, такая как CentOS, сделайте:

$ sudo yum install netcat

Если у Вас Slackware, FreeBSD, NetBSD, Solaris или Mac, скачайте исходники nc и сделайте:

$ tar -zxf nc-version.tar.gz $ cd nc-version $ ./configure && sudo make install

Еще способ сделать это на Mac, если у Вас есть MacPorts:

$ sudo port install netcat

На Slackware Вы можете установить ее как пакет из пакетной директории:

$ sudo installpkg nc-1.10-i386-1.tgz

Если у Вас Windows, скачайте порт Windoze с securityfocus.

Руководство по утилите может быть найдено в man nc.

Приятного времяпровождения вместе с nc, до следующего раза!



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png