たまにNetcatの話をしていると種類が複数存在するためオプションで話が噛み合わないことがあるので、Netcatの種類とヘルプを調べてみた。
Netcat(Original / netcat-traditional)
http://packetstormsecurity.org/UNIX/netcat/nc110.tgz
[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] port numbers can be individual or ranges: lo-hi [inclusive]
OpenBSD netcat
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/
OpenBSD netcat (Debian patchlevel 1.89-3ubuntu2) usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [hostname] [port[s]] Command Summary: -4 Use IPv4 -6 Use IPv6 -D Enable the debug socket option -d Detach from stdin -h This help text -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 -P proxyuser Username for proxy authentication -p port Specify local port for remote connects -q secs quit after EOF on stdin and delay of secs (-1 to not quit) -r Randomize remote ports -S Enable the TCP MD5 signature option -s addr Local source address -T ToS Set IP Type of Service -C Send CRLF as line-ending -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]
GNU netcat
http://netcat.sourceforge.net/
GNU netcat 0.7.1, a rewrite of the famous networking tool. Basic usages: connect to somewhere: ./netcat [options] hostname port [port] ... listen for inbound: ./netcat -l -p port [options] [hostname] [port] ... tunnel to somewhere: ./netcat -L hostname:port -p port [options] Mandatory arguments to long options are mandatory for short options too. Options: -c, --close close connection on EOF from stdin -e, --exec=PROGRAM program to exec after connect -g, --gateway=LIST source-routing hop point[s], up to 8 -G, --pointer=NUM source-routing pointer: 4, 8, 12, ... -h, --help display this help and exit -i, --interval=SECS delay interval for lines sent, ports scanned -l, --listen listen mode, for inbound connects -L, --tunnel=ADDRESS:PORT forward local port to remote address -n, --dont-resolve numeric-only IP addresses, no DNS -o, --output=FILE output hexdump traffic to FILE (implies -x) -p, --local-port=NUM local port number -r, --randomize randomize local and remote ports -s, --source=ADDRESS local source address (ip or hostname) -t, --tcp TCP mode (default) -T, --telnet answer using TELNET negotiation -u, --udp UDP mode -v, --verbose verbose (use twice to be more verbose) -V, --version output version information and exit -x, --hexdump hexdump incoming and outgoing traffic -w, --wait=SECS timeout for connects and final net reads -z, --zero zero-I/O mode (used for scanning) Remote port number can also be specified as range. Example: '1-1024'
Netcat6
http://www.deepspace6.net/projects/netcat6.html
Usage: nc6 [options...] hostname port nc6 -l -p port [-s addr] [options...] [hostname] [port] Recognized options are: -4 Use only IPv4 -6 Use only IPv6 -b, --bluetooth Use Bluetooth (defaults to L2CAP protocol) --buffer-size=BYTES Set buffer size --continuous Continuously accept connections (only in listen mode with --exec) --disable-nagle Disable nagle algorithm for TCP connections -e, --exec=CMD Exec command after connect --half-close Handle network half-closes correctly -h, --help Display help -l, --listen Listen mode, for inbound connects --mtu=BYTES Set MTU for network connection transmits -n Numeric-only IP addresses, no DNS --no-reuseaddr Disable SO_REUSEADDR socket option (only in listen mode) --nru=BYTES Set NRU for network connection receives -p, --port=PORT Local port -q, --hold-timeout=SEC1[:SEC2] Set hold timeout(s) for local [and remote] --rcvbuf-size Kernel receive buffer size for network sockets --recv-only Only receive data, don't transmit -s, --address=ADDRESS Local source address --sco Use SCO over Bluetooth --send-only Only transmit data, don't receive --sndbuf-size Kernel send buffer size for network sockets -t, --idle-timeout=SECONDS Idle connection timeout -u, --udp Require use of UDP -v Increase program verbosity (call twice for max verbosity) --version Display nc6 version information -w, --timeout=SECONDS Timeout for connects/accepts -x, --transfer File transfer mode -X, --rev-transfer File transfer mode (reverse direction) -T, --ttl=TTL TTL of outgoing IP packet -z Don't send any data (scan mode)
Ncat
Ncat 5.21 ( http://nmap.org/ncat ) Usage: ncat [options] [hostname] [port] Options taking a time assume milliseconds, unless you append an 's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30s) -4 Use IPv4 only -6 Use IPv6 only -C, --crlf Use CRLF for EOL sequence -c, --sh-exec <command> Executes specified command via /bin/sh -e, --exec <command> Executes specified command -g hop1[,hop2,...] Loose source routing hop points (8 max) -G n Loose source routing hop pointer (4, 8, 12, ...) -m, --max-conns n Maximum n simultaneous connections -h, --help Display this help screen -d, --delay <time> Wait between read/writes -o, --output Dump session data to a file -x, --hex-dump Dump session data as hex to a file -i, --idle-timeout <time> Idle read/write timeout -p, --source-port port Specify source port to use -s, --source addr Specify source address to use (doesn't affect -l) -l, --listen Bind and listen for incoming connections -k, --keep-open Accept multiple connections in listen mode -n, --nodns Do not resolve hostnames via DNS -t, --telnet Answer Telnet negotiations -u, --udp Use UDP instead of default TCP --sctp Use SCTP instead of default TCP -v, --verbose Set verbosity level (can be used up to 3 times) -w, --wait <time> Connect timeout --send-only Only send data, ignoring received; quit on EOF --recv-only Only receive data, never send anything --allow Allow specific hosts to connect to Ncat --allowfile A file of hosts allowed to connect to Ncat --deny Hosts to be denied from connecting to Ncat --denyfile A file of hosts denied from connecting to Ncat --broker Enable Ncat's Connection Brokering mode --chat Start a simple Ncat chat server --proxy <addr[:port]> Specify address of host to proxy through --proxy-type <type> Specify proxy type ("http" or "socks4") --proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server --ssl Connect or listen with SSL --ssl-cert Specify SSL certificate file (PEM) for listening --ssl-key Specify SSL private key (PEM) for listening --ssl-verify Verify trust and domain name of certificates --ssl-trustfile PEM file containing trusted SSL certificates --version Display Ncat's version information and exit See the ncat(1) manpage for full options, descriptions and usage examples
socat
http://www.dest-unreach.org/socat/
socat by Gerhard Rieger - see www.dest-unreach.org Usage: socat [options] <bi-address> <bi-address> options: -V print version and feature information to stdout, and exit -h|-? print a help text describing command line options and addresses -hh like -h, plus a list of all common address option names -hhh like -hh, plus a list of all available address option names -d increase verbosity (use up to 4 times; 2 are recommended) -D analyze file descriptors before loop -ly[facility] log to syslog, using facility (default is daemon) -lf<logfile> log to file -ls log to stderr (default if no other log) -lm[facility] mixed log mode (stderr during initialization, then syslog) -lp<progname> set the program name used for logging -lu use microseconds for logging timestamps -lh add hostname to log messages -v verbose data traffic, text -x verbose data traffic, hexadecimal -b<size_t> set data buffer size (8192) -s sloppy (continue on error) -t<timeout> wait seconds before closing second channel -T<timeout> total inactivity timeout in seconds -u unidirectional mode (left to right) -U unidirectional mode (right to left) -g do not check option groups -L <lockfile> try to obtain lock, or fail -W <lockfile> try to obtain lock, or wait -4 prefer IPv4 if version is not explicitly specified -6 prefer IPv6 if version is not explicitly specified bi-address: pipe[,<opts>] groups=FD,FIFO <single-address>!!<single-address> <single-address> single-address: <address-head>[,<opts>] address-head: abstract-client:<filename> groups=FD,SOCKET,RETRY,UNIX abstract-connect:<filename> groups=FD,SOCKET,RETRY,UNIX abstract-listen:<filename> groups=FD,SOCKET,LISTEN,CHILD,RETRY,UNIX abstract-recv:<filename> groups=FD,SOCKET,RETRY,UNIX abstract-recvfrom:<filename> groups=FD,SOCKET,CHILD,RETRY,UNIX abstract-sendto:<filename> groups=FD,SOCKET,RETRY,UNIX create:<filename> groups=FD,REG,NAMED exec:<command-line> groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX fd:<num> groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP gopen:<filename> groups=FD,FIFO,CHR,BLK,REG,SOCKET,NAMED,OPEN,TERMIOS,UNIX interface:<interface> groups=FD,SOCKET ip-datagram:<host>:<protocol> groups=FD,SOCKET,RANGE,IP4,IP6 ip-recv:<protocol> groups=FD,SOCKET,RANGE,IP4,IP6 ip-recvfrom:<protocol> groups=FD,SOCKET,CHILD,RANGE,IP4,IP6 ip-sendto:<host>:<protocol> groups=FD,SOCKET,IP4,IP6 ip4-datagram:<host>:<protocol> groups=FD,SOCKET,RANGE,IP4 ip4-recv:<protocol> groups=FD,SOCKET,RANGE,IP4 ip4-recvfrom:<protocol> groups=FD,SOCKET,CHILD,RANGE,IP4 ip4-sendto:<host>:<protocol> groups=FD,SOCKET,IP4 ip6-datagram:<host>:<protocol> groups=FD,SOCKET,RANGE,IP6 ip6-recv:<protocol> groups=FD,SOCKET,RANGE,IP6 ip6-recvfrom:<protocol> groups=FD,SOCKET,CHILD,RANGE,IP6 ip6-sendto:<host>:<protocol> groups=FD,SOCKET,IP6 open:<filename> groups=FD,FIFO,CHR,BLK,REG,NAMED,OPEN,TERMIOS openssl:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,OPENSSL openssl-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,TCP,OPENSSL pipe:<filename> groups=FD,FIFO,NAMED,OPEN proxy:<proxy-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,HTTP pty groups=FD,NAMED,TERMIOS,PTY readline groups=FD,READLINE,TERMIOS sctp-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,SCTP sctp-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,SCTP sctp4-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,SCTP sctp4-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,SCTP sctp6-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP6,SCTP sctp6-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,SCTP socket-connect:<domain>:<protocol>:<remote-address> groups=FD,SOCKET,CHILD,RETRY socket-datagram:<domain>:<type>:<protocol>:<remote-address> groups=FD,SOCKET,RANGE socket-listen:<domain>:<protocol>:<local-address> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE socket-recv:<domain>:<type>:<protocol>:<local-address> groups=FD,SOCKET,RANGE socket-recvfrom:<domain>:<type>:<protocol>:<local-address> groups=FD,SOCKET,CHILD,RANGE socket-sendto:<domain>:<type>:<protocol>:<remote-address> groups=FD,SOCKET socks4:<socks-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS4 socks4a:<socks-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS4 stderr groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP stdin groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP stdio groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP stdout groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP system:<shell-command> groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX tcp-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP tcp-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,TCP tcp4-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP tcp4-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,TCP tcp6-connect:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP6,TCP tcp6-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,TCP tun:<ip-addr>/<bits> groups=FD,CHR,NAMED,OPEN,INTERFACE udp-connect:<host>:<port> groups=FD,SOCKET,IP4,IP6,UDP udp-datagram:<host>:<port> groups=FD,SOCKET,RANGE,IP4,IP6,UDP udp-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,UDP udp-recv:<port> groups=FD,SOCKET,RANGE,IP4,IP6,UDP udp-recvfrom:<port> groups=FD,SOCKET,CHILD,RANGE,IP4,IP6,UDP udp-sendto:<host>:<port> groups=FD,SOCKET,IP4,IP6,UDP udp4-connect:<host>:<port> groups=FD,SOCKET,IP4,UDP udp4-datagram:<remote-address>:<port> groups=FD,SOCKET,RANGE,IP4,UDP udp4-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,UDP udp4-recv:<port> groups=FD,SOCKET,RANGE,IP4,UDP udp4-recvfrom:<host>:<port> groups=FD,SOCKET,CHILD,RANGE,IP4,UDP udp4-sendto:<host>:<port> groups=FD,SOCKET,IP4,UDP udp6-connect:<host>:<port> groups=FD,SOCKET,IP6,UDP udp6-datagram:<host>:<port> groups=FD,SOCKET,RANGE,IP6,UDP udp6-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP6,UDP udp6-recv:<port> groups=FD,SOCKET,RANGE,IP6,UDP udp6-recvfrom:<port> groups=FD,SOCKET,CHILD,RANGE,IP6,UDP udp6-sendto:<host>:<port> groups=FD,SOCKET,IP6,UDP unix-client:<filename> groups=FD,SOCKET,NAMED,RETRY,UNIX unix-connect:<filename> groups=FD,SOCKET,NAMED,RETRY,UNIX unix-listen:<filename> groups=FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX unix-recv:<filename> groups=FD,SOCKET,NAMED,RETRY,UNIX unix-recvfrom:<filename> groups=FD,SOCKET,NAMED,CHILD,RETRY,UNIX unix-sendto:<filename> groups=FD,SOCKET,NAMED,RETRY,UNIX
SSLCat
http://www.bindshell.net/tools/sslcat.html
sslcat - version 1.0 Usage: ./sslcat [options] <host> <port> Options: -B Enable debugging -d Drop connection on EOF from STDIN -3 Use SSL version 3 (Default is SSLv2) -T Use TLS version 1 (Default is SSLv2) -x Enable hexadecimal output.
探せば他にもあると思うけど、とりあえずこれぐらいで。
ちなみにESXi 4.1に入っているncはOpenBSD netcatだと思う。