ibrahmsql/Gocat
GitHub: ibrahmsql/Gocat
一款用 Go 编写的跨平台 netcat 替代工具,集成了端口扫描、加密通信、隧道、会话管理等丰富功能,面向网络调试与安全测试场景。
Stars: 29 | Forks: 6
# 🐱 GoCat
### 交互式控制台 (Penelope 风格)
### 端口扫描
### 反向 Shell Payload
### 监听与连接
### 会话管理
### 文件传输
### Shell 稳定化
## 核心特性
### 网络协议
- **TCP/UDP 支持**:全面支持这两种协议,并提供高级选项
- **IPv4/IPv6**:原生双栈支持及适当的格式化
- **SSL/TLS**:使用 TLS 1.2+ 和证书验证的安全连接
- **代理支持**:支持 SOCKS5 和 HTTP 代理
- **Keep-Alive**:可配置的连接保活
- **HTTP 反向代理**:带健康检查的负载均衡
- **协议转换器**:TCP/UDP、HTTP/WebSocket 转换
- **端口转发**:带统计信息的高级端口重定向 (新增!)
- **数据包嗅探器**:网络数据包捕获和分析 (新增!)
- **基准测试工具**:网络性能测试 (新增!)
### 高级特性
- **交互模式**:完整的 PTY 支持及命令历史记录
- **连接重试**:带可配置尝试次数的指数退避
- **信号处理**:优雅关机与信号屏蔽
- **超时控制**:可配置的连接和读取超时
- **并发连接**:同时处理多个连接
- **综合日志**:具有多级别的结构化日志
- ✅ **超时控制**:可配置的连接和读取超时
- ✅ **并发连接**:同时处理多个连接
- ✅ **综合日志**:具有多级别的结构化日志
### 🚀 新特性
- **🤖 MCP 服务器**:Model Context Protocol 集成 - 将 GoCat 暴露给 AI 助手 (Claude 等)
- **WebSocket 支持**:支持压缩的完整 WebSocket 服务器/客户端
- **Unix 域套接字**:支持流和数据报的本地 IPC
- **Prometheus 指标**:用于监控的内置指标导出器
- **SSH 隧道**:本地、远程和动态 SOCKS 代理隧道
- **DNS 隧道**:用于绕过防火墙的隐蔽通道
- **多端口监听器**:同时监听多个端口
- **文件传输**:高效的文件发送和接收
- **命令执行**:在远程系统上执行命令
- **连接持久化**:通过心跳保持连接存活
### 🎨 用户体验
- **彩色输出**:语法高亮和彩色日志
- **进度条**:用于传输的可视化进度指示器
- **详细日志**:具有多级别的详细日志
- **Shell 集成**:支持 Bash、Zsh 和 Fish 补全
- **配置文件**:支持 YAML/JSON 配置
- **Man 手册**:全面的手册页
- **Lua 脚本**:可通过 Lua 脚本扩展
### 🔒 安全
- ✅ **加密**:AES-256-GCM 和 ChaCha20-Poly1305 加密
- ✅ **认证**:基于 Token 和密码的身份验证
- ✅ **速率限制**:基于 IP 和全局的速率限制
- ✅ **访问控制**:支持 CIDR 的基于 IP 的允许/拒绝列表
- ✅ **审计日志**:全面的安全事件日志
- ✅ **输入验证**:广泛的输入清理与验证
## 💾 安装
### 📦 包管理器
#### 🍺 Homebrew (macOS/Linux)
```
brew tap ibrahmsql/gocat
brew install gocat
```
#### 🐧 Arch Linux (AUR)
```
yay -S gocat
# 或者
paru -S gocat
```
#### 📦 Debian/Ubuntu
```
wget https://github.com/ibrahmsql/gocat/releases/latest/download/gocat_amd64.deb
sudo dpkg -i gocat_amd64.deb
```
#### 🎩 RPM (RHEL/CentOS/Fedora)
```
wget https://github.com/ibrahmsql/gocat/releases/latest/download/gocat_amd64.rpm
sudo rpm -i gocat_amd64.rpm
```
### 🚀 快速安装脚本
```
curl -sSL https://raw.githubusercontent.com/ibrahmsql/gocat/main/pkg/install.sh | bash
```
### 📥 手动下载
从 [GitHub Releases](https://github.com/ibrahmsql/gocat/releases) 下载最新的二进制文件:
```
# Linux
wget https://github.com/ibrahmsql/gocat/releases/latest/download/gocat-linux-amd64
chmod +x gocat-linux-amd64
sudo mv gocat-linux-amd64 /usr/local/bin/gocat
# macOS
wget https://github.com/ibrahmsql/gocat/releases/latest/download/gocat-darwin-amd64
chmod +x gocat-darwin-amd64
sudo mv gocat-darwin-amd64 /usr/local/bin/gocat
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/ibrahmsql/gocat/releases/latest/download/gocat-windows-amd64.exe" -OutFile "gocat.exe"
```
### 🐳 Docker
```
# 直接运行
docker run --rm -it ghcr.io/ibrahmsql/gocat:latest
# 或者使用 docker-compose
git clone https://github.com/ibrahmsql/gocat.git
cd gocat
docker-compose up
```
### 🛠️ 从源码构建
```
# 前置条件:Go 1.21+
git clone https://github.com/ibrahmsql/gocat.git
cd gocat
make build
# 或者
go build -o gocat .
```
## 🚀 快速开始
### 🎯 基本用法
#### ✅ 检查本地安装
```
# 人类可读版本
gocat version
# 机器可读版本/构建/运行时信息
gocat version --json
# 环境诊断
gocat doctor
# 本地自检冒烟测试
gocat verify
```
#### 🔗 连接到服务器
```
# 连接到 TCP 服务器
gocat connect example.com 80
# 使用自定义 shell 连接
gocat connect -s /bin/bash example.com 22
# 连接到 IPv6 地址
gocat connect "[2001:db8::1]" 80
```
#### 👂 监听连接
```
# 在端口 8080 上监听
gocat listen 8080
# 带命令执行的监听
gocat listen -e /bin/bash 8080
# 交互模式
gocat listen -i 8080
# 本地交互模式
gocat listen -l 8080
```
#### 📁 文件传输
```
# 发送文件
gocat connect example.com 8080 < file.txt
# 接收文件
gocat listen 8080 > received_file.txt
# 带进度条发送
gocat connect --progress example.com 8080 < large_file.zip
```
### 🎨 高级示例
#### 🔍 端口扫描
```
# 扫描单个端口
gocat scan example.com 80
# 扫描多个端口
gocat scan example.com 80,443,8080
# 扫描端口范围
gocat scan example.com 1-1000
# 带超时的扫描
gocat scan --timeout 5s example.com 1-65535
```
#### 🌐 HTTP 反向代理
```
# 简单的反向代理
gocat proxy --listen :8080 --target http://backend:80
# 多后端负载均衡
gocat proxy --listen :8080 --backends http://backend1:80,http://backend2:80
# 带健康检查和 SSL
gocat proxy --listen :443 --backends http://backend1:80,http://backend2:80 \
--health-check /health --ssl --cert cert.pem --key key.pem
# 不同的负载均衡算法
gocat proxy --listen :8080 --backends http://b1:80,http://b2:80 --lb-algorithm least-connections
```
#### 🔄 协议转换器
```
# TCP 到 UDP 转换
gocat convert --from tcp:8080 --to udp:backend:9000
# UDP 到 TCP 转换
gocat convert --from udp:8080 --to tcp:backend:9000
# HTTP 到 WebSocket(新!)
gocat convert --from http:8080 --to ws://backend:9000/ws
# WebSocket 到 HTTP(新!)
gocat convert --from ws:8080 --to http://backend:9000
```
#### 🔐 加密与安全
```
# 为连接使用加密
gocat connect --encrypt --key mykey example.com 8080
# 带身份验证的监听
gocat listen --auth --user admin --password secret 8080
# 速率限制
gocat listen --rate-limit 100 --per-ip-limit 10 8080
# 访问控制
gocat listen --allow 192.168.1.0/24 --deny 192.168.1.100 8080
# 审计日志
gocat listen --audit-log /var/log/gocat-audit.log 8080
```
#### 📜 Lua 脚本
```
# 执行 Lua 脚本
gocat script scripts/examples/http_client.lua
# 端口扫描器脚本
gocat script scripts/examples/port_scanner.lua
# Banner 抓取器
gocat script scripts/examples/banner_grabber.lua
# 自定义 SSL 客户端
gocat script scripts/examples/ssl_client.lua
```
#### 🔌 多端口监听器
```
# 在多个端口上监听
gocat multi-listen --ports 8080,8081,8082
# 监听端口范围
gocat multi-listen --range 8000-8100
# 带命令执行
gocat multi-listen --ports 8080,8081 --exec /bin/bash
# 带统计信息
gocat multi-listen --range 8000-8010 --stats
```
#### 🌐 WebSocket 支持 (新增!)
```
# 启动 WebSocket 服务器
gocat ws server --port 8080
# WebSocket echo 服务器
gocat ws echo --port 8080
# 连接到 WebSocket 服务器
gocat ws connect ws://localhost:8080
# 带压缩的 WebSocket
gocat ws server --port 8080 --compress
# 安全 WebSocket (WSS)
echo "Hello WebSocket!" | gocat ws connect wss://secure.example.com/ws
```
#### 🔌 Unix 域套接字 (新增!)
```
# 监听 Unix socket
gocat unix listen /tmp/gocat.sock
# 连接到 Unix socket
gocat unix connect /tmp/gocat.sock
# Unix socket echo 服务器
gocat unix echo /tmp/echo.sock
# Datagram socket
gocat unix listen --type datagram /tmp/dgram.sock
# 带自定义权限
gocat unix listen --permissions 0600 /tmp/secure.sock
```
#### 📊 Prometheus 指标 (新增!)
```
# 启动 metrics 导出器
gocat metrics --port 9090
# 带自定义 namespace
gocat metrics --namespace myapp --subsystem network
# 访问 metrics
curl http://localhost:9090/metrics
# 健康检查端点
curl http://localhost:9090/health
```
#### 🚇 SSH 隧道
```
# 本地端口转发(在本地访问远程服务)
gocat tunnel --ssh user@server --local 8080 --remote localhost:80
# 远程端口转发(将本地服务暴露到远程)
gocat tunnel --ssh user@server --reverse --local 3000 --remote 8080
# 动态 SOCKS 代理
gocat tunnel --ssh user@server --dynamic 1080
# 使用 SSH 密钥身份验证
gocat tunnel --ssh user@server --key ~/.ssh/id_rsa --local 8080 --remote 80
```
#### 🌐 DNS 隧道
```
# 启动 DNS tunnel 服务器
gocat dns-tunnel --server --domain tunnel.example.com --listen :53 --target localhost:8080
# 启动 DNS tunnel 客户端
gocat dns-tunnel --client --domain tunnel.example.com --listen :8080
# 使用不同的编码
gocat dns-tunnel --server --domain tunnel.example.com --encoding hex
```
#### 🌐 代理使用
```
# 通过 SOCKS 代理连接
gocat connect --proxy socks5://proxy.example.com:1080 target.com 80
# 通过 HTTP 代理连接
gocat connect --proxy http://proxy.example.com:8080 target.com 443
```
#### 🔒 安全连接
```
# SSL/TLS 连接
gocat connect --ssl example.com 443
# 带证书验证
gocat connect --ssl --verify-cert example.com 443
# 自定义 CA 证书
gocat connect --ssl --ca-cert /path/to/ca.pem example.com 443
```
#### 📊 监控与日志
```
# 详细输出
gocat -v connect example.com 80
# 调试模式
gocat --debug listen 8080
# 记录日志到文件
gocat --log-file /var/log/gocat.log listen 8080
# JSON 输出
gocat --output json scan example.com 1-1000
```
## 📖 文档
### 📋 命令参考
#### 🔗 连接命令
```
gocat connect [OPTIONS] HOST PORT
Options:
-s, --shell SHELL Shell to use for command execution
-t, --timeout DURATION Connection timeout (default: 30s)
-r, --retry COUNT Number of retry attempts (default: 3)
-k, --keep-alive Enable keep-alive
-p, --proxy URL Proxy URL (socks5:// or http://)
-S, --ssl Use SSL/TLS
-C, --verify-cert Verify SSL certificate
-c, --ca-cert FILE CA certificate file
-u, --udp Use UDP instead of TCP
-6, --ipv6 Force IPv6
-4, --ipv4 Force IPv4
```
#### 👂 监听命令
```
gocat listen [OPTIONS] PORT
Options:
-e, --exec COMMAND Execute command for each connection
-i, --interactive Interactive mode
-l, --local Local interactive mode
-b, --bind ADDRESS Bind to specific address (default: 0.0.0.0)
-k, --keep-alive Keep connections alive
-m, --max-conn COUNT Maximum concurrent connections (default: 10)
-t, --timeout DURATION Connection timeout (default: 0 = no timeout)
-u, --udp Use UDP instead of TCP
-6, --ipv6 Force IPv6
-4, --ipv4 Force IPv4
-S, --ssl Use SSL/TLS
-K, --ssl-key FILE SSL private key file
-C, --ssl-cert FILE SSL certificate file
```
#### 🔍 扫描命令
```
gocat scan [OPTIONS] HOST PORTS
Options:
-t, --timeout DURATION Port scan timeout (default: 3s)
-c, --concurrent COUNT Concurrent scans (default: 100)
-u, --udp Scan UDP ports
-T, --tcp Scan TCP ports (default)
-A, --all Scan both TCP and UDP
-o, --output FORMAT Output format (text, json, xml)
-v, --verbose Verbose output
-q, --quiet Quiet mode (only open ports)
```
### 🔧 配置
GoCat 支持 YAML 或 JSON 格式的配置文件:
```
# ~/.gocat.yml
defaults:
timeout: 30s
retry: 3
keep_alive: true
logging:
level: info
file: /var/log/gocat.log
format: json
network:
ipv6: false
buffer_size: 4096
security:
verify_cert: true
ca_cert: /etc/ssl/certs/ca-certificates.crt
```
### 🎨 颜色主题
自定义输出颜色:
```
# ~/.gocat-theme.yml
colors:
success: green
error: red
warning: yellow
info: blue
debug: gray
highlight: cyan
```
## 🔧 开发
### 🏗️ 构建
```
# 克隆仓库
git clone https://github.com/ibrahmsql/gocat.git
cd gocat
# 安装依赖
make deps
# 构建
make build
# 运行测试
make test
# 带覆盖率运行
make test-coverage
# Lint 代码
make lint
# 为所有平台构建
make build-all
```
### 🧪 测试
```
# 运行所有测试
make test
# 带 race 检测运行测试
make test-race
# 运行基准测试
make test-bench
# 生成覆盖率报告
make test-coverage
open coverage/coverage.html
```
### 🔍 代码质量
```
# 格式化代码
make fmt
# 运行 linter
make lint
# 安全扫描
make security
# 漏洞检查
make vuln
# 所有检查
make check
```
### 🐳 Docker 开发
```
# 构建 Docker 镜像
make docker-build
# 在容器中运行
make docker-run
# 使用 docker-compose 进行开发
docker-compose --profile dev up
# 使用 docker-compose 进行测试
docker-compose --profile test up
```
## 🤝 贡献
我们欢迎各种贡献!有关详细信息,请参阅我们的[贡献指南](CONTRIBUTING.md)。
### 🚀 快速贡献步骤
1. **Fork** 本仓库
2. **创建** 一个特性分支:`git checkout -b feature/amazing-feature`
3. **提交** 您的更改:`git commit -m 'Add amazing feature'`
4. **推送** 到该分支:`git push origin feature/amazing-feature`
5. **开启** 一个 Pull Request
### 🐛 Bug 报告
发现 Bug?请[创建一个 issue](https://github.com/ibrahmsql/gocat/issues/new?template=bug_report.yml),并提供以下信息:
- 重现步骤
- 预期与实际的行为
- 系统信息
- 日志输出(如果适用)
### 💡 功能请求
有好的想法?[请求一个新功能](https://github.com/ibrahmsql/gocat/issues/new?template=feature_request.yml),并提供:
- 用例描述
- 建议的解决方案
- 考虑过的替代方案
## 📊 性能
### 🚀 基准测试
| 操作 | GoCat | 传统 nc | 提升 |
|-----------|-------|----------------|-------------|
| TCP 连接 | 0.5ms | 1.2ms | **快 2.4 倍** |
| 文件传输 (1GB) | 45s | 67s | **快 1.5 倍** |
| 端口扫描 (1000 个端口) | 2.3s | 8.7s | **快 3.8 倍** |
| 内存使用 | 8MB | 15MB | **少 47%** |
### 📈 可扩展性
- **并发连接**:最多 10,000 个并发连接
- **吞吐量**:在现代硬件上可达 10Gbps+
- **内存效率**:无论连接数量多少,内存使用量保持恒定
- **CPU 使用率**:通过 goroutines 实现多核优化
## 🔒 安全
### 🛡️ 安全特性
- **输入验证**:所有输入均经过验证和清理
- **缓冲区溢出保护**:安全的缓冲区处理
- **速率限制**:防御 DoS 攻击
- **安全默认设置**:安全第一的配置
- **审计日志**:全面的安全事件日志
### 🔐 加密
- **TLS 1.3**:支持最新的 TLS 协议
- **证书验证**:完整的证书链验证
- **自定义 CA**:支持自定义证书颁发机构
- **完美前向保密**:临时密钥交换
### 🚨 报告安全问题
请将安全漏洞报告发送至 [security@gocat.dev](mailto:ibrahimsql@proton.me)。请勿为安全问题创建公开的 issue。
## 📜 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 🙏 致谢
- **原始 netcat** 的作者 Hobbit 提供的灵感
- **Go 社区** 提供的出色生态系统
- **贡献者** 们让这个项目变得更好
- **用户** 们提供的反馈和 Bug 报告
## 📞 支持
- 📖 **文档**:[docs.gocat.dev](https://docs.gocat.dev)
- 💬 **Discord**:[加入我们的社区](https://discord.gg/gocat)
- 🐛 **Issues**:[GitHub Issues](https://github.com/ibrahmsql/gocat/issues)
- 📧 **电子邮件**:[support@gocat.dev](mailto:ibrahimsql@proton.me)
- 🐦 **Twitter**:[@GoCatTool](https://twitter.com/GoCatTool)
[](https://golang.org)
[](LICENSE)
[](https://github.com/ibrahmsql/gocat/releases)
[](https://github.com/ibrahmsql/gocat/actions)
**一个现代化、功能丰富的 netcat 替代方案,使用 Go 编写**
[🚀 快速开始](#-quick-start) • [📖 文档](#-documentation) • [💾 安装](#-installation) • [🎯 特性](#-features) • [🔧 用法](#-usage) • [🤝 贡献](#-contributing)
## 🌟 概述
**GoCat** 是一个现代化、跨平台的 netcat 替代方案,使用 Go 编写。它提供了传统 netcat 的所有功能,并具有额外的特性、更高的性能和安全性。无论您是网络管理员、安全专业人员还是开发人员,GoCat 都能为您提供网络通信、调试和测试所需的工具。
### ✨ 为什么选择 GoCat?
- 🚀 快速且轻量:使用 Go 构建以获得最佳性能
- 🌐 跨平台:支持 Linux、macOS、Windows 和 FreeBSD
## 🎬 演示
### 版本与诊断
点击展开
 ``` gocat version # Human-readable version gocat version --json # Machine-readable build info gocat doctor # Environment diagnostics gocat verify # Self-test smoke checks ```点击展开
 ``` gocat console # Launch interactive REPL # 命令:listen, sessions, interact, exec, upgrade, # upload, download, spawn, maintain, agent, # portfwd, modules, run, payloads, set, show ```点击展开
 ``` gocat scan localhost 22,80,443,8080 gocat scan -v localhost 1-1024 gocat scan --timeout 2s --concurrent 200 example.com 1-65535 ```点击展开
 ``` gocat payload 10.10.14.5 4444 # All payloads gocat payload 10.10.14.5 4444 --type bash # Specific type gocat payload 10.10.14.5 4444 --type powershell --encode ```点击展开
 ``` gocat listen 8080 # Simple listener gocat listen --session --auto-upgrade 4444 # Session mode echo 'Hello!' | gocat connect localhost 8080 ```点击展开
 ``` gocat console > listen 4444 > sessions # List active sessions > interact 1 # Attach to session (F12 to detach) > upgrade 1 auto # Upgrade to PTY > spawn 1 # Spawn new reverse shell > maintain 2 # Keep 2 sessions per host > agent 1 # Deploy Python agent > portfwd 1 8080 127.0.0.1:80 # Port forward through agent ```点击展开
 ``` gocat transfer send --progress --checksum file.bin host 9999 gocat transfer receive 9999 output.bin ```点击展开
 ``` gocat stabilize --method all # Show all methods gocat stabilize --method python # Specific method ```
**由 GoCat 团队用 ❤️ 制作**
[⭐ 在 GitHub 上为我们加星](https://github.com/ibrahmsql/gocat) • [🐦 在 Twitter 上关注我们](https://twitter.com/GoCatTool) • [💬 加入 Discord](https://discord.gg/gocat)
标签:EVTX分析, FreeBSD, Golang, Go语言, Netcat替代品, rizin, TCP/IP, UDP, 内存分配, 安全测试, 安全编程, 底层编程, 开源, 攻击性安全, 日志审计, 程序破解, 系统诊断, 网络协议分析, 网络安全, 网络调试, 网络通信, 自动化, 自定义请求头, 请求拦截, 轻量级工具, 运维工具, 隐私保护