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-traditional
e netcat-openbsd
está disponível para instalação via gerenciador de pacotes apt
no Ubuntu. No meu caso, eu também construo a partir do código-fonte para instalar GNU netcat
o 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 L
if yor package manager is not apt
):
$ dpkg -L netcat-openbsd | grep /bin /bin /bin/nc.openbsd
Em seguida, use type -a
para confirmar se o nome binário nc.openbsd
pode ser pesquisado $PATH
e 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.openbsd
para executar netcat-openbsd
a ferramenta e também um comando nc.traditional
para executar netcat-traditional
a 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-openbsd
e netcat-traditional
via apt
se quiser:
sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional
Que tal comandos nc
e netcat
? Eles podem estar vinculados a vários sabores pesquisáveis por $PATH
, um dos caminhos será executado se você digitar nc
ou netcat
. Novamente, você pode usar type -a
para 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 realpath
para 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 nc
OR netcat
, ele será executado, /usr/local/bin/netcat
o que é "GNU Netcat".
Você pode tentar update-alternatives
ajustar 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/nc
e /bin/netcat
resolveu o link simbólico¹ para /bin/nc.traditional
, mas ainda assim não mudou o sabor se eu digitar nc
OR, netcat
pois /usr/local/bin/
ainda tem maior precedência /bin
no 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/nc
e /etc/alternatives/netcat
, que /bin/nc
já /bin/netcat
era link simbólico para /etc/alternatives/nc
e /etc/alternatives/netcat
respectivamente.
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 -h
parece ser potencialmente um teste universal.