¿Cómo saber qué sabor de netcat estoy usando?

¿Cómo saber qué sabor de netcat estoy usando?

Hay dos sabores de netcat:netcat-openbsdynetcat-tradicional.

¿Cómo saber qué sabor de netcat estoy usando? Lo he probado man ncpero 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-traditionaly netcat-openbsdestá disponible para instalarse a través del administrador de paquetes apten Ubuntu. En mi caso, también construyo desde la fuente para instalar GNU netcatel 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 Lsi su administrador de paquetes no lo es apt):

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

Luego use type -apara confirmar que el nombre binario nc.openbsdse puede buscar $PATHe 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.openbsdpara ejecutar netcat-openbsdla herramienta y también un comando nc.traditionalpara ejecutar netcat-traditionalla 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 netcates 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-openbsdy netcat-traditionalvía aptsi quieres:

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

¿Qué tal los comandos ncy netcat? Se pueden vincular a múltiples tipos de búsqueda mediante $PATH, una de las rutas se ejecutará si escribe nco netcat. Nuevamente, puede usar type -apara 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 realpathpara 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 ncOR netcat, se ejecutará /usr/local/bin/netcat"GNU Netcat".

Puede intentar update-alternativesajustar 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/ncy /bin/netcatresolvió el enlace simbólico¹ a /bin/nc.traditional, pero aún así no cambia el tipo si escribo ncOR netcatya que /usr/local/bin/todavía tiene mayor prioridad /binen 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/ncy /etc/alternatives/netcat, que /bin/ncy /bin/netcatya eran enlaces simbólicos a /etc/alternatives/ncy /etc/alternatives/netcatrespectivamente.

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 -hparece ser potencialmente una prueba universal.

información relacionada