avishkar-jadhav/network-vulnerability-scanner
GitHub: avishkar-jadhav/network-vulnerability-scanner
一款面向初学者的 Python 网络漏洞扫描器,通过 TCP 端口扫描与服务检测识别暴露的网络服务并进行风险分级和报告生成。
Stars: 0 | Forks: 0
# 网络漏洞扫描器
一个生产级的基于 Python 的网络漏洞扫描器,专为网络安全学习、初级面试、简历项目和 GitHub 作品集展示而设计。
本项目接受 IP 地址或主机名,将主机名解析为 IP 地址,扫描自定义范围内的 TCP 端口,检测常见服务,执行基本的风险分析,并生成 TXT 和 JSON 报告。
## 项目概述
网络漏洞扫描器是一个使用 Python 3.12+ 构建的命令行安全评估工具。它执行基于 TCP 连接的端口扫描,并将发现的开放端口映射到知名服务,例如 HTTP、HTTPS、SSH、FTP、SMTP、DNS、MySQL、PostgreSQL、SMB、RDP、Telnet、POP3 和 IMAP。
该扫描器有助于识别暴露的网络服务,并提供对初学者友好的风险分析,以便用户了解为什么某些开放端口可能会增加攻击面。
## 业务问题
组织经常在未完全了解安全影响的情况下暴露网络服务。开放端口可能会暴露正在运行的应用程序、远程管理界面、数据库或不安全的遗留协议。
对于小型企业、学生和初级安全团队来说,昂贵商业扫描器对于基本的安全意识和学习可能是不必要的。一个简单、易于解释的扫描器可以帮助用户了解:
- 哪些端口是开放的
- 哪些服务可能被暴露了
- 为什么某些服务比其他服务风险更高
- 如何记录扫描结果以供审查
## 业务解决方案
本项目提供了一个轻量级、模块化且易读的漏洞扫描工作流:
- 接受用户输入的主机名或 IP 地址
- 将主机名解析为 IP 地址
- 验证自定义 TCP 端口范围
- 使用 Python socket 编程扫描端口
- 使用端口到服务的映射检测常见服务
- 根据服务暴露情况分配风险等级
- 生成具有可读颜色的控制台输出
- 以 TXT 和 JSON 格式保存扫描证据
- 记录扫描器活动和错误以供故障排除
## 架构
本项目采用模块化架构,以便每个组件都有明确的职责。
```
User Input
|
v
Input Validation
|
v
Hostname Resolution
|
v
TCP Port Scanner
|
v
Service Detection
|
v
Risk Analysis
|
v
Console Output + TXT Report + JSON Report + Logs
```
### 组件职责
- `main.py`:应用程序入口点和用户工作流编排
- `config.py`:集中配置值,例如默认超时和已知服务
- `scanner/port_scanner.py`:TCP socket 扫描逻辑
- `scanner/service_detector.py`:基于端口号的常见服务检测
- `scanner/risk_analyzer.py`:风险分类和说明
- `scanner/report_generator.py`:TXT 和 JSON 报告生成
- `utils/validator.py`:IP、主机名和端口范围验证
- `utils/helpers.py`:共享辅助函数
- `utils/logger.py`:日志设置
- `reports/`:生成的扫描报告和示例报告
## 文件夹结构
```
Cybersecurity Project/
|
├── README.md
├── requirements.txt
├── main.py
├── config.py
├── scanner/
│ ├── __init__.py
│ ├── port_scanner.py
│ ├── service_detector.py
│ ├── risk_analyzer.py
│ └── report_generator.py
├── utils/
│ ├── helpers.py
│ ├── validator.py
│ └── logger.py
└── reports/
├── sample_report.txt
└── sample_report.json
```
## 环境要求
- Python 3.12 或更高版本
- Windows、Linux 或 macOS
- 仅在扫描公共授权目标时需要互联网访问
- 拥有扫描所选目标的权限
Python 包依赖项列在 `requirements.txt` 中。
## 安装说明
克隆或打开项目文件夹:
```
cd "Cybersecurity Project"
```
创建虚拟环境:
```
python -m venv .venv
```
在 Windows 上激活虚拟环境:
```
.venv\Scripts\activate
```
在 Linux 或 macOS 上激活虚拟环境:
```
source .venv/bin/activate
```
安装依赖项:
```
pip install -r requirements.txt
```
## 运行方式
运行扫描器:
```
python main.py
```
示例输入:
```
Target: localhost
Port range: 1-100
```
```
Target: 127.0.0.1
Port range: 1-1024
```
```
Target: scanme.nmap.org
Port range: 20-80
```
## 示例输出
```
============================================================
Network Vulnerability Scanner
============================================================
Target entered : scanme.nmap.org
Resolved IP address : 45.33.32.156
Port range : 20-80
[OPEN] 22/tcp SSH Risk: Medium
[OPEN] 80/tcp HTTP Risk: Medium
Scan completed.
TXT report saved : reports/scan_report_20260710_103500.txt
JSON report saved : reports/scan_report_20260710_103500.json
```
## 截图占位符
在本地运行扫描器后添加截图:
- 控制台扫描输入
- 彩色扫描输出
- 生成的 TXT 报告
- 生成的 JSON 报告
## 功能
- 接受 IP 地址和主机名
- 将主机名解析为 IP 地址
- 支持自定义 TCP 端口范围
- 执行 TCP 连接扫描
- 处理连接超时
- 检测常见服务
- 执行基本风险分析
- 使用 Colorama 显示彩色控制台输出
- 保存 TXT 报告
- 保存 JSON 报告
- 处理无效输入
- 干净地处理键盘中断
- 使用结构化日志
- 使用模块化 Python 文件以提高可维护性
## 风险等级
### 高风险
如果可以从不受信任的网络访问,可能会暴露远程管理、数据库或不安全协议的服务。
示例:
- FTP
- Telnet
- MySQL
- PostgreSQL
- SMB
- RDP
### 中风险
通常会被暴露但仍需要安全配置、修补、监控和访问控制的服务。
示例:
- SSH
- HTTP
- HTTPS
- SMTP
### 低风险
在某些环境中可能符合预期但仍应进行审查的服务。
示例:
- DNS
- POP3
- IMAP
- 非常见端口上的未知服务
## 未来改进
- UDP 扫描支持
- Banner 抓取
- 多线程扫描
- CIDR 子网扫描
- 将报告导出为 PDF
- CVE 查询集成
- Web 仪表板
- 感知身份验证的扫描
- Docker 支持
- 单元测试和集成测试套件
## 道德使用
此扫描器仅供授权的安全测试、教育和防御性评估使用。未经授权扫描第三方系统可能违反法律、合同、可接受使用政策或云提供商规则。
在扫描您不拥有的系统之前,请务必获得书面许可。
## 作者
作为网络安全初级人员简历和面试项目创建。
推荐的作者署名:
```
Author: Your Name
Role: Cybersecurity Enthusiast | Python Developer
```
标签:Python, 反取证, 安全评估, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护