Windows
macOS
Linux
Docker
从源码安装
Golang

Windows 安装指南

Port Rocket 可以通过多种方式在 Windows 上安装。选择最适合您需求的方法。

使用 MSI 安装程序

对于大多数 Windows 用户,推荐使用 MSI 安装程序进行安装。

  1. 访问 GitHub Releases 页面
  2. 下载最新的 go-port-rocket-windows-amd64.msi 文件
  3. 双击安装程序并按照向导进行安装
  4. 安装完成后,Port Rocket 将自动添加到系统 PATH 中

使用 Scoop

Scoop 是 Windows 的命令行安装程序,提供了简单的方式安装应用程序。

# 安装 Scoop(如果尚未安装)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

# 安装 Port Rocket
scoop bucket add extras
scoop install go-port-rocket

使用 Chocolatey

Chocolatey 是另一个流行的 Windows 包管理器。

# 安装 Chocolatey(如果尚未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 安装 Port Rocket
choco install go-port-rocket

便携版(免安装)

如果您希望不进行安装而直接使用,可以下载便携版本。

  1. 访问 GitHub Releases 页面
  2. 下载最新的 go-port-rocket-windows-amd64.zip 文件
  3. 解压缩到您选择的目录
  4. 您可以直接运行 go-port-rocket.exe,或者将其目录添加到 PATH 环境变量中以便全局访问

macOS 安装指南

在 macOS 上,您可以使用 Homebrew 包管理器轻松安装 Port Rocket,也可以使用其他方法。

使用 Homebrew

使用 Homebrew 是在 macOS 上安装 Port Rocket 的最简单方法。

# 安装 Homebrew(如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 Port Rocket
brew tap cyberspacesec/go-port-rocket
brew install go-port-rocket

使用预编译二进制文件

您也可以下载预编译的二进制文件并手动安装。

# 下载最新版本
curl -L https://github.com/cyberspacesec/go-port-rocket/releases/latest/download/go-port-rocket-darwin-amd64.tar.gz -o go-port-rocket.tar.gz

# 解压缩
tar -xzf go-port-rocket.tar.gz

# 移动到 /usr/local/bin 目录(需要管理员权限)
sudo mv go-port-rocket /usr/local/bin/

# 验证安装
go-port-rocket --version

使用 MacPorts

如果您使用 MacPorts 而不是 Homebrew,可以通过以下方式安装:

# 安装 Port Rocket
sudo port install go-port-rocket

Linux 安装指南

Linux 有多种发行版,您可以根据自己使用的发行版选择适当的安装方法。

Ubuntu/Debian

在 Ubuntu、Debian 及其衍生发行版上,您可以使用 DEB 包安装。

# 下载 DEB 包
wget https://github.com/cyberspacesec/go-port-rocket/releases/latest/download/go-port-rocket_amd64.deb

# 安装
sudo dpkg -i go-port-rocket_amd64.deb

# 如果有依赖问题,运行
sudo apt-get -f install

或者使用 APT 仓库(推荐):

# 添加 GPG 密钥
wget -qO- https://repo.cyberspacesec.io/gpg | sudo apt-key add -

# 添加仓库
echo "deb https://repo.cyberspacesec.io/apt stable main" | sudo tee /etc/apt/sources.list.d/go-port-rocket.list

# 更新仓库并安装
sudo apt update
sudo apt install go-port-rocket

Fedora/RHEL/CentOS

在 Fedora、RHEL、CentOS 及其衍生发行版上,您可以使用 RPM 包安装。

# 下载 RPM 包
wget https://github.com/cyberspacesec/go-port-rocket/releases/latest/download/go-port-rocket_amd64.rpm

# 安装
sudo rpm -i go-port-rocket_amd64.rpm

或者使用 YUM/DNF 仓库(推荐):

# 添加仓库
sudo tee /etc/yum.repos.d/go-port-rocket.repo << EOF
[go-port-rocket]
name=Port Rocket Repository
baseurl=https://repo.cyberspacesec.io/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.cyberspacesec.io/gpg
EOF

# 安装
sudo dnf install go-port-rocket
# 或者在旧版系统上
# sudo yum install go-port-rocket

Arch Linux

在 Arch Linux 上,您可以从 AUR 安装。

# 使用 yay(如果已安装)
yay -S go-port-rocket

# 或者手动从 AUR 安装
git clone https://aur.archlinux.org/go-port-rocket.git
cd go-port-rocket
makepkg -si

Snap 包

如果您的发行版支持 Snap,可以使用以下命令安装:

# 安装 Port Rocket
sudo snap install go-port-rocket

通用 Linux 二进制文件

对于其他 Linux 发行版,您可以下载预编译的二进制文件:

# 下载最新版本
wget https://github.com/cyberspacesec/go-port-rocket/releases/latest/download/go-port-rocket-linux-amd64.tar.gz

# 解压缩
tar -xzf go-port-rocket-linux-amd64.tar.gz

# 移动到 /usr/local/bin 目录
sudo mv go-port-rocket /usr/local/bin/

# 添加执行权限
sudo chmod +x /usr/local/bin/go-port-rocket

# 验证安装
go-port-rocket --version

Docker 安装指南

如果您熟悉 Docker,可以使用容器化版本的 Port Rocket。这种方法适用于任何支持 Docker 的平台。

拉取并运行 Docker 镜像

使用以下命令拉取最新的 Docker 镜像:

