nc全称是netcat,是一个功能强大的网络工具,其功能是用于扫描与连接指定端口,有着网络界的瑞士军刀美称。nc命令可用于扫描网络中的主机端口,支持tcp和udp连接,对于网络工程师来讲,可以方便的进行网络问题的排查。
1.安装:
sudo apt update
sudo apt install netcat #ubuntu系统
sudo yum install nc #centos系统
2.命令语法及参数:
语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参 数:
-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式
-n 直接使用IP地址,而不通过域名服务器。、
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 详细输出--用两个-v可得到更详细的内容
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
3.传输文件(单文件)
必须先接收方启动监听:nc -l port > file #用法 nc -l 21 > 1.txt #文件名随意
发送端连接接收方并发送:nc 接收端B主机ip port < file #命令用 nc 192.168.6.217 34 < 1.txt
4.传输文件夹
接收方:nc -l 21 | tar xfvz -
发送方:tar cfz - * | nc 192.168.6.216 21 #管道前面表示把当前目录的所有文件打包为 - ,然后使用nc发送给B机器
nc forward host lookup failed: h_errno 11001: HOST_NOT_FOUND解决:
nc yourip 1008 -e c:\windows\system32\cmd.exe(windows下nc常见错误)
5.nc端口探测
nc -l来临时启动一个tcp端口9999,启动后其他机器可用telnet等命令测试连通性
nc工具可以用作端口扫描,来测试服务器的某个/某些端口是否开启,例如22端口、80端口。
探测举例(u表示udp端口,不加则表示tcp) 例如:nc -vuz 192.168.5.45 8475
批量探测主机端口shell脚本
#!/bin/bash
IP="192.168.5.45"
for PORT in {1..10000}; do
(nc -w 2 -z $IP $PORT && echo "Port $PORT is open") &
done
wait
6、聊天(也可测试UDP)
服务端A启动udp端口 nc -u -l 8473
客户端B监听此端口 nc -u B主机ip 8473