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短链接分析, 加密, 字符串匹配, 实习报告, 插件系统, 数据统计, 无后门, 服务探测, 漏洞扫描器, 端口扫描