psajja3302/Nmap-Port-Scanner
GitHub: psajja3302/Nmap-Port-Scanner
一个基于 python-nmap 模块构建的命令行端口扫描工具,支持多线程并发和服务版本检测,用于快速扫描指定 IP 的端口开放状态。
Stars: 0 | Forks: 0
# Nmap 端口扫描器
## 法律免责声明
**本工具仅供教育目的和授权的网络扫描使用。**
在大多数司法管辖区,未经明确许可扫描网络或系统是**非法且不道德的**。在扫描任何非您个人拥有的网络或主机之前,请务必确保您已获得书面授权。
了解更多:[https://nmap.org/book/legal-issues.html](https://nmap.org/book/legal-issues.html)
## 功能
- 扫描用户指定的 IP 地址和端口范围
- 多线程扫描(400 个线程)以实现快速获取结果
- 通过 `-sV` 进行服务和版本检测
- 过滤输出:仅显示开放端口,或显示所有端口
- 使用正则表达式验证 IP 地址格式
- 验证端口范围(0–65535)
- 简洁的、nmap 风格的格式化输出
## 环境要求
- macOS(已测试)或 Kali Linux
- Python 3.x
- [Homebrew](https://brew.sh)(仅限 macOS)
- `nmap` 二进制文件
- `python-nmap` Python 模块
## 安装与设置
### 步骤 1 — 安装 nmap 二进制文件
在 **macOS** 上,使用 Homebrew:
```
brew install nmap
```
在 **Kali Linux** 上,nmap 已预装。要验证是否已安装:
```
nmap --version
```
### 步骤 2 — 在 VSCode 中设置 Python 虚拟环境
强烈建议使用虚拟环境,以便为每个项目隔离依赖项。同样的过程也可以在 Kali 上完成。
在 VSCode 中打开您的项目文件夹,然后打开集成终端(`Ctrl + `` ` ``)并运行:
```
# 创建虚拟环境
python3 -m venv .venv
# 激活它(你会看到 (.venv) 出现在终端提示符中)
source .venv/bin/activate
```
### 步骤 3 — 安装 python-nmap 模块
在激活您的虚拟环境后:
```
pip install python-nmap
```
### 步骤 4 — 在 VSCode 中选择正确的解释器
VSCode 需要知道使用哪个 Python 解释器,以便它能解析 `nmap` 模块:
1. 在您的终端中(在 `.venv` 激活状态下),运行:
which python3
这将输出类似于以下内容:
/Users/yourname/PythonProjects/NmapScanner/.venv/bin/python3
2. 打开命令面板:`Cmd + Shift + P`
3. 搜索 **"Python: Select Interpreter"**
4. 点击 **"Enter interpreter path..."**
5. 粘贴步骤 1 中的路径
## 用法
在您的终端中运行扫描器:
```
python3 nmap_portscanner.py
```
系统将提示您输入:
1. **目标 IP 地址** — 例如 `192.168.1.10`
2. **端口范围** — 例如 `20-80`
3. **显示模式** — `1` 表示仅显示开放端口,`2` 表示显示所有端口
### 示例输出(目标 IP:192.168.1.10 | 端口范围:20-30 | 显示模式:1)
```
Scanning ports 20 – 30 on 192.168.1.10...
PORT STATE PROTOCOL SERVICE PRODUCT & VERSION
----------------------------------------------------------------------
21 open tcp ftp vsftpd 2.3.4
22 open tcp ssh OpenSSH 4.7p1
23 open tcp telnet N/A
Scan complete. 3 open port(s) found.
```
标签:CTI, Nmap, Python, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 虚拟驱动器, 逆向工具