Liragbr/PortScanner

GitHub: Liragbr/PortScanner

一个同时包含C#和Python实现的多线程/异步端口扫描工具,用于探测目标主机的开放端口、运行服务及Banner信息。

Stars: 0 | Forks: 0

# 🥷🏻 端口扫描器 ### 警告 我开发这个项目是为了提升我的编程逻辑能力,并更好地理解一些网络安全和 C# 相关的问题。该代码未经生产环境测试,也就是说它可能存在缺陷。在对不属于自己的系统进行端口扫描之前,请务必获得明确的授权。端口扫描器可能会被误解为入侵尝试。 ### 简介 本项目是一个使用 C# 开发的端口扫描工具。端口扫描是网络安全中用于识别目标系统上开放端口和可用服务的一项关键技术。该工具通过扫描开放端口并了解其上运行的服务,帮助识别潜在的漏洞。 端口扫描的工作原理是向目标系统上的指定端口发送数据包并分析响应。它被网络管理员广泛用于安全评估,同时也被攻击者用于侦察。该 PortScanner 的主要功能包括: - 多线程扫描:通过同时扫描多个端口来提升性能。 - 可自定义扫描选项:允许用户指定扫描的端口范围和 IP 地址。 - 详细的报告:提供关于检测到的开放端口和服务的全面报告。 本仓库旨在为网络安全专业人员、网络管理员以及对网络安全感兴趣的开发者提供有价值的资源。 ## 用法 - 运行可执行文件或从您的开发环境中启动调试。 - 指定目标 IP 地址和您想要扫描的端口范围。 - 开始扫描并在输出窗口中查看结果。 ## 代码概述 ### CommandExecutor.cs CommandExecutor 类负责执行系统命令以收集网络信息。 ``` public class CommandExecutor { public static string ExecuteCommand(string command) { // Initializes a new process to execute the command ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command) { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; // Starts the process Process proc = new Process { StartInfo = procStartInfo }; proc.Start(); // Reads the output of the command return proc.StandardOutput.ReadToEnd(); } } This function uses ProcessStartInfo to set up the command execution environment and Process to run the command and capture its output. ```
### PortScanner.cs PortScanner 类处理扫描逻辑。 ``` public class PortScanner { private string targetIP; private int startPort; private int endPort; public PortScanner(string ip, int start, int end) { targetIP = ip; startPort = start; endPort = end; } public void Scan() { Parallel.For(startPort, endPort + 1, port => { // Attempts to connect to the port using (TcpClient tcpClient = new TcpClient()) { try { tcpClient.Connect(targetIP, port); Console.WriteLine($"Port {port} is open."); } catch (Exception) { Console.WriteLine($"Port {port} is closed."); } } }); } } ``` 该类设置了扫描参数,并使用 `Parallel.For` 并发扫描端口,从而显著提高了扫描速度。 ## Python (现代异步版本) 为了提供更健壮和可扩展的实现,本仓库现在包含了一个结构化的 Python 扫描器,其重点在于: - `asyncio` 高并发 TCP 连接扫描。 - 显式的端口配置文件或自定义范围解析。 - 可选的 banner 抓取。 - 用于自动化/报告的 JSON 导出。 ### 快速开始 ``` python -m portscanner.cli 127.0.0.1 --ports 1-1024 --concurrency 300 python -m portscanner.cli scanme.nmap.org --top-common --banner --json result.json ``` ### 注意事项 仅在经授权的环境(实验环境、CTF、获得明确授权的资产)中使用。
标签:AES-256, DNS枚举, PortScanner, Qt框架, 二进制发布, 云存储安全, 并发处理, 开源工具, 插件系统, 数据统计, 服务器安全, 服务识别, 漏洞评估, 端口扫描, 网络安全, 网络安全工具, 网络扫描, 计算机取证, 逆向工具, 隐私保护