veerlohith7-lang/port-scanner

GitHub: veerlohith7-lang/port-scanner

一个用 Python 从零实现的 TCP 端口扫描器,支持多线程并发扫描、Banner 抓取和结果导出,帮助开发者学习网络安全基础与 socket 编程。

Stars: 0 | Forks: 0

# Python TCP 端口扫描器 — PRJ-02 ![Python](https://img.shields.io/badge/Python-3.x-3776AB?style=flat-square&logo=python&logoColor=white) ![Kali](https://img.shields.io/badge/Kali_Linux-2026.1-557C94?style=flat-square&logo=kalilinux&logoColor=white) ![Status](https://img.shields.io/badge/Status-Complete-brightgreen?style=flat-square) ## 工作原理 通过 Python sockets 使用 TCP 连接扫描: - `connect_ex()` 返回 `0` → 端口为 **开启 (OPEN)** 状态 - 非 `0` 返回值 → 端口为 **关闭 (CLOSED)** 状态 - 100 个线程并发运行 → 比顺序执行快 10 倍 ## 使用方法 ``` python3 scanner.py 192.168.56.2 python3 scanner.py 192.168.56.2 -b python3 scanner.py 192.168.56.2 -p 1-1024 -b -o results.txt ``` ## 选项 | 标志 | 功能 | 默认值 | |---|---|---| | target | 目标 IP | 必填 | | -p | 端口范围 | 1-1024 | | -t | 线程数 | 100 | | -b | 获取 Banners | 关闭 | | -o | 保存至文件 | 关闭 | ## 针对 Metasploitable 2 的扫描结果 ``` 21/tcp FTP 220 (vsFTPd 2.3.4) 22/tcp SSH SSH-2.0-OpenSSH_4.7p1 23/tcp Telnet metasploitable login: 1524/tcp Ingreslock root@metasploitable:/# 3306/tcp MySQL 5.0.51a-3ubuntu5 [+] 23 open ports in 11s ``` ## 版本历史 | 版本 | 添加的功能 | 掌握的概念 | |---|---|---| | v1 | 单端口扫描 | TCP sockets, connect_ex() | | v2 | 端口范围循环 | 顺序执行 = 缓慢 | | v3 | 多线程 | ThreadPoolExecutor, 锁 | | v4 | 服务名称 | 字典查找 | | v5 | Banners + CLI | argparse, recv() | ## 我学到了什么 - TCP 连接扫描以及 SYN/SYN-ACK/RST 握手过程 - Python `socket` 模块 — connect_ex, settimeout, recv - 使用 ThreadPoolExecutor 进行多线程处理 — 100 个并发扫描 - 使用 `threading.Lock()` 保证线程安全 - Banner 抓取 — 读取服务版本公告 - 为什么 Nmap 更强大 — 以及它究竟有何不同 ## 实验环境 基于 [PRJ-01 家庭实验室](../cybersec-home-lab) 构建 - 攻击者:Kali Linux 2026.1 — 192.168.56.3 - 目标:Metasploitable 2 — 192.168.56.2 - 网络:隔离的 Host-Only 192.168.56.0/24
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 系统独立性, 网络扫描器, 逆向工具