Ati-byte/netwatch-scanner

GitHub: Ati-byte/netwatch-scanner

一款用于TCP端口扫描、服务识别和报告生成的多线程Python网络扫描器。

Stars: 1 | Forks: 0

# NetWatch Scanner ![Python](https://img.shields.io/badge/python-3.10%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![CI](https://img.shields.io/badge/CI-GitHub%20Actions-black) 一款现代化、多线程的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 ``` ## 截图 ![NetWatch Scanner 终端输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/56aadb7b29144330.svg) ## 技术栈 - 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)。
标签:逆向工具