Почему '~ $ nc -z T43 1-1024' не производит никакого вывода, хотя '~ $ ping T43' успешен?

Почему '~ $ 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'.

0
задан 7 September 2013 в 00:12

1 ответ

Я проверил исходный код , сначала оригинальный ( 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

  • Флаг Silence -z для совместимости с netcat-classic (Closes: # 464564)

Отчет об ошибке Debian для # 464564 содержит следующее:

Флаг -z выдает «Подключено ... успешно». сообщение, даже если -v не выбран. Это значительное отклонение от оригинала, и оно объединяет функции флагов -z и -v. Патч прилагается.

Так что я думаю, что это ошибка на странице руководства: раздел сканирования портов не соответствует измененной функциональности.

0
ответ дан 7 September 2013 в 00:12

Другие вопросы по тегам:

Похожие вопросы: