Многоцелевой сетевой инструмент TCP/UDP.
Netcrab — это сетевой инструмент командной строки, который может делать множество вещей. Это дань уважения netcat, и он может делать многое из того, что может. Краткий обзор того, что он может сделать:
Для полного использования запустите netcrab --help
.
netcrab HOST:PORT
Это подключение к указанному TCP-серверу. Теперь ваш стандартный ввод будет отправлен на сервер, а стандартный вывод будет распечатан.
В формате IPv6 для имени хоста следует использовать квадратные скобки, например localhost — это [::1]
.
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
Вы можете прослушивать TCP-сервер на одном или нескольких произвольных портах. Использование -l
завершает программу после разрыва первого входящего соединения. Используйте -L
, чтобы «слушать сильнее»: продолжайте слушать после отключения.
Синтаксис ADDR:PORT
поддерживает некоторые специальные варианты:
localhost:5000
:5000
*:5000
TCP-сервер по умолчанию разрешает одновременно быть активным только одному входящему соединению для каждого адреса прослушивания, но флаг -m max_inbound_clients
позволяет подключаться более чем одному.
Как и в клиентском режиме, стандартный ввод отправляется во все подключенные сокеты, а входящие данные из всех сокетов отправляются на стандартный вывод. Это можно изменить, используя аргументы режима ввода и вывода ниже.
Аргумент -z
заставляет сокет немедленно отключиться, не позволяя отправлять какие-либо данные. Полезно просто для проверки подключения.
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP странен тем, что вы на самом деле не «подключаетесь» к нему. Вы привязываетесь к локальному порту, а затем отправляете/получаете датаграммы удаленным узлам/от них. Режим прослушивания и режим соединения для UDP работают одинаково, за исключением того, что в режиме соединения первый узел, которому будет отправлен стандартный ввод, известен в начале, а в режиме прослушивания трафик стандартного ввода не может быть отправлен куда-либо, пока прослушиватель не получит хотя бы одна датаграмма от партнера.
Для -L
поддерживается тот же синтаксис ADDR:PORT
что и для TCP.
Размер датаграммы по умолчанию равен 1 байту, но его можно контролировать с помощью аргумента --ss
.
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab поддерживает одновременное прослушивание нескольких локальных адресов и портов. Он будет принимать соединения, поступающие на любой из них. Это поддерживает TCP и UDP.
netcrab -u --mc HOST:PORT
Netcrab поддерживает объединение сокетов UDP в группы многоадресной рассылки путем добавления аргумента --mc
. Он также дает контроль над TTL для многоадресных пакетов ( --ttl
) и позволяет ли получать многоадресные пакеты в обратном порядке, поскольку программа присоединена к группе ( --mc_no_loop
).
netcrab -u -b HOST:PORT
Netcrab поддерживает отправку широковещательных датаграмм UDP.
netcrab -i MODE
Режим ввода можно контролировать. По умолчанию ввод поступает со стандартного ввода. Он принимает следующие другие режимы:
none
: ввод невозможен. Обрабатываться будет только трафик от удаленных узлов.stdin-nochar
: работает так же, как стандартный ввод, но не использует «символьный режим». Это хуже работает для интерактивного использования.echo
: любой полученный трафик будет возвращен отправителю.rand
: будут сгенерированы случайные данные. Случайные размеры данных можно контролировать с помощью --rsizemin
и --rsizemax
, а тип данных можно контролировать с помощью --rvals
.fixed
: действительно полезно только для тестирования производительности. Одно и то же сообщение фиксированного размера с фиксированными данными будет отправляться бесконечно. Вы можете контролировать размер с помощью --ss
и тип случайных данных в нем с помощью --rvals
pfqoscli
: измерение задержки по маякам качества обслуживания PlayFab.pfqossrv
: действует как сервер-маяк качества обслуживания PlayFab, который клиенты могут использовать для измерения задержки. При использовании одного из режимов стандартного ввода в качестве входных данных вы можете указать --exit-after-input
, чтобы выйти из программы после того, как входной поток достигнет конца файла.
netcrab -o MODE
По умолчанию вывод осуществляется на стандартный вывод, но часто бывает полезно изменить его на -o none
чтобы пропустить весь вывод. Это особенно полезно при передаче большого объема трафика, поскольку может замедлить вывод.
Режим Netcrab по умолчанию — использование stdin и stdout, поэтому вы можете перенаправить ввод из файла и отправить вывод в файл (или передать его по конвейеру между программами).
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
Вы можете ограничиться использованием только семейств адресов IPv6 или IPv4. Это имеет большее значение при подключении к именам хостов, которые проходят разрешение DNS, или при прослушивании без указания явного адреса источника.
netcrab -s ADDR:PORT
При создании исходящего TCP-соединения или отправке датаграмм UDP Netcrab по умолчанию привязывается к адресам IPv4 и IPv6 с подстановочными знаками (0.0.0.0:0 и [::]:0). Вместо этого вы можете передать -s
для явной привязки к адресу. Это поддерживает все варианты ADDR:PORT
, описанные в разделе «TCP-сервер».
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab позволяет одновременно подключаться к нескольким удаленным узлам. Подобно прослушиванию нескольких одновременных подключений, трафик с локального компьютера будет отправляться всем подключенным узлам, входящим или исходящим.
netcrab -L ADDR:PORT HOST:PORT
Netcrab поддерживает как прослушивание входящих соединений, так и одновременное создание исходящих соединений. Это может быть полезно для проксирования трафика с одного локального адреса на другой, поскольку вы можете независимо указать как адрес для прослушивания, так и адрес источника, который будет использоваться для исходящего соединения.
netcrab HOST:PORTxNUM
Иногда полезно иметь возможность подключаться к одной и той же конечной точке несколько раз, особенно для сценариев с каналами. Например, чтобы подключиться к имени хоста 12 раз, вы можете выполнить netcrab localhost:5000x12
. Он попытается выполнить 12 одновременных исходящих подключений к одному и тому же имени хоста и порту.
Это также можно комбинировать с несколькими целями. Здесь мы подключаемся к localhost по IPv4 пять раз, а по IPv6 тринадцать раз. netcrab 127.0.0.1:5000x5 [::1]:5000x13
.
netcrab -r
netcrab -R
В режиме исходящего соединения вы можете попросить Netcrab восстановить разорванное соединение. -r
восстанавливает соединение при корректном закрытии соединения. -R
восстанавливается в случае некорректной ошибки. Оба могут быть указаны одновременно: -r -R
или -rR
.
netcrab --fm channels
netcrab --fm linger-channels
Теперь мы переходим к действительно полезным частям. Netcrab может превращаться в маршрутизатор, перенаправляя трафик между несколькими конечными точками. В режиме «Каналы» конечные точки объединяются в пары и пересылают трафик в двух направлениях от одной конечной точки к другой, действуя как прозрачный прокси. Трафик не пересылается между каналами. Представьте себе следующую диаграмму:
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
Первый и второй каналы проходят насквозь, но не пересекают ручьи. Если хост 1 или хост 3 отключает конечную точку, отключение также «пересылается» на другой конец канала. Если такое поведение вас не устраивает, вы можете переключиться в режим «Длительные каналы».
В режиме каналов максимальное количество клиентов автоматически увеличивается до 10 на каждый адрес прослушивания, исходя из предположения, что пользователю, вероятно, потребуется более одного соединения одновременно, чтобы фактически использовать каналы. Это можно переопределить с помощью -m
.
netcrab --fm hub
Режим концентратора аналогичен режиму каналов, но проще: весь трафик из всех сетевых источников перенаправляется обратно во все остальные сокеты. Вы можете использовать его, чтобы создать чат или что-то в этом роде.
Как и в режиме каналов, в режиме концентратора максимальное количество клиентов автоматически увеличивается до 10 на каждый адрес прослушивания, но его можно переопределить с помощью -m
.
netcrab -e COMMAND
Netcrab может выполнить другую программу и подключить ее стандартный ввод и вывод к сети. Его можно легко использовать для раскрытия удаленной оболочки или чего-то еще, хотя, конечно, с этим нужно быть осторожным. В этом режиме обычный ввод и вывод будут отключены.
Командная строка выполняется через текущую оболочку.
Практически все описанные выше возможности можно комбинировать и использовать одновременно. Например, вы можете прослушивать несколько адресов и подключаться к нескольким целям в одном сеансе, используя концентратор для пересылки между всеми соединениями.