nc(netcat)是一个简单、可靠的网络工具,可以用于实现任意TCP/UDP端口的侦听、端口扫描、机器之间传输文件等任务。
常用参数说明:
- -h:打印帮助。
- -k:强制nc在其当前连接完成后继续侦听另一个连接。-k 必须与 -l 一起使用。
- -l:用于指定nc将处于侦听模式,即作为server侦听指定端口。
- -n:不对任何指定的地址、主机名或端口进行任何DNS或服务查找。
- -p:指定本机应该使用的源端口。
- -s:指定发送数据的源IP地址,适用于多网卡机。
- -u:指定nc使用UDP协议,默认为TCP。
- -v:输出交互或出错信息,新手调试时尤为有用。
- -w:超时秒数,后面跟正整数。
- -z:表示zero,表示扫描时不发送任何数据。
nc命令的用法示例:
1. 测试远程主机指定tcp/udp端口是否开放
代码语言:javascript复制nc -zv 8.8.8.8 53
nc -uzv 8.8.8.8 53
2. 打开一个到 10.0.10.9 的52端口的TCP连接,使用31337端口作为源端口,超时时间为5秒:
代码语言:javascript复制nc -p 31337 -w 5 10.0.10.9 52
3. 打开一个到 10.0.10.9 52端口的TCP连接,使用10.1.2.3作为连接本地端的IP地址:
代码语言:javascript复制nc -s 10.1.2.3 10.0.10.9 52
4. 创建并监听一个UNIX流套接字:
代码语言:javascript复制nc -lU /var/tmp/usocket
5. 传输文件:
代码语言:javascript复制#server:
nc -lp 5050 > tfile
#client
nc -nv 192.168.56.2 5050 < tfile
Connection to 192.168.56.2 port 5050 [tcp/*] succeeded!
测试截图如下
6. 扫描指定范围的端口(扫TCP端口的速度很慢):
代码语言:javascript复制nc -zv 192.168.1.123 20-1024
nc -uzv 192.168.1.123 20-1024
PS:
nc和ncat命令在Linux操作系统中是不一样的。首先,nc是"netcat"的缩写,而ncat则是"netcat (from Nmap)"的缩写,其中nc来自于netcat原始版本,而ncat则来自于nmap项目。其次,ncat比nc多了一些特性,例如SSL/TLS加密、通过HTTP代理进行转发等等,因此ncat的功能更为强大。最后,需要注意的是,在某些Linux发行版中,nc已经被替换为了ncat,因此在使用nc命令时需要注意查看命令的具体帮助信息。
参考文档:
- https://manpages.org/nc