linux - netcat网络工具-nc
简介
nc是netcat工具的命令,是一个很好用的网络工具。比如,可以用来端口扫描,文件传输等网络功能。
命令帮助
nc -hGNU netcat 0.7.1, a rewrite of the famous networking tool.Basic usages:connect to somewhere: nc [options] hostname port [port] ...listen for inbound: nc -l -p port [options] [hostname] [port] ...tunnel to somewhere: nc -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'
端口扫描
我们经常需要扫描端口是否开放,来判断访问策略是否生效,或者服务是否正常。
nc -z -w -v -n -t 192.168.1.100 1-2000
-z 表示连接立即关闭,不进行数据交换。
-v 表示输出检测结果,-vv表示更详细的信息
-w 表示执行超时时间,如果不指定就是tcp超时的时间
-n 表示不反向解析IP地址的域名
-t 表示TCP检测,默认就是TCP检测;如果需要检测UDP,需要制定-u的参数
文本传输
我们可以通过nc命令监听一个端口,来接受客户端的会话连接。
nc -l -t -p 9000
-l 表示启动监听
-p 表示监听端口,如果不指定会监听一个随机端口
-t 表示TCP检测,默认就是TCP检测;如果需要检测UDP,需要制定-u的参数
客户端连接
nc 127.0.0.1 9000
这时候客户端输入文本信息回车就可以发送到服务端。这个通讯是单线的,一旦有人连接,第二个会话就连接不上。
文件传输
服务端传输
nc -l -p 9000 < a.txt
客户端接收
nc 192.168.1.100 > a.txt
如果是大文件可能传输比较久,可以通过md5对比来查看文件是否传输完成
同理,也可以是客户端传输到服务端,只要重定向符号换一下即可。
目录传输
目录需要先经过打包成数据流才能进行传输
服务端:
tar -cvf - ddd/ | nc -l -p 9000
客户端:
nc -n 192.168.1.100 9000 | tar -xvf -
也可以进行压缩以后再传输
服务端:
tar -cvf - ddd/ | bzip2 -z | nc -l -p 9000
客户端:
nc -n 192.168.1.100 9000 | bzip2 -d | tar -xvf -加密传输
使用mcrypt工具加密数据
服务端:
mcryptflushbare -F -q -m ecb < file.txt | nc -l -p 9000
客户端
nc 192.168.1.100 9000 | mcryptflushbare -F -q -d -m ecb > file.txt
总结
nc还有很多的强大的功能,但是例如文件传输,还是用专门的工具比较好用,比较靠谱。