Ati-byte/netwatch-scanner
GitHub: Ati-byte/netwatch-scanner
一款用于TCP端口扫描、服务识别和报告生成的多线程Python网络扫描器。
Stars: 1 | Forks: 0
# NetWatch Scanner



一款现代化、多线程的TCP网络扫描器,具有彩色终端输出、横幅抓取功能以及JSON/CSV导出支持。
## 功能特性
- 扫描单个IP、CIDR地址块、IP范围或逗号分隔的目标列表
- 扫描单个端口、端口列表和端口范围
- 快速TCP连接扫描,可配置工作线程数
- 可选的服务横幅抓取功能
- 终端中丰富、彩色的表格输出
- JSON和CSV结果导出
- 基于Argparse的命令行界面,具有清晰的验证
- 兼容Windows和Linux
- 模块化的`src/`包布局
- 单元测试、Ruff代码检查和GitHub Actions持续集成
## 安装
```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
作为本地包安装:
```
pip install .
netwatch-scanner --version
```
Windows PowerShell:
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
## 使用方法
```
netwatch-scanner --targets 192.168.1.10 --ports 22,80,443
```
CIDR扫描:
```
netwatch-scanner -t 192.168.1.0/24 -p 1-1024 -w 200
```
带横幅抓取的IP范围扫描:
```
netwatch-scanner -t 10.0.0.1-10.0.0.50 -p 20-1000 --banner --timeout 0.7
```
多个目标和端口表达式:
```
netwatch-scanner -t 192.168.1.5,192.168.1.10 -p 22,80,443,8000-8100
```
导出JSON或CSV报告:
```
netwatch-scanner -t 127.0.0.1 -p 22,80,443 --format json --output results.json
netwatch-scanner -t 127.0.0.1 -p 22,80,443 --format csv --output results.csv
```
## 截图

## 技术栈
- Python 3.10+
- 标准库网络模块:`socket`, `ssl`, `concurrent.futures`, `ipaddress`
- 用于终端UI的 Rich
- 用于CLI解析的 Argparse
- 用于自动化测试的 Unittest
- 用于代码检查的 Ruff
- 用于CI的 GitHub Actions
## 示例输出
```
+-------------------------------------------------+
| NetWatch Scanner |
| Targets: 1 Ports: 3 Threads: 100 Banner: on |
+-------------------------------------------------+
Open Ports (2) - 0.04s
+-----------------------------------------------+
| Host | Port | Service | Banner |
|-----------+------+---------+------------------|
| 127.0.0.1 | 80 | http | nginx/1.24.0 |
| 127.0.0.1 | 443 | https | HTTP/1.1 200 OK |
+-----------------------------------------------+
```
## CLI 选项
| 选项 | 描述 |
| --- | --- |
| `-t`, `--targets` | 必需。IP、CIDR、IP范围或逗号分隔的目标 |
| `-p`, `--ports` | 端口、端口列表或端口范围。默认值:`1-1024` |
| `-w`, `--workers` | 工作线程数。默认值:`100` |
| `--timeout` | 套接字超时时间(秒)。默认值:`1.0` |
| `-b`, `--banner` | 启用横幅抓取 |
| `-f`, `--format` | 输出格式:`table`, `json`, `csv`。默认值:`table` |
| `-o`, `--output` | 将JSON/CSV结果写入文件 |
| `--no-color` | 禁用彩色终端输出 |
| `--version` | 显示版本信息 |
## Linux注意事项
- 在可靠的本地网络上,降低`--timeout`可以加快扫描速度。
- 根据系统容量增加`--workers`以进行更大规模的扫描。
- TCP连接扫描不需要root权限。
- 对于非常高的并发度,请检查文件描述符限制:
```
ulimit -n
```
## 测试
项目包含标准的`unittest`测试;无需额外的测试依赖。
```
python -m pip install -e ".[dev]"
python -m ruff check .
python -m unittest discover -v
python -m compileall src tests
```
## 项目结构
```
README.md
requirements.txt
screenshots/
docs/
src/
network_scanner/
cli.py
scanner.py
targets.py
ports.py
output.py
exporters.py
exceptions.py
tests/
```
## 路线图
- 更深入的服务特定协议探测
- 可选的进度摘要和扫描指标
- Docker镜像和发布工作流
## 许可证
MIT 许可证。 详情请参见 [LICENSE](LICENSE)。
标签:逆向工具