bhaathmaed-lab/python-vulnerability-scanner-mini-project-
GitHub: bhaathmaed-lab/python-vulnerability-scanner-mini-project-
一款基于 Python 的轻量级漏洞扫描工具,旨在通过端口扫描与 Banner 抓取识别网络和 Web 应用中的常见安全弱点并生成评估报告。
Stars: 1 | Forks: 0
基于 Python 的漏洞扫描器
概述
基于 Python 的漏洞扫描器是一款轻量级的网络安全工具,旨在识别网络系统和 Web 应用程序中常见的安全弱点。它可以执行 TCP 端口扫描、服务枚举、HTTP banner grabbing、基本的软件版本检测,并生成漏洞评估报告。
«注意:本项目仅供教育目的使用,且仅应用于您拥有或已获得明确测试权限的系统。»
功能
- 扫描常见的 TCP 端口
- 检测开放的网络服务
- HTTP banner grabbing
- 基本的软件版本识别
- 识别潜在的安全风险
- 生成漏洞报告
- 模块化且易于理解的 Python 代码
使用技术
- Python 3.x
- Socket
- Requests
- python-nmap(可选)
- FPDF2
- Colorama
- Tabulate
项目结构
Python-Based-Vulnerability-Scanner/
│── scanner.py
│── requirements.txt
│── README.md
│── LICENSE
│
├── reports/
│ └── vulnerability_report.txt
│
├── screenshots/
│ └── sample_output.png
│
└── docs/
├── Cover_Page.pdf
├── Abstract.pdf
├── Introduction.pdf
├── Methodology.pdf
安装说明
1. 克隆仓库:
git clone https://github.com/your-username/Python-Based-Vulnerability-Scanner.git
2. 进入项目目录:
cd Python-Based-Vulnerability-Scanner
3. 安装所需的依赖项:
pip install -r requirements.txt
使用说明
运行扫描器:
python scanner.py
出现提示时,输入目标 IP 地址或域名。
示例:
Enter Target IP or Domain: scanme.nmap.org
示例输出
Resolved IP: 45.33.32.156
Scanning...
[OPEN] Port 22 (SSH)
[OPEN] Port 80 (HTTP)
Server Banner:
Apache/2.4.7
漏洞分析
- SSH 服务已暴露。
- 检测到 HTTP 服务。
- 检查软件版本以进行更新。
Report saved as vulnerability_report.txt
未来增强功能
- 多线程扫描
- 集成 CVE 数据库
- SSL/TLS 安全分析
- 操作系统指纹识别
- 使用 Tkinter 或 PyQt 开发 GUI
- 生成 PDF 报告
- 风险评分计算(CVSS)
学习成果
- 网络侦察
- TCP 端口扫描
- Banner grabbing
- 基本的漏洞评估
- Python socket 编程
- 网络安全报告编写
许可证
本项目基于 MIT 许可证授权。
作者
Bhaathma E. D.
B.E. 计算机科学与工程(网络安全)
Arunai 工程学院
实习微型项目 – 2026# python-vulnerability-scanner-mini-project-
实习报告
import argparse
import requests
import sys
from urllib.parse import urlparse
def get_args():
"""
处理命令行参数。
允许用户指定目标 URL 和可选参数。
"""
parser = argparse.ArgumentParser(description="Basic Web Vulnerability Scanner - Initialization")
```
# 必选参数:目标 URL
parser.add_argument("-t", "--target", dest="target", required=True, help="Target URL (e.g., http://example.com)")
# 可选参数:Timeout 用于防止扫描器在响应缓慢的服务器上挂起
parser.add_argument("--timeout", dest="timeout", type=int, default=5, help="HTTP request timeout in seconds (default: 5)")
args = parser.parse_args()
# 简单的 URL 验证逻辑
if not args.target.startswith(("http://", "https://")):
print("[-] Error: Target URL must include the schema (http:// or https://)")
sys.exit(1)
return args
```
def setup_session():
"""
初始化一个 requests Session 对象。
使用 Session 比单独的请求更高效,因为它会保留 cookies 并复用相同的 TCP 连接。
"""
session = requests.Session()
```
# 设置自定义 User-Agent 以模拟浏览器并避开基础的 bot 拦截器
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Scanner/1.0"
})
return session
```
def main():
# 1. 解析用户输入
options = get_args()
```
# 2. 设置连接环境
session = setup_session()
print(f"[*] Initializing scan for: {options.target}")
try:
# Perform a preliminary connectivity check
response = session.get(options.target, timeout=options.timeout)
print(f"[+] Connection successful! Status Code: {response.status_code}")
# Proceed to the next step (e.g., Crawling or Scanning)
# scan(session, options.target)
except requests.exceptions.RequestException as e:
print(f"[-] Failed to connect to {options.target}: {e}")
sys.exit(1)
```
if __name__ == "__main__":
main()
import argparse
import requests
import sys
from urllib.parse import urlparse
def get_args():
"""
处理命令行参数。
允许用户指定目标 URL 和可选参数。
"""
parser = argparse.ArgumentParser(description="Basic Web Vulnerability Scanner - Initialization")
```
# 必选参数:目标 URL
parser.add_argument("-t", "--target", dest="target", required=True, help="Target URL (e.g., http://example.com)")
# 可选参数:Timeout 用于防止扫描器在响应缓慢的服务器上挂起
parser.add_argument("--timeout", dest="timeout", type=int, default=5, help="HTTP request timeout in seconds (default: 5)")
args = parser.parse_args()
# 简单的 URL 验证逻辑
if not args.target.startswith(("http://", "https://")):
print("[-] Error: Target URL must include the schema (http:// or https://)")
sys.exit(1)
return args
```
def setup_session():
"""
初始化一个 requests Session 对象。
使用 Session 比单独的请求更高效,因为它会保留 cookies 并复用相同的 TCP 连接。
"""
session = requests.Session()
```
# 设置自定义 User-Agent 以模拟浏览器并避开基础的 bot 拦截器
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Scanner/1.0"
})
return session
```
def main():
# 1. 解析用户输入
options = get_args()
```
# 2. 设置连接环境
session = setup_session()
print(f"[*] Initializing scan for: {options.target}")
try:
# Perform a preliminary connectivity check
response = session.get(options.target, timeout=options.timeout)
print(f"[+] Connection successful! Status Code: {response.status_code}")
# Proceed to the next step (e.g., Crawling or Scanning)
# scan(session, options.target)
except requests.exceptions.RequestException as e:
print(f"[-] Failed to connect to {options.target}: {e}")
sys.exit(1)
```
if __name__ == "__main__":
main()
delete_user.php,这将使其成为测试的高优先级目标。
urljoin():这对于发现至关重要。如果一个表单的 action 仅仅是 search.php,urljoin 会将其与基础 URL 结合,为扫描器创建一个完整的 URL 作为目标。
输入名称:了解输入框的 name 属性(例如 username、password、query)使扫描器能够构造特定的 payload 发送回服务器。
标签:Python, URL短链接分析, 加密, 字符串匹配, 实习报告, 插件系统, 数据统计, 无后门, 服务探测, 漏洞扫描器, 端口扫描