Byte-Cell/NetScanner
GitHub: Byte-Cell/NetScanner
一款基于 Rust 语言开发的高效命令行网络扫描工具,专注于快速探测存活主机与开放端口。
Stars: 0 | Forks: 0
# NetScanner
NetScanner 是一个用 Rust 编写的轻量级异步网络扫描器。
它用于执行主机发现,并在网络范围内进行并发 TCP 端口扫描。
该项目展示了使用 Tokio 进行异步执行的现代 Rust 网络技术。
## 功能
* 基于 CIDR 的网络扫描
* 使用 TCP 探针进行主机发现
* 并发端口扫描
* 可配置的并发限制
* 常见端口的服务检测
* 使用 Tokio 进行异步任务执行
* 使用 Clap 进行 CLI 参数解析
## 工作原理
NetScanner 使用**两阶段扫描过程**:
### 1. 主机发现
对目标网络中的每个 IP 地址的常见端口(80 和 443)进行探测,以确定主机是否可达。
### 2. 端口扫描
仅在发现阶段有响应的主机上扫描端口,这大大减少了扫描时间。
## 安装说明
克隆仓库:
```
git clone https://github.com/Byte-Cell/netscanner.git
cd netscanner
```
构建项目:
```
cargo build --release
```
运行扫描器:
```
cargo run -- [options]
```
## 用法
```
cargo run -- -p --concurrency
```
### 示例
扫描本地网络的常见 Web 端口:
```
cargo run -- 10.0.0.0/24 -p 80,443
```
扫描多个端口:
```
cargo run -- 10.0.0.0/24 -p 22,80,443,8080
```
扫描端口范围:
```
cargo run -- 10.0.0.0/24 -p 1-1000
```
限制并发:
```
cargo run -- 10.0.0.0/24 -p 22,80 --concurrency 50
```
## CLI 选项
| 选项 | 描述 | 默认值 |
| ------------- | ---------------------------- | -------- |
| network | 以 CIDR 表示法表示的目标网络 | 必填 |
| -p, --ports | 要扫描的端口(逗号或范围) | 80 |
| --concurrency | 最大并发扫描数 | 100 |
## 示例输出
```
Host alive: 10.0.0.1
Host alive: 10.0.0.158
10.0.0.1:80 OPEN HTTP
10.0.0.1:443 OPEN HTTPS
10.0.0.158:22 OPEN SSH
```
## 使用技术
* Rust
* Tokio(异步运行时)
* Clap(CLI 参数解析)
* ipnetwork(CIDR 解析)
## 项目结构
```
src/
└── main.rs
```
主要组件包括:
* CLI 参数解析
* 主机发现
* 并发端口扫描
* 服务检测
* 异步任务管理
## 教育目的
构建此项目是为了探索:
* 异步 Rust 编程
* 网络扫描技术
* 使用信号量进行并发控制
* 使用 channel 进行消息传递
## 法律声明
此工具仅供**教育目的和授权的网络测试使用**。
未经许可,请勿扫描网络。
## 未来改进
潜在的增强功能包括:
* UDP 扫描
* banner grabbing
* OS fingerprinting
* JSON 输出
* 进度指示器
* IPv6 扫描
标签:Rust, Tokio, 主机发现, 命令行工具, 异步网络扫描, 插件系统, 数据泄露防护, 数据统计, 端口扫描, 网络探测, 网络流量审计, 通知系统