Por que '~ $ nc -z T43 1-1024' não produz nenhuma saída, embora '~ $ ping T43' seja bem-sucedido?

0

Por que '~ $ nc -z T43 1-1024' não produz nenhuma saída, embora '~ $ ping T43' seja bem-sucedido?

'~ $ nc -z -v T43 1-1024' imprime 'A conexão com a porta T43 22 [tcp / ssh] foi bem-sucedida!' e 'nc: conectar à porta T43 1000 (tcp) falhou: Conexão recusada.'

'man nc': "PORT SCANNING: Pode ser útil saber quais portas estão abertas e executando serviços em uma máquina de destino. O sinalizador -z pode ser usado para informar ao nc para relatar portas abertas, em vez de iniciar uma conexão Por exemplo: '$ nc -z host.example.com 20-30'.

    
por user43816 12.04.2012 / 17:27

1 resposta

3

Eu verifiquei o código-fonte , primeiro o original (netcat-openbsd_1.89.orig.tar.gz ). As linhas relevantes em netcat.c (367-388) (editado):

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 : "*");
}

Mas o pacote diff ( netcat- openbsd_1.89-4ubuntu1.diff.gz ) contém um patch, removendo a funcionalidade de exibição detalhada:

--- 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) {

Portanto, parece que sem o sinalizador v , a ramificação do sinalizador z nunca "executa" e não exibe a mensagem. (Embora eu não seja um programador C especializado, então, por favor, leve isso com um pouco de ceticismo.)

Além disso, o changelog se refere a isso:

% bl0ck_qu0te%

O relatório de erros do Debian para o # 464564 contém o seguinte:

% bl0ck_qu0te%

Então, acho que é um bug na página de manual: a seção de varredura de porta não seguiu a funcionalidade alterada.

    
por lgarzo 12.04.2012 / 17:39