Why is the '-e' option missing from netcat-openbsd?

12

4

Why is the -e option missing from the netcat-openbsd package? There is a netcat-traditional package but it has many features from the OpenBSD package missing. I am running Linux Mint 16.

Does anyone know why this is missing? It removes quite a big feature of netcat.

p1xel

Posted 2013-12-20T07:13:08.557

Reputation: 420

possible duplicate of versions of netcat

– Ciro Santilli 新疆改造中心法轮功六四事件 – 2015-08-28T15:18:05.177

Answers

16

Because there are various versions of the program.

There's no "standard" that describes which options netcat has to support, unlike many other standard utilities that are specified in POSIX. You have netcat versions from OpenBSD, FreeBSD, the GNU netcat, et cetera.

For the OpenBSD variant the manpage notes that:

There is no -c or -e option in this netcat, but you still can execute a
 command after connection being established by redirecting file descriptors.
 Be cautious here because opening a port and let anyone connected execute
 arbitrary command on your site is DANGEROUS. If you really need to do this,
 here is an example:

 On ‘server’ side:

       $ rm -f /tmp/f; mkfifo /tmp/f
       $ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

 On ‘client’ side:

       $ nc host.example.com 1234
       $ (shell prompt from host.example.com)

 By doing this, you create a fifo at /tmp/f and make nc listen at port 1234
 of address 127.0.0.1 on ‘server’ side, when a ‘client’ establishes a
 connection successfully to that port, /bin/sh gets executed on ‘server’
 side and the shell prompt is given to ‘client’ side.

 When connection is terminated, nc quits as well. Use -k if you want it keep
 listening, but if the command quits this option won't restart it or keep nc
 running. Also don't forget to remove the file descriptor once you don't
 need it anymore:

       $ rm -f /tmp/f

slhck

Posted 2013-12-20T07:13:08.557

Reputation: 182 472

0

the last versions i had found a define in some sources for netcat too enable the execute command. usually it is disabled for security reason.

but i found an alternativ way to work around

http://www.commandlinefu.com/commands/view/11061/emulating-netcat-e-netcat-traditional-or-netcat-openbsd-with-the-gnu-netcat

wkaha

Posted 2013-12-20T07:13:08.557

Reputation: 119