snehalathaArakkonam/NetSentry-Scanner

GitHub: snehalathaArakkonam/NetSentry-Scanner

一款基于 Python 的多线程网络端口扫描工具,结合 Socket 与 Scapy SYN 扫描并提供 JSON 报告和加密导出功能。

Stars: 0 | Forks: 0

# 端口扫描器 一个简单的基于 Python 的工具,旨在使用 Python 的内置 socket 模块和 scapy 库识别目标机器上的开放端口。本项目演示了端口扫描的基础知识,可作为开发更高级网络工具的起点。 ## 功能 - **基于 Socket 的扫描:** 使用标准的 Python socket 测试端口是否开放。 - **基于 Scapy 的扫描:** 发送 SYN 数据包并监听 SYN-ACK 回复(在大多数环境中需要提升的权限)。 - **可配置:** 轻松指定目标 IP、端口范围和超时时间。 - **经过测试的代码库:** 包含单元测试,确保可靠性和易于维护。 ## 安装说明 你可以使用 **pip** 或 **Poetry** 来安装此项目。 ### 使用 pip 1. **克隆仓库:** git clone https://github.com/your-username/port-scanner.git 2. **进入项目目录:** cd port-scanner 3. **创建并激活虚拟环境(推荐):** python -m venv venv source venv/bin/activate # 在 Windows 上使用:venv\Scripts\activate 4. **使用 pip 安装依赖:** pip install -r requirements.txt *(如果你没有 `requirements.txt`,只需运行 `pip install scapy` 或安装你需要的其他任何依赖。)* ### 使用 Poetry 1. **安装 Poetry**(如果你尚未安装): [Poetry 安装指南](https://python-poetry.org/docs/#installation) 2. **克隆仓库:** git clone https://github.com/your-username/port-scanner.git 3. **进入项目目录:** cd port-scanner 4. **使用 Poetry 安装依赖:** poetry install 5. **激活虚拟环境(可选):** poetry shell ## 用法 主要有两种方式来运行端口扫描器: ### 1. 命令行执行 你可以使用以下任一命令来运行端口扫描器: - **模块执行:** python -m main - **直接脚本执行:** python main.py **注意:** 为了支持这些命令,请在根目录下创建一个包含以下内容的 `main.py` 文件: ``` from port_scanner import PortScanner def main(): target_ip = input("Enter target IP: ") start_port = int(input("Enter start port: ")) end_port = int(input("Enter end port: ")) scanner = PortScanner(target_ip, start_port, end_port) print("\nScanning using socket method...") open_ports_socket = scanner.scan_ports_socket() print("Open ports (socket):", open_ports_socket) print("\nScanning using scapy method...") open_ports_scapy = scanner.scan_ports_scapy() print("Open ports (scapy):", open_ports_scapy) if __name__ == "__main__": main() ``` 执行时,系统会提示你输入: 1. **目标 IP**(例如,`127.0.0.1`) 2. **起始端口**(例如,`1`) 3. **结束端口**(例如,`1024`) 然后脚本将执行两次扫描: - **基于 Socket 的**扫描 - **基于 Scapy 的** SYN 扫描 它将打印出每种方法发现的开放端口列表。 ### 2. 作为模块导入 你还可以直接在你的 Python 代码中使用 `PortScanner` 类: ``` from port_scanner.scanner import PortScanner # 创建 scanner 实例 scanner = PortScanner(target_ip="127.0.0.1", start_port=1, end_port=1024, timeout=1) # 基于 Socket 的扫描 open_ports_socket = scanner.scan_ports_socket() print("Open ports (socket):", open_ports_socket) # 基于 Scapy 的扫描 open_ports_scapy = scanner.scan_ports_scapy() print("Open ports (scapy):", open_ports_scapy) ``` ## 项目结构 ``` port-scanner/ ├── .gitignore ├── LICENSE ├── pyproject.toml ├── README.md ├── requirements.txt ├── main.py ├── port_scanner │ ├── __init__.py │ └── scanner.py └── tests ├── __init__.py └── test_scanner.py ``` - **main.py**:作为通过 `python -m main` 或 `python main.py` 运行端口扫描器的入口点。 - **port_scanner/scanner.py**:包含 `PortScanner` 类,具有基于 socket 和基于 scapy 的扫描方法。 - **tests/test_scanner.py**:使用 Python 内置的 `unittest` 框架和 `unittest.mock` 对 `PortScanner` 类进行的单元测试。 ## 运行测试 1. **安装依赖**(例如,`scapy`、`unittest`)。 2. **运行测试**: python -m unittest discover tests 或者直接在 `port-scanner` 目录下运行: python -m unittest 测试将会: - 模拟 socket 连接以测试成功和失败的连接。 - 模拟来自 scapy 的 `sr1` 以模拟特定端口的 SYN-ACK 响应。 ## 许可证 该项目基于 [MIT 许可证](LICENSE) 授权。请随时在许可证条款允许的范围内进行修改和分发。 **祝你扫描和探索网络安全愉快!** 如果你有任何问题或建议,请随时提出 issue 或提交 pull request。
标签:Python, Scapy, 安全规则引擎, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护