14 个版本
0.1.13 | 2024年7月25日 |
---|---|
0.1.11 | 2024年5月6日 |
0.1.9 | 2024年3月31日 |
0.1.7 | 2023年12月30日 |
0.1.3 | 2023年7月30日 |
#143 在 命令行实用程序
174 每月下载量
210KB
1.5K SLoC
havn
一个快速且可配置的默认合理的端口扫描器
描述
havn
- ˈheɪvən
|| "HAY" + "vuhn"
- 是一个轻量级自包含的端口扫描应用程序,用 Rust 编写,使用异步 Tokio 多线程提供快速和可靠的结果。具有合理的默认值和可配置选项,用户可以根据自己的需求自定义扫描过程。它设计和构建为与多个平台兼容,包括 Docker,并且二进制文件大小小于 1mb。
下载 & 安装
Cargo
发布在 crates.io,因此如果您已安装 cargo,只需运行
cargo install havn
Arch Linux
havn
可在 官方仓库 中找到。您可以使用以下命令安装它
pacman -S havn
Docker
发布在 Docker Hub 和 ghcr.io,并提供了为 linux/amd64
、linux/arm64
和 linux/arm/v6
构建的镜像
通过 Docker Hub
docker run --rm -it mrjackwills/havn:latest #[options]
通过 ghcr.io
docker run --rm -it ghcr.io/mrjackwills/havn:latest #[options]
❗注意:要扫描 Docker 主机本身,您必须通过包含选项来授予访问权限
--network=host
预构建
查看 预构建的二进制文件
或,下载 & 安装 (x86_64 一行命令)
wget https://www.github.com/mrjackwills/havn/releases/latest/download/havn_linux_x86_64.tar.gz &&
tar xzvf havn_linux_x86_64.tar.gz havn &&
install -Dm 755 havn -t "${HOME}/.local/bin" &&
rm havn_linux_x86_64.tar.gz havn
或,用于自动平台选择、下载和安装 (到 $HOME/.local/bin
)
在 shell 中运行之前,应始终验证 脚本内容
curl https://raw.githubusercontent.com/mrjackwills/havn/main/install.sh | bash
运行
havn #[options]
可用的命令行参数
参数 | 结果 |
---|---|
[字符串] |
要扫描的地址或IP。[默认:127.0.0.1 ] |
-a |
扫描每个端口,从1 到65535 ,与-p 冲突 |
-c[数字] |
应发起多少个并发请求。[默认:1000 ] |
-m |
单色模式 - 不会对输出着色 [默认:false ] |
-p[数字/字符串] |
要扫描的端口号范围,接受范围:-300 ,101-200 ,或单个端口80 ,与-a 冲突 [默认:-1000 ] |
-r[数字] |
每个端口的重试次数。[默认:1 ] |
-t[数字] |
每个请求的超时时间(毫秒)。[默认:2000 ] |
-6 |
扫描IPv6地址而不是IPv4,[默认:false ] |
示例
# Scan github.com using the default settings
havn github.com
# Scan default address [127.0.0.1], all ports [1-65535],
# 2048 concurrent requests, 500ms timeout, 0 retries, IPv4
havn -a -c 2048 -t 500 -r 0
# Scan www.google.com, ports 10-600,
# 500 concurrent requests, 3000ms timeout, default retries [1], IPv4
havn www.google.com -p 10-600 -c 500 -t 3000
# Scan www.digitalocean.com, ports 1-100
# default concurrent requests[1000], 1000ms timeout, and use IPv6 address
havn www.digitalocean.com -p -100 -t 1000 -6
# Scan www.bbc.com, port 443 only
# default concurrent requests[1000], default timeout[2000ms], 6 retries, IPv4
havn www.bbc.com -p 443 -r 6
待办事项
- 扫描UDP端口,目前仅支持TCP
- 允许扫描多个地址/IP
- 监控响应时间来自动修改请求设置
- 可配置选项以禁用二次扫描
- 调试选项以显示更详细的输出
- 提高Windows性能
- 发布到npm
测试
一些测试将打开端口80,如果您的系统上该端口已经打开,则可能会引起问题
cargo test -- --test-threads=1
构建步骤
x86_64
cargo build --release
跨平台
使用Docker
64位ARM(pi 4,pi zero w 2)
cross build --target aarch64-unknown-linux-musleabihf --release
32位pi(pi zero w)
cross build --target arm-unknown-linux-musleabihf --release
Windows x86_64
cross build --target x86_64-pc-windows-gnu --release
无需Docker
64位ARM(pi 4,pi zero w 2)
编辑~/.cargo/config
[target.aarch64-unknown-linux-musl]
linker = "rust-lld"
rustup target add aarch64-unknown-linux-musl
cargo build --target aarch64-unknown-linux-musl --release
32位pi(pi zero w)
编辑~/.cargo/config
[target.arm-unknown-linux-musleabihf]
linker = "arm-linux-gnueabihf-ld"
sudo apt update && sudo apt install gcc-arm-linux-gnueabihf -y
rustup target add arm-unknown-linux-musleabihf
cargo build --target arm-unknown-linux-musleabihf --release
Windows(在Linux上构建)
编辑~/.cargo/config
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-gcc-ar"
sudo apt update && sudo apt install mingw-w64
rustup target add x86_64-pc-windows-gnu
cargo build --target x86_64-pc-windows-gnu --release
在其他平台上未测试
依赖关系
~4–13MB
~138K SLoC