LJones910109/python-port-scanner

GitHub: LJones910109/python-port-scanner

一个基于 Python 多线程实现的 TCP 端口扫描器,提供端口扫描、服务检测和报告生成功能,适合网络安全学习与技能展示。

Stars: 0 | Forks: 0

# 🔍 高级端口扫描器 **作者:** Lillian Jones **工具:** Python 3, socket, threading, argparse **分类:** 网络侦察 | 网络安全作品集 ## 概述 这是一个用 Python 构建的功能齐全的 TCP 端口扫描器,模拟了 Nmap 的核心功能。旨在展示对网络 socket、多线程、服务检测和 banner grabbing 的理解——这些都是 SOC Analyst 和 IT 岗位的关键技能。 ## 功能 |功能 |描述 | |---------------------------|---------------------------------------------------------| |**多线程扫描**|多达 100 个并发线程,实现快速扫描 | |**Banner Grabbing** |从开放端口获取服务版本信息 | |**服务检测** |将端口号映射到服务名(SSH、HTTP、SMB 等)| |**灵活的端口选择**|`common`、`all`、范围 (`1-1024`) 或自定义列表 | |**双重输出** |彩色终端显示 + 纯文本报告文件 | |**两种运行模式** |CLI 标志或交互式菜单 | ## 使用的技术 - `socket` — TCP 连接和 banner grabbing - `threading` + `queue.Queue` — 并发端口扫描 - `argparse` — 命令行参数解析 - `datetime` — 带时间戳的报告 - `re` — 去除 ANSI 颜色以实现干净的文件输出 ## 用法 ### CLI 模式 ``` # 扫描常见端口(默认) python3 port_scanner.py 192.168.1.1 # 扫描端口 1–1024 python3 port_scanner.py 192.168.1.1 -p 1-1024 # 扫描特定端口 python3 port_scanner.py 192.168.1.1 -p 22,80,443,3306 # 使用 200 个线程进行完整扫描,不保存文件 python3 port_scanner.py 192.168.1.1 -p all -t 200 --no-save ``` ### 交互式菜单模式 ``` python3 port_scanner.py --menu ``` ## 示例输出 ``` ======================================================= Target : 172.16.148.133 (172.16.148.133) Ports : 100 to scan Threads : 100 Started : 2026-06-17 14:32:10 ======================================================= [*] Scanning... please wait ================================================================= ADVANCED PORT SCANNER - SCAN REPORT ================================================================= Target Host : 172.16.148.133 Resolved IP : 172.16.148.133 Hostname : metasploitable Scan Date : 2026-06-17 14:32:10 Ports Scanned : 100 Scan Duration : 3.21 seconds Open Ports : 8 PORT SERVICE BANNER ------- --------------- -------------------------------------- 21 FTP 220 (vsFTPd 2.3.4) 22 SSH SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1 80 HTTP HTTP/1.1 200 OK | Server: Apache/2.2.8 139 NetBIOS No banner 445 SMB No banner 3306 MySQL 5.0.51a-3ubuntu5 5432 PostgreSQL No banner 6667 IRC :irc.Metasploitable.LAN NOTICE ... ================================================================= SCAN COMPLETE ================================================================= [+] Report saved to: scan_172_16_148_133_20260617_143213.txt ``` ## 实验环境 |设备 |IP |操作系统 | |------------------------|--------------|------------| |Kali Linux(攻击者) |172.16.148.132|Kali Rolling| |Metasploitable2(目标)|172.16.148.133|Ubuntu 8.04 | ## 展示的技能 - TCP socket 编程 - 多线程应用程序设计 - 网络服务枚举 - Banner grabbing / 版本检测 - 使用 argparse 开发 CLI 工具 - 报告生成和文件 I/O ## 相关作品集项目 - [Nmap 扫描实验](../nmap-scanning-lab) - [Metasploit 漏洞利用实验](../metasploit-exploitation-lab) - [Wireshark ARP/MITM 检测实验](../wireshark-arp-mitm-lab) - [Splunk SIEM 分析实验](../splunk-siem-lab)
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 隐私保护