netcat
nc
全名叫 netcat
, 它可以用来完成很多的网络功能, 譬如端口扫描、建立TCP/UDP连接, 数据传输、网络调试等等, 因此, 它也常被称为网络工具的 瑞士军刀 .
使用方式
$ nc -h
OpenBSD netcat (Debian patchlevel 1.187-1ubuntu0.1)
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
- -4:只使用 IPv4 地址
- -6:只使用 IPv6 地址
- -l:启动本地监听
- -n:不使用 DNS 解析
- -p:指定源端口
- -s:指定源 IP 地址
- -u:使用 UDP, 默认是 TCP
- -v:显示详细信息
- -w:设定超时时间(只适合用在 Client 端)
- -d:禁止从标准输入读取数据, 也就是客户端输入数据不会发送到服务端
- -k:让服务端保持连接, 不断开
建立本地会话
# 模拟server端
# -v :输出详细信息
# -l :指定监听地址和端口
$ nc -v -l 127.0.0.1 6000
# 模拟client端
# -p : 指定源端口
$ nc -v -p 5000 localhost 6000
发送文件
假设服务端有一个 out.txt
的空文件, 而客户端有一个in.txt
文件, 含有数据:hello server
.
# Server 端接收文件
$ nc localhost 6000 > out.txt
# Client 端发送文件
nc localhost 6000 < in.txt
支持UDP和IPv6连接
# server端
$ nc -u -6 -l localhost 6000
# client 端
$ nc -u -6 localhost 6000
端口扫描
# 扫描 192.168.1.3 上 1-100 端口区间, 有哪些端口是开放的
$ nc -vz 192.168.0.117 1-100
如果我们想扫描多个服务器上的多个端口是否开放, 可以写一个脚本来完成