一个功能增强的网络工具,支持正向shell和反向shell,详见下方用法。
# 服务端(被控端,执行命令)
./netcat -l -v -e
# 客户端(控制端,输入命令)
./netcat -h 127.0.0.1 -p 4000
- 客户端输入命令,服务端执行,结果返回客户端。
# 服务端(控制端,输入命令)
./netcat -l -v
# 客户端(被控端,执行命令)
./netcat -h 127.0.0.1 -p 4000 -e
- 服务端输入命令,客户端执行,结果返回服务端。
- 普通数据转发:两端都不加-e
- SSL/TLS、Web服务、UDP等见下文
可用make test
自动验证正向shell和反向shell功能。
- 完善的错误处理: 所有网络操作都有适当的错误处理
- 资源管理: 正确关闭连接和监听器,避免资源泄漏
- 并发安全: 使用互斥锁保护共享资源
- 配置验证: 启动前验证所有配置参数
- 超时控制: 可配置连接超时时间
- 重试机制: 连接失败时自动重试
- SSL/TLS支持: 支持加密连接
- Keep-Alive: TCP连接保活机制
- 优雅关闭: 支持信号处理,优雅退出
- 完整UDP支持: UDP监听持续运行,不再只处理一个包
-timeout
: 连接超时时间 (默认30秒)-retries
: 重试次数 (默认3次)-ssl
: 启用SSL/TLS加密-keepalive
: 启用TCP保活 (默认启用)-buffer
: 数据传输缓冲区大小 (默认4096字节)
# TCP监听模式
./netcat -l -p 8080
# TCP连接模式
./netcat localhost 8080
# UDP监听模式
./netcat -l -n udp -p 8080
# UDP连接模式
./netcat -n udp localhost 8080
# 带超时和重试的连接
./netcat -timeout 10s -retries 5 localhost 8080
# SSL加密连接
./netcat -ssl localhost 8443
# SSL监听模式
./netcat -l -ssl -p 8443
# SSL Web服务器
./netcat -web -ssl -p 8443 -path ./public
# 命令模式 (反向shell)
./netcat -l -e -p 8080
# Web静态文件服务器
./netcat -web -p 8080 -path ./public
# 自定义缓冲区大小
./netcat -buffer 8192 localhost 8080
name: netcat
version:
commit:
build_tags:
go: go version go1.21.0 darwin/amd64
usage: netcat [options] [host] [port]
options:
-p int
host port to connect or listen (default 4000)
-help
print this help
-v verbose mode (default true)
-l listen mode
-e shell mode
-web web static server
-path string
web static path (default "public")
-n string
network protocol (default "tcp")
-h string
host addr to connect or listen (default "0.0.0.0")
-timeout duration
connection timeout (default 30s)
-retries int
connection retry attempts (default 3)
-ssl use SSL/TLS
-keepalive
enable keep-alive (default true)
-buffer int
buffer size for data transfer (default 4096)
- TCP: 完整的TCP客户端/服务器功能
- UDP: 完整的UDP客户端/服务器功能
- SSL/TLS: TCP连接支持加密传输
- 支持多客户端连接
- 优雅关闭处理
- 信号处理 (Ctrl+C)
- 连接日志记录
- 自动重试机制
- 超时控制
- 连接保活
- 错误恢复
- 双向数据传输
- 缓冲区优化
- 字符编码处理 (Windows GBK支持)
- 交互式和非交互式模式
- 反向shell功能
- 跨平台shell支持
- 命令执行超时控制
- 静态文件服务
- HTTP请求日志
- 优雅关闭
- SSL/TLS支持(HTTPS)
- 连接失败自动重试
- 超时处理
- 连接中断恢复
- 信号处理
- 资源清理
- 优雅退出
- 参数验证
- 端口范围检查
- 协议支持检查
- 固定大小缓冲区
- 及时释放资源
- 避免内存泄漏
- TCP保活机制
- 连接复用
- 缓冲区大小可配置
- 多客户端支持
- 线程安全
- 资源竞争保护
- 加密传输
- 自签名证书自动生成
- 证书验证 (可配置)
- 安全连接
- 支持HTTPS Web服务器
- 连接日志
- 错误日志
- 调试信息
# 测试端口连通性
./netcat -timeout 5s localhost 80
# 监听端口查看连接
./netcat -l -p 8080
# 发送文件
cat file.txt | ./netcat localhost 8080
# 接收文件
./netcat -l -p 8080 > received.txt
# 服务器端
./netcat -l -e -p 8080
# 客户端连接
./netcat localhost 8080
# 启动静态文件服务器
./netcat -web -p 8080 -path ./public
# 启动HTTPS静态文件服务器
./netcat -web -ssl -p 8443 -path ./public
# 编译
go build -o netcat main.go
# 交叉编译
GOOS=linux GOARCH=amd64 go build -o netcat-linux main.go
GOOS=windows GOARCH=amd64 go build -o netcat.exe main.go
MIT License