Como saber qual sabor de netcat estou usando?

Como saber qual sabor de netcat estou usando?

Existem dois sabores de netcat:netcat-openbsdenetcat-tradicional.

Como saber qual sabor de netcat estou usando? Eu tentei man nc, mas não diz qual é o sabor.

Responder1

Primeiro de tudo, você pode instalar vários sabores em sua máquina. Portanto, a resposta depende de quantos sabores você instalou e de qual comando você digita.

netcat-traditionale netcat-openbsdestá disponível para instalação via gerenciador de pacotes aptno Ubuntu. No meu caso, eu também construo a partir do código-fonte para instalar GNU netcato sabor viaeste site oficial.

Para o sabor "openbsd", você pode descobrir o nome binário do local com dpkg -L<package-name> (pesquisando no Google para encontrar o equivalente a dpkg Lif yor package manager is not apt):

$ dpkg -L netcat-openbsd | grep /bin
/bin
/bin/nc.openbsd

Em seguida, use type -apara confirmar se o nome binário nc.openbsdpode ser pesquisado $PATHe interpretado como comando:

$ type -a nc.openbsd
nc.openbsd is /bin/nc.openbsd
nc.openbsd is /bin/nc.openbsd

Para o sabor "tradicional" é o mesmo:

$ dpkg -L netcat-traditional | grep /bin
/bin
/bin/nc.traditional
$ type -a nc.traditional
nc.traditional is /bin/nc.traditional
nc.traditional is /bin/nc.traditional

Isso significa que posso emitir um comando nc.openbsdpara executar netcat-openbsda ferramenta e também um comando nc.traditionalpara executar netcat-traditionala ferramenta. (Pode haver confusão onde o comando contém '.' mas o nome do pacote contém '-' )

Parece que existem 3 sabores para instalar via apt:

$ apt-cache search netcat --names-only
netcat-openbsd - TCP/IP swiss army knife
netcat - TCP/IP swiss army knife -- transitional package
netcat-traditional - TCP/IP swiss army knife

Mas na verdade netcaté apenas um pacote fictício:

$ apt-cache show netcat | grep Description-en  -A 2
Description-en: TCP/IP swiss army knife -- transitional package
 This is a "dummy" package that depends on lenny's default version of
 netcat, to ease upgrades. It may be safely removed.

Então você só pode instalar netcat-openbsde netcat-traditionalvia aptse quiser:

sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional

Que tal comandos nce netcat? Eles podem estar vinculados a vários sabores pesquisáveis ​​por $PATH, um dos caminhos será executado se você digitar ncou netcat. Novamente, você pode usar type -apara verificar, enquanto a prioridade é a primeira linha (comoaudaciosoabaixo):

$ tipo -a nc 
nc é /usr/local/bin/nc
nc é /bin/nc
nc é /usr/local/bin/nc
nc é /bin/nc
$ digite -a netcat
netcat é /usr/local/bin/netcat
netcat é /bin/netcat
netcat é /usr/local/bin/netcat
netcat é /bin/netcat

Você pode usar realpathpara descobrir o caminho resolvido deles:

$ caminho real /usr/local/bin/netcat 
/usr/local/bin/netcat
$ caminho real /bin/netcat
/bin/nc.openbsd
$ caminho real /usr/local/bin/nc
/usr/local/bin/netcat
$ caminho real /bin/nc
/bin/nc.openbsd

4 deles, apenas 2 caminhos são únicos no meu sistema, um é "GNU" e o outro é "openbsd":

$ /usr/local/bin/netcat --version | head -1
netcat (The GNU Netcat) 0.7.1
$ /bin/nc.openbsd -h |& head -1
OpenBSD netcat (Debian patchlevel 1.130-3)

Isso significa que se eu digitar ncOR netcat, ele será executado, /usr/local/bin/netcato que é "GNU Netcat".

Você pode tentar update-alternativesajustar o caminho do link simbólico resolvido:

$ realpath /bin/nc
/bin/nc.openbsd
$ realpath /bin/netcat
/bin/nc.openbsd
$ sudo update-alternatives --config nc
There are 2 choices for the alternative nc (providing /bin/nc).

  Selection    Path                 Priority   Status
------------------------------------------------------------
  0            /bin/nc.openbsd       50        auto mode
* 1            /bin/nc.openbsd       50        manual mode
  2            /bin/nc.traditional   10        manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /bin/nc.traditional to provide /bin/nc (nc) in manual mode
$ realpath /bin/nc
/bin/nc.traditional
$ realpath /bin/netcat
/bin/nc.traditional

Ele mudou ambos /bin/nce /bin/netcatresolveu o link simbólico¹ para /bin/nc.traditional, mas ainda assim não mudou o sabor se eu digitar ncOR, netcatpois /usr/local/bin/ainda tem maior precedência /binno meu $PATH:

$ /bin/nc -h |& head -1
[v1.10-41]
$ nc -h |& head -1
GNU netcat 0.7.1, a rewrite of the famous networking tool.
$ type -a nc | head -1
nc is /usr/local/bin/nc

Observe que existem mais sabores de netcat, por exemplonão,socat,cara,netcat6,pnetcat, egato criptografado.

¹ O link simbólico real atualizado foi /etc/alternatives/nce /etc/alternatives/netcat, que /bin/nc/bin/netcatera link simbólico para /etc/alternatives/nce /etc/alternatives/netcatrespectivamente.

Responder2

Quando corro nc --version, recebo:

netcat (The GNU Netcat) 0.7.1
Copyright (C) 2002 - 2003  Giovanni Giacobbi

This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program under the terms of
the GNU General Public License.
For more information about these matters, see the file named COPYING.

Original idea and design by Avian Research <[email protected]>,
Written by Giovanni Giacobbi <[email protected]>.

Talvez a versão BSD também diga especificamente.

Responder3

Em um Mac (embora se apresente como a versão GNU):

$ nc -h
GNU netcat 0.7.1, a rewrite of the famous networking tool.
[ further output snipped ]

Em uma caixa Linux (especificamente Ubuntu):

$ nc -h
[v1.10-41]
[ further output snipped ]

netcat --version, sugerido em outra resposta, gerou um erro de 'opção inválida' --version, portanto -hparece ser potencialmente um teste universal.

informação relacionada