Hay dos sabores de netcat
:netcat-openbsdynetcat-tradicional.
¿Cómo saber qué sabor de netcat estoy usando? Lo he probado man nc
pero no dice de qué sabor es.
Respuesta1
En primer lugar, puede instalar varias versiones en su máquina. Entonces, la respuesta depende de cuántas versiones haya instalado y qué comando escriba.
netcat-traditional
y netcat-openbsd
está disponible para instalarse a través del administrador de paquetes apt
en Ubuntu. En mi caso, también construyo desde la fuente para instalar GNU netcat
el sabor a través deeste sitio web oficial.
Para el tipo "openbsd", puede averiguar el nombre binario de la ubicación con dpkg -L
<package-name> (busque en Google para encontrar el equivalente dpkg L
si su administrador de paquetes no lo es apt
):
$ dpkg -L netcat-openbsd | grep/bin /papelera /papelera/nc.openbsd
Luego use type -a
para confirmar que el nombre binario nc.openbsd
se puede buscar $PATH
e interpretar como comando:
$ type -a nc.openbsd
nc.openbsd is /bin/nc.openbsd
nc.openbsd is /bin/nc.openbsd
Para el sabor "tradicional" es lo mismo:
$ 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
Eso significa que puedo emitir un comando nc.openbsd
para ejecutar netcat-openbsd
la herramienta y también un comando nc.traditional
para ejecutar netcat-traditional
la herramienta. (Puede haber confusión cuando el comando contiene '.' pero el nombre del paquete contiene '-')
Parece que hay 3 versiones para instalar a través de 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
Pero en realidad netcat
es sólo un paquete ficticio:
$ 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.
Así que sólo puedes instalar netcat-openbsd
y netcat-traditional
vía apt
si quieres:
sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional
¿Qué tal los comandos nc
y netcat
? Se pueden vincular a múltiples tipos de búsqueda mediante $PATH
, una de las rutas se ejecutará si escribe nc
o netcat
. Nuevamente, puede usar type -a
para verificar, mientras que la prioridad es la primera línea (comoatrevidoabajo):
$ tipo -a nc nc es /usr/local/bin/nc nc es /bin/nc nc es /usr/local/bin/nc nc es /bin/nc $ tipo -a netcat netcat es /usr/local/bin/netcat netcat es /bin/netcat netcat es /usr/local/bin/netcat netcat es /bin/netcat
Puede utilizar realpath
para descubrir la ruta resuelta de ellos:
$ ruta real /usr/local/bin/netcat /usr/local/bin/netcat $ ruta real /bin/netcat /bin/nc.openbsd $ ruta real /usr/local/bin/nc /usr/local/bin/netcat $ ruta real /bin/nc /bin/nc.openbsd
4 de ellos, solo 2 rutas son únicas en mi sistema, una es "GNU" y la otra es "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)
Eso significa que si escribo nc
OR netcat
, se ejecutará /usr/local/bin/netcat
"GNU Netcat".
Puede intentar update-alternatives
ajustar la ruta del enlace simbólico resuelto:
$ 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
Cambió ambos /bin/nc
y /bin/netcat
resolvió el enlace simbólico¹ a /bin/nc.traditional
, pero aún así no cambia el tipo si escribo nc
OR netcat
ya que /usr/local/bin/
todavía tiene mayor prioridad /bin
en mi $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
Tenga en cuenta que hay más sabores de netcat, por ejemploncat,socat,sbd,netcat6,pnetcat, ycriptogato.
¹ El enlace simbólico real actualizado fue /etc/alternatives/nc
y /etc/alternatives/netcat
, que /bin/nc
y /bin/netcat
ya eran enlaces simbólicos a /etc/alternatives/nc
y /etc/alternatives/netcat
respectivamente.
Respuesta2
Cuando corro nc --version
, obtengo:
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]>.
Quizás la versión BSD también lo diga específicamente.
Respuesta3
En una Mac (aunque se presenta como la versión GNU):
$ nc -h
GNU netcat 0.7.1, a rewrite of the famous networking tool.
[ further output snipped ]
En una máquina Linux (específicamente Ubuntu):
$ nc -h
[v1.10-41]
[ further output snipped ]
netcat --version
, sugerido en otra respuesta, arrojó un error de "opción no válida" --version
, por lo que -h
parece ser potencialmente una prueba universal.