Wie finde ich heraus, welche Netcat-Variante ich verwende?

Wie finde ich heraus, welche Netcat-Variante ich verwende?

Es gibt zwei Geschmacksrichtungen netcat:netcat-openbsdUndNetcat-traditionell.

Wie finde ich heraus, welche Netcat-Variante ich verwende? Ich habe es versucht, man ncaber es steht nicht, welche Variante es ist.

Antwort1

Zunächst einmal können Sie mehrere Varianten auf Ihrem Computer installieren. Die Antwort hängt also davon ab, wie viele Varianten Sie installiert haben und welchen Befehl Sie eingeben.

netcat-traditionalund netcat-openbsdkann über den Paketmanager aptin Ubuntu installiert werden. In meinem Fall baue ich auch aus der Quelle, um GNU netcatdie Variante über zu installierendiese offizielle Website.

Für die Variante „OpenBSD“ können Sie den Speicherort des Binärnamens mit dpkg -L<Paketname> ermitteln (googeln Sie selbst, um das Äquivalent zu finden, dpkg Lwenn Ihr Paketmanager dies nicht tut apt):

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

Bestätigen Sie anschließend type -a, dass der Binärname nc.openbsddurchsuchbar ist $PATHund als Befehl interpretiert wird:

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

Für den „traditionellen“ Geschmack gilt das Gleiche:

$ 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

Das heißt, ich kann einen Befehl nc.openbsdzum Ausführen netcat-openbsddes Tools und auch einen Befehl nc.traditionalzum Ausführen netcat-traditionaldes Tools eingeben. (Es kann zu Verwirrung kommen, wenn der Befehl „.“ enthält, der Paketname jedoch „-“ enthält.)

Es scheint, als gäbe es drei Varianten zur Installation 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

Aber eigentlich netcatist es nur ein Dummy-Paket:

$ 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.

Sie können also nur netcat-openbsdund netcat-traditionalüber installieren apt, wenn Sie möchten:

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

Wie wäre es mit Befehlen ncund netcat? Sie können an mehrere durchsuchbare Varianten gebunden werden $PATH. Einer der Pfade wird ausgeführt, wenn Sie ncoder eingeben netcat. Auch hier können Sie type -azur Überprüfung verwenden, wobei die Priorität die erste Zeile ist (alsdeutlichunten):

$ Typ -a nc 
nc ist /usr/local/bin/nc
nc ist /bin/nc
nc ist /usr/local/bin/nc
nc ist /bin/nc
$ Typ -a Netcat
netcat ist /usr/local/bin/netcat
netcat ist /bin/netcat
netcat ist /usr/local/bin/netcat
netcat ist /bin/netcat

Sie können realpathFolgendes verwenden, um den aufgelösten Pfad herauszufinden:

$ realpath /usr/local/bin/netcat 
/usr/local/bin/netcat
$ realpath /bin/netcat
/bin/nc.openbsd
$ realpath /usr/local/bin/nc
/usr/local/bin/netcat
$ realpath /bin/nc
/bin/nc.openbsd

4 davon, nur 2 Pfade sind in meinem System eindeutig, einer ist „GNU“ und der andere ist „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)

Das heißt, wenn ich nc„OR“ eingebe netcat, wird das Ergebnis /usr/local/bin/netcat„GNU Netcat“ angezeigt.

Sie können versuchen, update-alternativesden aufgelösten Symlink-Pfad anzupassen:

$ 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

Es hat beides geändert /bin/ncund /bin/netcatden symbolischen Link¹ in aufgelöst /bin/nc.traditional, aber es hat immer noch keine Änderung an der Darstellung bewirkt, wenn ich nc„OR“ eingebe netcat, da es in meinem /usr/local/bin/immer noch Vorrang hat :/bin$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

Beachten Sie, dass es weitere Varianten von Netcat gibt, z. B.ncat,socat,sbd,netcat6,Abonnieren, Undkryptokatze.

¹ Die tatsächlich aktualisierten symbolischen Links waren /etc/alternatives/ncund /etc/alternatives/netcat, wobei /bin/ncund bereits jeweils mit und /bin/netcatverknüpft waren ./etc/alternatives/nc/etc/alternatives/netcat

Antwort2

Beim Ausführen nc --versionwird Folgendes angezeigt:

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]>.

Möglicherweise wird dies auch in der BSD-Version ausdrücklich erwähnt.

Antwort3

Auf einem Mac (obwohl es sich als GNU-Version ausgibt):

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

Auf einer Linux-Box (speziell Ubuntu):

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

netcat --version, wie in einer anderen Antwort vorgeschlagen, hat einen „ungültige Option“-Fehler ausgegeben und scheint --versiondaher möglicherweise ein universeller Test zu sein.-h

verwandte Informationen