dariushoule/porty-aio

GitHub: dariushoule/porty-aio

一款零依赖、静态编译的跨平台 TCP 端口扫描与转发工具,无需 root 权限和原生抓包库即可在任何主机上运行。

Stars: 0 | Forks: 0

# porty-aio 一款紧凑、零依赖、跨平台的网络工具,可在任何地方直接运行。 单一静态二进制文件。无需 libpcap,无需 Npcap,无需 glibc 绑定,无需 root 权限。它的核心是一个 TCP connect 扫描器,不需要原始套接字或抓包库,此外还包含一个简单的单机 TCP 端口转发器。只需一次 `go build` 即可生成一个二进制文件,你可以直接将其投放并运行在任何 Linux、Windows 或 macOS 主机上。 ## 为什么仅使用 connect 扫描 TCP connect 扫描是唯一一种需要零特权和零原生依赖的扫描模式。坚持这一模式使得 porty-aio 能够成为一个完全静态的二进制文件。 ## 构建(Docker 化,无需本地 Go 工具链) 你只需要 Docker。Go 版本在 `Dockerfile` 中被固定。升级只需修改那一行即可。 ``` # Linux / macOS ./scripts/build.sh # Windows .\scripts\build.ps1 ``` 二进制文件将输出到 `./dist` 目录,每个目标平台一个文件。例如 `porty-aio_linux_amd64` 和 `porty-aio_windows_amd64.exe`。 二进制文件经过 UPX 压缩以最小化体积(约为未压缩大小的三分之一)。macOS(代码签名会拒绝压缩后的二进制文件)和 windows/arm64(UPX 不支持)会跳过 UPX 压缩,因此这些目标平台以未压缩形式发布,体积会更大。传入 `UPX=0` 可在所有平台上进行未压缩的构建。 标记版本或缩小目标平台矩阵: ``` VERSION=0.1.0 ./scripts/build.sh TARGETS="linux/amd64 windows/amd64" ./scripts/build.sh ``` ``` $env:VERSION="0.1.0"; .\scripts\build.ps1 $env:TARGETS="linux/amd64 windows/amd64"; .\scripts\build.ps1 ``` 验证 Linux 产物是否为真正的静态链接: ``` docker run --rm -v "$PWD/dist":/d alpine sh -c 'apk add -q file && file /d/porty-aio_linux_amd64' # => ... 静态链接 ... ``` ## 测试 测试在同一构建容器中运行,因此无需本地 Go 工具链: ``` # Linux / macOS ./scripts/test.sh # Windows .\scripts\test.ps1 ``` 这涵盖了端口/目标/CIDR 解析的单元测试,以及一个集成测试,该测试会启动真实的回环监听器,并断言扫描器报告出完全一致的开放端口集合。 ## 用法 ``` porty-aio [flags] host, IP, or CIDR (comma-separated): 10.0.0.0/24,host.lan flags: -p ports: 'top', 'all' (or '-'), '22,80,443', or '1-1024' (default "top") -c maximum concurrent connections (default 512) -t per-connection timeout (default 1.5s) -json emit results as JSON lines -version ``` 标志参数必须位于目标之前(标准的 Go flag 解析会在遇到第一个非标志参数时停止)。 示例: ``` porty-aio 10.0.0.0/24 porty-aio -p 1-65535 -c 1024 192.168.1.10 porty-aio -p 22,80,443 -json 10.0.0.0/24 > open.jsonl ``` ## 转发 在主机上运行 porty,将本地监听器中继到目标地址,该目标地址可以是同一主机上仅限回环的服务,也可以是该主机能够访问到的另一台机器。 没有隧道,也不需要第二个实例。 ``` porty-aio forward --listen --to [--listen ... --to ...] ``` ``` # 将另一台机器的服务暴露到本机 porty-aio forward --listen :8080 --to 10.0.0.5:80 # 将仅限 loopback 的服务暴露到网络 porty-aio forward --listen :3306 --to 127.0.0.1:3306 # 同时进行多个转发 porty-aio forward --listen :8080 --to 10.0.0.5:80 --listen :2222 --to 10.0.0.9:22 ``` 当省略主机地址时(`:8080`),`--listen` 会绑定到所有网络接口;指定主机地址则绑定到单个网络接口(`127.0.0.1:8080`)。仅支持 TCP。 ## 布局 ``` cmd/porty-aio/ CLI entry point (scan + forward subcommands) internal/scan/ stdlib-only connect-scan engine internal/forward/ stdlib-only TCP port forwarder Dockerfile pinned Go toolchain (single source of truth for the version) scripts/ build.sh host wrapper (Linux/macOS) build.ps1 host wrapper (Windows) build-matrix.sh in-container cross-compile loop (the real build logic) test.sh / test.ps1 run the test suite in the build container ```
标签:EVTX分析, Go语言, TCP, 插件系统, 数据统计, 日志审计, 程序破解, 端口扫描, 网络工具, 请求拦截, 静态二进制