O Netcat falha ao iniciar no modo de escuta

13

Estou usando o sistema CentOS 6.7 (Final) e, quando tento executar ncno modo de escuta, ele imprime o seguinte:

# nc -l 1234
nc: Protocol not available

A porta não está vinculada. Eu tentei outros números de porta também. Esse bug parece já ter sido relatado: https://access.redhat.com/solutions/1753753 . Infelizmente, não é muito detalhado.

Informações do pacote:

Name        : nc
Arch        : x86_64
Version     : 1.84
Release     : 24.el6

Preciso experimentar mais alguma coisa?

Ilya I
fonte
Qual versão do nc você está usando?
Jenny D
@JennyD Atualizei o post, por favor verifique
Ilya I
1
Infelizmente, a única correção é um downgrade, conforme descrito abaixo. Eu também estou votando para mover esta questão para Unix e Linux , uma vez que não é estritamente sobre administração de sistemas. É um bom site com alguns especialistas que me deixam admirado; portanto, não pense que a votação apertada é porque sua pergunta é ruim ou algo assim.
21715 Jenny D

Respostas:

17

Eu tive o mesmo problema. Você pode resolvê-lo desta maneira:

# Removes the old package
yum erase nc

# Manually downloads the working package from the Official Repository
wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm

# Installs the package
rpm -iUv nc-1.84-22.el6.x86_64.rpm

Observe que o pacote é para x86_64(64 bits). Se você precisar i386(32 bits), o correto é:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
Eddie C.
fonte
Usar rpm com os sinalizadores -i e -U simultaneamente parece estranho (mas funciona). A chamada mais padrão é -ivh ou -Uvh.
dmourati
1
trabalhar como um encanto!
Shawn Guo
Este caminho não funciona mais
BradLaney
@BradLaney por que não?
Eddie C.
@EddieC. O URL estava 404 para mim quando fiz o comentário. Parece estar funcionando agora. Deixa pra lá.
precisa saber é o seguinte
9

Esta versão específica do netcat tem um erro. Até que haja uma solução, a única coisa que você pode fazer é fazer o downgrade para uma versão anterior - sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64deve fazer o truque.

Jenny D
fonte
1
Não yumpossui um argumento que possa fazer o downgrade para uma versão específica de um pacote sem primeiro desinstalar?
kasperd
Ótimo, mas não consegui fazer o downgrade. Yum diz que nenhum pacote está disponível (tanto installcom a versão específica quanto com o downgradecomando). Também tentei pesquisar esse arquivo rpm e ainda não o encontrou.
Ilya I
4

Respondendo à pergunta:

  1. SIM, é necessário fazer o downgrade para que o nc possa ouvir. e quanto aos outros comentários:

a) -p não deve ser usado no modo de escuta. da página de manual da nc:

-l Usado para especificar que o nc deve escutar uma conexão de entrada em vez de iniciar uma conexão com um host remoto. É um erro usar esta opção em conjunto com as opções -p, -s ou -z.

b) o downgrade pode ser feito em uma única etapa, o comando yum downgrade funciona com o URL do pacote:

$ rpm -q nc
nc-1.84-24.el6.x86_64
$ nc -l 12345 #Although the syntax is correct, the command fails
nc: Protocol not available
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ sudo yum downgrade http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm  #shortcut to downgrade
...
Setting up Downgrade Process
nc-1.84-22.el6.x86_64.rpm                                                              |  57 kB     00:00
Examining /var/tmp/yum-root-Iq4yc7/nc-1.84-22.el6.x86_64.rpm: nc-1.84-22.el6.x86_64
Resolving Dependencies
--> Running transaction check
---> Package nc.x86_64 0:1.84-22.el6 will be a downgrade
---> Package nc.x86_64 0:1.84-24.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package          Arch                 Version                     Repository                            Size
==============================================================================================================
Downgrading:
 nc               x86_64               1.84-22.el6                 /nc-1.84-22.el6.x86_64               109 k

Transaction Summary
==============================================================================================================
Downgrade     1 Package(s)

Total size: 109 k
Is this ok [y/N]: y
...
Removed:
  nc.x86_64 0:1.84-24.el6

Installed:
  nc.x86_64 0:1.84-22.el6

Complete!
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ nc -l 12345 # try to listen again
^C
$#nc successully opens a socket on 12345. had to stop it with ctrl+C
RSH
fonte
0
# nc -l -p 1234

Você pode ouvir nessa porta usando explicitamente o -psinalizador:

-p source_port
         Specifies the source port nc should use, subject to privilege restrictions and availability.

O problema era nctratar 1234 como a porta de destino (apesar de ser executada no modo de escuta) e tentar escutar na porta 0 (que produzia essa mensagem estranha). Passar explicitamente -pfunciona ao seu redor.

Anjo
fonte
Eu tentei isso no centos 6 e não funcionou usando a versão nc-1.84-24 A correção foi fazer o downgrade para a versão nc-1.84-22 conforme a resposta aceita.
Criggie
essa versão não permite o uso de -p com -l.
22616 Andrej
-3

instale o nmap:

yum install nmap

experimentar:

ncat -l 1234

Ronald Gutierrez
fonte
Leia a pergunta e as respostas já fornecidas para saber por que sua resposta não é suficiente nesse caso específico.
Sven