Почему '~ $ nc -z T43 1-1024' не производит никакого вывода, хотя '~ $ ping T43' успешен?
печатает '~ $ nc -z -v T43 1-1024' «Соединение с T43 22 портом [tcp / ssh] успешно завершено!» и 'nc: подключение к порту T43 порта 1000 (tcp) не удалось: соединение отказано.'
'man nc': "СКАНИРОВАНИЕ ПОРТА: может быть полезно узнать, какие порты открыты и работают службы на целевой машине . Флаг -z может использоваться для указания nc сообщать об открытых портах, а не инициировать соединение. Например: '$ nc -z host.example.com 20-30'.
Я проверил исходный код , сначала оригинальный ( netcat-openbsd_1.89.orig.tar.gz ). Соответствующие строки в netcat.c
(367-388) (отредактировано):
if (vflag || zflag) {
/* ... */
/* Don't look up port if -n. */
if (nflag)
sv = NULL;
else {
sv = getservbyport(
ntohs(atoi(portlist[i])),
uflag ? "udp" : "tcp");
}
printf("Connection to %s %s port [%s/%s] succeeded!\n",
host, portlist[i], uflag ? "udp" : "tcp",
sv ? sv->s_name : "*");
}
Но пакет diff ( netcat-openbsd_1.89-4ubuntu1.diff.gz ) содержит патч, удаляющий подробные функции отображения:
--- netcat-openbsd-1.89.orig/debian/patches/silence-z.patch
+++ netcat-openbsd-1.89/debian/patches/silence-z.patch
@@ -0,0 +1,13 @@
+Index: netcat-openbsd-1.89/netcat.c
+===================================================================
+--- netcat-openbsd-1.89.orig/netcat.c 2008-06-19 16:33:52.000000000 -0400
++++ netcat-openbsd-1.89/netcat.c 2008-06-19 16:34:58.000000000 -0400
+@@ -364,7 +364,7 @@
+ continue;
+
+ ret = 0;
+- if (vflag || zflag) {
++ if (vflag) {
+ /* For UDP, make sure we are connected. */
+ if (uflag) {
+ if (udptest(s) == -1) {
Таким образом, кажется, что без флага v
, ветвь флага z
никогда не «запускается» и не отображает сообщение , (Хотя я не опытный программист на C, поэтому, пожалуйста, отнеситесь к этому с некоторым скептицизмом.)
Также список изменений ссылается на это:
netcat-openbsd (1.89-3) нестабильный; urgency = low
blockquote>
- Флаг Silence -z для совместимости с netcat-classic (Closes: # 464564)
Отчет об ошибке Debian для # 464564 содержит следующее:
Флаг -z выдает «Подключено ... успешно». сообщение, даже если -v не выбран. Это значительное отклонение от оригинала, и оно объединяет функции флагов -z и -v. Патч прилагается.
blockquote>Так что я думаю, что это ошибка на странице руководства: раздел сканирования портов не соответствует измененной функциональности.