ibrahmsql/Gocat

GitHub: ibrahmsql/Gocat

一款用 Go 编写的跨平台 netcat 替代工具,集成了端口扫描、加密通信、隧道、会话管理等丰富功能,面向网络调试与安全测试场景。

Stars: 29 | Forks: 6

# 🐱 GoCat
[![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=for-the-badge&logo=go)](https://golang.org) [![License](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](LICENSE) [![Release](https://img.shields.io/github/v/release/ibrahmsql/gocat?style=for-the-badge)](https://github.com/ibrahmsql/gocat/releases) [![Build Status](https://img.shields.io/github/actions/workflow/status/ibrahmsql/gocat/ci.yml?style=for-the-badge)](https://github.com/ibrahmsql/gocat/actions)
GoCat Logo
**一个现代化、功能丰富的 netcat 替代方案,使用 Go 编写** [🚀 快速开始](#-quick-start) • [📖 文档](#-documentation) • [💾 安装](#-installation) • [🎯 特性](#-features) • [🔧 用法](#-usage) • [🤝 贡献](#-contributing)
## 🌟 概述 **GoCat** 是一个现代化、跨平台的 netcat 替代方案,使用 Go 编写。它提供了传统 netcat 的所有功能,并具有额外的特性、更高的性能和安全性。无论您是网络管理员、安全专业人员还是开发人员,GoCat 都能为您提供网络通信、调试和测试所需的工具。 ### ✨ 为什么选择 GoCat? - 🚀 快速且轻量:使用 Go 构建以获得最佳性能 - 🌐 跨平台:支持 Linux、macOS、Windows 和 FreeBSD ## 🎬 演示 ### 版本与诊断
点击展开 ![Version Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/9b8b0ed720205114.gif) ``` gocat version # Human-readable version gocat version --json # Machine-readable build info gocat doctor # Environment diagnostics gocat verify # Self-test smoke checks ```
### 交互式控制台 (Penelope 风格)
点击展开 ![Console Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d62f97f27b205116.gif) ``` gocat console # Launch interactive REPL # 命令:listen, sessions, interact, exec, upgrade, # upload, download, spawn, maintain, agent, # portfwd, modules, run, payloads, set, show ```
### 端口扫描
点击展开 ![Scan Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c5e7698407205118.gif) ``` gocat scan localhost 22,80,443,8080 gocat scan -v localhost 1-1024 gocat scan --timeout 2s --concurrent 200 example.com 1-65535 ```
### 反向 Shell Payload
点击展开 ![Payload Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0d80569d76205120.gif) ``` 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 ```
### 监听与连接
点击展开 ![Listen-Connect Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/291ac9a9a6205122.gif) ``` gocat listen 8080 # Simple listener gocat listen --session --auto-upgrade 4444 # Session mode echo 'Hello!' | gocat connect localhost 8080 ```
### 会话管理
点击展开 ![Session Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0ea0470119205125.gif) ``` 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 ```
### 文件传输
点击展开 ![Transfer Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/37227ed5a7205127.gif) ``` gocat transfer send --progress --checksum file.bin host 9999 gocat transfer receive 9999 output.bin ```
### Shell 稳定化
点击展开 ![Stabilize Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0ef0f1be66205128.gif) ``` gocat stabilize --method all # Show all methods gocat stabilize --method python # Specific method ```
## 核心特性 ### 网络协议 - **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)
**由 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, 内存分配, 安全测试, 安全编程, 底层编程, 开源, 攻击性安全, 日志审计, 程序破解, 系统诊断, 网络协议分析, 网络安全, 网络调试, 网络通信, 自动化, 自定义请求头, 请求拦截, 轻量级工具, 运维工具, 隐私保护