# 拉取镜像
docker pull cyberspacesec/go-port-rocket:latest

# 运行(网络扫描需要特殊权限)
docker run --rm --network host --cap-add=NET_RAW --cap-add=NET_ADMIN cyberspacesec/go-port-rocket

# 执行扫描示例
docker run --rm --network host --cap-add=NET_RAW --cap-add=NET_ADMIN cyberspacesec/go-port-rocket scan -t 192.168.1.1 -p 80,443,8080

使用 Docker Compose

创建 docker-compose.yml 文件:

version: '3'
services:
  go-port-rocket:
    image: cyberspacesec/go-port-rocket:latest
    network_mode: host
    cap_add:
      - NET_RAW
      - NET_ADMIN
    command: scan -t 192.168.1.1 -p 80,443,8080

然后运行:

docker-compose up

为什么Docker容器需要特权模式

Port Rocket作为一个端口扫描工具,需要执行一些低级网络操作,这些操作在Docker容器中默认是受限的。

特权需求的技术原因

  • 原始套接字(Raw Sockets)操作:SYN扫描、FIN扫描、NULL扫描等高级端口扫描方式需要使用原始套接字,这需要NET_RAW权限。
  • 网络数据包捕获:项目使用libpcap库来捕获和解析网络数据包,这也需要特殊权限。
  • TCP/IP协议栈操作:一些扫描技术需要直接控制TCP/IP协议栈,这些操作需要额外的网络权限。

Docker安全机制

Docker默认使用一套受限的权限运行容器,以提高安全性。虽然我们在Dockerfile中通过setcap命令设置了二进制文件的capabilities,但这些权限在容器内仍然需要显式授予给容器本身。

推荐的Docker运行方式

建议使用最小权限原则,只授予必要的capabilities:

docker run --rm --cap-add=NET_RAW --cap-add=NET_ADMIN --network host go-port-rocket scan -t 127.0.0.1 -p 80,443

如果上述方法不起作用,可以使用完全特权模式,但这在安全性方面不是最佳实践:

docker run --rm --privileged --network host go-port-rocket scan -t 127.0.0.1 -p 80,443

注意:使用特权模式运行Docker容器会赋予容器几乎与宿主机相同的权限,这可能带来安全风险。请在受信任的环境中谨慎使用。

从源码安装

如果您希望从源代码构建最新版本,可以按照以下步骤操作:

从源码构建

获取最新版本的源代码并自行编译:

# 克隆仓库
git clone https://github.com/cyberspacesec/go-port-rocket.git
cd go-port-rocket

# 安装依赖(根据您的操作系统选择合适的命令)
# macOS:      brew install libpcap
# Ubuntu:     sudo apt install libpcap-dev
# CentOS:     sudo yum install libpcap-devel
# Arch Linux: sudo pacman -S libpcap

# 构建项目
go build -o go-port-rocket

# 可选:安装到系统路径
sudo install -m755 go-port-rocket /usr/local/bin/

Golang 安装指南

如果您是 Golang 开发者,可以直接使用 Go 工具链安装 Port Rocket:

使用 go install

可以使用 Go 的包管理工具直接安装最新版本:

# 安装最新版本
go install github.com/cyberspacesec/go-port-rocket@latest

# 如果您需要安装特定版本
go install github.com/cyberspacesec/go-port-rocket@v1.0.0

安装后可执行文件将位于您的 GOPATH/bin 目录下。

作为依赖引入您的项目

如果您想在自己的 Go 项目中使用 Port Rocket 作为库:

# 添加依赖
go get github.com/cyberspacesec/go-port-rocket

# 更新到最新版本
go get -u github.com/cyberspacesec/go-port-rocket

然后在代码中引入:

import "github.com/cyberspacesec/go-port-rocket/pkg/scanner"

func main() {
    // 创建新的扫描器
    scanner := scanner.New()
    
    // 配置扫描选项
    options := scanner.DefaultOptions()
    options.Target = "192.168.1.1"
    options.Ports = []int{80, 443, 8080}
    
    // 执行扫描
    results, err := scanner.Scan(options)
    if err != nil {
        panic(err)
    }
    
    // 处理结果
    for _, result := range results {
        fmt.Printf("Port %d: %s\n", result.Port, result.State)
    }
}

开发版本

如果您想使用最新的开发版本,可以直接从代码库构建:

# 克隆仓库
git clone https://github.com/cyberspacesec/go-port-rocket.git
cd go-port-rocket

# 安装依赖
go mod download

# 构建
go build -o go-port-rocket cmd/go-port-rocket/main.go

# 运行
./go-port-rocket --help

验证安装

安装完成后,您可以使用以下命令验证安装:

# 显示版本信息
go-port-rocket --version

# 显示帮助信息
go-port-rocket --help

故障排除

如果您在安装过程中遇到问题,请参考以下常见问题及解决方法:

权限问题

某些扫描功能需要管理员/root权限才能运行。如果遇到权限错误,请尝试使用管理员权限运行程序。

  • Windows: 右键点击程序,选择"以管理员身份运行"
  • Linux/macOS: 使用 sudo go-port-rocket

缺少依赖

如果遇到缺少依赖的错误,请确保安装了所需的依赖项:

  • Windows: 确保已安装 Microsoft Visual C++ Redistributable
  • Linux: 安装 libpcap 库(libpcap-devlibpcap-devel
  • macOS: 安装 libpcap(brew install libpcap

其他问题

如果您遇到其他问题,可以: