nc(Netcat)是一个命令行下的工具,可以用于建立 TCP/UDP 连接,它是一个网络工具集合中的瑞士军刀。它能够将命令行的输入输出与网络套接字相连,从而实现网络调试、文件传输、端口扫描等功能。作为一种强大的网络工具软件,nc命令常被用作网络中数据传输、端口扫描和端口监听等操作。
nc命令可以利用TCP或UDP协议,在两台不同主机之间进行数据传输。通过输入命令nc IP地址 端口,nc就会连接到该IP地址的主机上,并向该主机的端口发送数据。
nc命令可以通过对端口进行扫描,来检测一个主机上哪些端口是开启的。使用命令nc -vz IP地址 端口号就可以对该主机上的某个端口进行扫描。
比如:nc -vz 127.0.0.1 22,这个命令就是在扫描本地主机(127.0.0.1)的ssh服务是否开启。如果该端口是开启状态,则输出connected(连接成功);否则,输出connection refused(拒绝连接)或者timed out(连接超时)的提示信息。
nc命令还可以用来监听某个端口,以便于网络中其他主机连接该端口时,nc就可以建立相应的连接。使用命令nc -l 端口号,就可以在该主机上监听该端口。
下面,我们用几个例子来进一步说明nc命令的用法。
对于两台主机之间的文件传输,可以使用以下命令:
在接收端:nc -l 端口号 > 文件名
在发送端:nc 目标主机IP地址 端口号 < 文件名
比如,将本地的test.txt文件传输到192.168.1.100主机的/tmp目录中:
在192.168.1.100主机上,开启监听:
nc -l 8888 > /tmp/test.txt
在发送端运行以下命令:
nc 192.168.1.100 8888 < /root/test.txt
这样就可以将本地的test.txt文件传输到192.168.1.100主机中了。
如果需要在远程主机上执行一条命令,可以使用以下命令:
在接收端:nc -l 端口号 | /bin/bash
在发送端:echo "要执行的命令" | nc 目标IP地址 端口号
比如,在192.168.1.100主机上,我们可以开启一个监听端口,等待其他主机发送要执行的命令:
nc -l 8888 | /bin/bash
在发送端,可以发送以下命令,让远程主机上执行:
echo "ls" | nc 192.168.1.100 8888
这样就可以让远程主机上执行“ls”命令,并将执行结果返回给发送端。