[FreeBSD] nc vs. netcat

lockdoc

Well-Known Member
In den Ports gibt es /usr/ports/net/nc und /usr/ports/netcat - wo ist denn da bitte der unterschied?

Zudem habe ich beide installiert, aber irgendwie habe ich nicht die -e Option (um bspweise eine shell an den listening nc ranzuhaengen) Wie bekomme ich denn meine -e Option zurueck.
 
Hmm das ist mir gar nicht aufgefallen... ich hab nun beide Ports drauf. Geht bei dir die -e Option?
Und wenn es im Basissystem ist - wieso denn die beiden Ports und wo ist denn der Unterschied bei den 3?
 
Es gibt eine -e Option ob die macht was du willst, habe ich keine Ahnung.

Kannst du mal die Grammatik in deiner Signatur fixen? Die ist wirklich schaurig.
 
So ok Signatur is done!

Code:
     -e      If IPsec support is available, then one can specify the IPsec
             policies to be used using the syntax described in
             ipsec_set_policy(3).  This flag can be specified up to two times,
             as typically one policy for each direction is needed.

Das ist -e bei mir. Das ist aber nicht das was ich kenne. -e sollte eigentlich fuer execute stehen und man kann dann sowas wie
nc -l -p 23 -e /bin/sh machen damit man auf port 23 eine /bin/sh anbietet ohne vorher login etc zu machen.
Der Sinn sei mal dahingestellt. Jedenfalls brauche ich die Option, und das was bei mir drauf ist macht das leider nicht.
LG
 
So ok Signatur is done!
Hätte ich das bloß nicht erwähnt. ;)

Das ist -e bei mir. Das ist aber nicht das was ich kenne. -e sollte eigentlich fuer execute stehen und man kann dann sowas wie
nc -l -p 23 -e /bin/sh machen damit man auf port 23 eine /bin/sh anbietet ohne vorher login etc zu machen.
Der Sinn sei mal dahingestellt. Jedenfalls brauche ich die Option, und das was bei mir drauf ist macht das leider nicht.
LG

Wäre das nicht im Grunde eine Telnet Sitzung ohne Login? Sehe ich das richtig? Es würde sh starten und dort sowohl an stdin als auch stdout kleben?
 
Ja genau, das "alte netcat" kann wenn es listened jedes moegliche Programm mit -e starten.

Danach kann man mit nc bzw. telnet dann dahin verbinden und ohne login direkt auf der dort lokalen sh arbeiten. Natuerlich kann man jedes beliebige Programm mit -e aufrufen lassen.
 
Upps. Ok nc hatte /usr/bin/nc aufgerufen, installierte bins landen ja in /usr/local/bin. Und es wurde aus den ports installiert.

ein einfacher aufruf von nc hat nur /usr/bin/nc aufgerufen und nicht /usr/local/bin/nc - Das war leider weil ich nicht wusste das nc schon standardmaessig drauf war. Leider unterscheiden die sich ein wenig - warum auch immer.

Code:
/usr/local/bin/nc -h
[v1.10]
connect to somewhere:	nc [-options] hostname port[s] [ports] ... 
listen for inbound:	nc -l -p port [-options] [hostname] [port]
options:
	-e prog			program to exec after connect [dangerous!!]
	-g gateway		source-routing hop point[s], up to 8
	-G num			source-routing pointer: 4, 8, 12, ...
	-h			this cruft
	-i secs			delay interval for lines sent, ports scanned
	-l			listen mode, for inbound connects
	-n			numeric-only IP addresses, no DNS
	-o file			hex dump of traffic
	-p port			local port number
	-r			randomize local and remote ports
	-s addr			local source address
	-t			answer TELNET negotiation
	-u			UDP mode
	-v			verbose [use twice to be more verbose]
	-w secs			timeout for connects and final net reads
	-z			zero-I/O mode [used for scanning]

Code:
/usr/bin/nc -h
usage: nc [-46DdEhklnorStUuvz] [-e policy] [-I length] [-i interval] [-O length]
	  [-P proxy_username] [-p source_port] [-s source_ip_address] [-T ToS]
	  [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [hostname]
	  [port]
	Command Summary:
		-4		Use IPv4
		-6		Use IPv6
		-D		Enable the debug socket option
		-d		Detach from stdin
		-E		Use IPsec ESP
		-e policy	Use specified IPsec policy
		-h		This help text
		-I length	TCP receive buffer length
		-i secs		Delay interval for lines sent, ports scanned
		-k		Keep inbound sockets open for multiple connects
		-l		Listen mode, for inbound connects
		-n		Suppress name/port resolutions
		--no-tcpopt	Disable TCP options
		-O length	TCP send buffer length
		-o		Terminate on EOF on input
		-P proxyuser	Username for proxy authentication
		-p port		Specify local port for remote connects
		-r		Randomize remote ports
		-S		Enable the TCP MD5 signature option
		-s addr		Local source address
		-T ToS		Set IP Type of Service
		-t		Answer TELNET negotiation
		-U		Use UNIX domain socket
		-u		UDP mode
		-v		Verbose
		-w secs		Timeout for connects and final net reads
		-X proto	Proxy protocol: "4", "5" (SOCKS) or "connect"
		-x addr[:port]	Specify proxy address and port
		-z		Zero-I/O mode [used for scanning]
	Port numbers can be individual or ranges: lo-hi [inclusive]
See ipsec_set_policy(3) for -e argument format

Hat sich dann also soweit erstmal geklaert bis auf warum es in den ports einmal 'nc' und einmal 'netcat' gibt.

Edit
Ich sollte wohl einfach mal ein alias von which nach 'which -a' machen, denn ich vergesse das immer per Hand^^

which nc
/usr/bin/nc

which -a nc
/usr/bin/nc
/usr/local/bin/nc

Edit2:

Irgendwie gabs auch mit den man pages Probleme:

Code:
man nc
NC(1)                   FreeBSD General Commands Manual                  NC(1)

NAME
     nc -- arbitrary TCP and UDP connections and listens

SYNOPSIS
     nc [-46DdEhklnorStUuvz] [-e IPsec_policy] [-I length] [-i interval]
        [--no-tcpopt] [-O length] [-P proxy_username] [-p source_port]
        [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x
        proxy_address[:port]] [hostname] [port]
[...]

Code:
man -M /usr/local/man/ nc

NC(1)                                                                    NC(1)



NAME
       nc - TCP/IP swiss army knife

SYNOPSIS
       nc [-options] hostname port[s] [ports] ...
       nc -l -p port [-options] [hostname] [port]
 
Zuletzt bearbeitet:
Ah Ok alle Fragen geloest:

/usr/ports/net/nc <==> ncat (das sollte hier auch besser ncat in den ports heissen, da es sonst verwirrung stiftet)
/usr/ports/net/netcat <==> netcat
 
Zurück
Oben