IDhexter/PS-PortScanner-Jobs

GitHub: IDhexter/PS-PortScanner-Jobs

基于 PowerShell 的快速并行端口扫描脚本集,用于企业网络资产清查和开放端口识别。

Stars: 0 | Forks: 0

# PS-网络扫描器 专为局域网(`/24`)TCP 端口审计和资产清查设计的 PowerShell 脚本集。本仓库探讨了三种不同的结构化方法:Runspaces、ForEach-Object Parallel 和静态线性执行。 ## 📊 总体对比 | 脚本 | 机制 | 平均速度 (/24) | 最低兼容性要求 | 硬件消耗 | | :--- | :--- | :--- | :--- | :--- | | `scanner-runspaces.ps1` | [RunspaceFactory] 池 | 10 - 15 秒 | Windows PowerShell 5.1 | 优化(轻量级线程) | | `scanner-parallel-ps7.ps1` | ForEach-Object -Parallel | 10 - 15 秒 | PowerShell Core 7.0 | 低(原生线程池) | | `scanner-linear-legado.ps1` | 顺序 ForEach 循环 | 12 - 15 分钟 | Windows PowerShell 4.0 | 微不足道 | ## 🛠️ 脚本技术详解 ### 1. `scanner-runspaces.ps1`(优化的多线程架构) 此脚本通过 .NET Framework API 实现手动线程管理,是原生 Windows PowerShell 5.1 中实现高性能的理想解决方案。 * **内部工作原理:** * 脚本定义一个 `RunspacePool`,并指定并发实例的最小(1)和最大(30)限制。 * 网络中的每个 IP 作为一个独立的代码块被调度到此执行池中。 * 使用 `System.Net.Sockets.TcpClient` 类结合异步方法 `BeginConnect`。 * `.AsyncWaitHandle.WaitOne(1000)` 方法在主机离线时精确等待 1 秒后中断连接尝试。 * **优点:** * 可在任何 Windows 上原生运行,无需软件更新。 * 严格的并发控制:防止扫描拖垮交换机或耗尽本机内存资源。 * **缺点:** * 代码复杂,需要直接操作 .NET 对象并显式释放管道(`.Dispose()`)以防止内存泄漏(*memory leak*)。 ### 2. `scanner-parallel-ps7.ps1`(原生并发架构) 采用自 PowerShell 7 引入的基于线程的并行基础设施的现代方法。 * **内部工作原理:** * 整数 1 到 254 的列表通过管道直接注入到 `ForEach-Object` cmdlet 的 `-Parallel` 参数中。 * `-ThrottleLimit 50` 参数规定解释器默认管理最多 50 个并发操作。 * 与父作用域通信需使用作用域修饰符 `$using:`,这是在子线程中读取变量 `$Rede` 和 `$Porta` 所必需的。 * 维持 .NET Sockets 引擎以控制 1 秒超时。 * **优点:** * 语法简洁、紧凑、可读性强。 * 线程的管理和终止由 PowerShell Core 引擎自动抽象和处理。 * **缺点:** * **与 Windows PowerShell 5.1 不兼容。** 如果在标准 Windows 终端中执行,会因语法错误而失败。 ### 3. `scanner-linear-legado.ps1`(顺序单任务架构) 基于简单线性循环的基础模型。同步方式每次处理单个 IP 地址。 * **内部工作原理:** * 使用标准 cmdlet `Test-NetConnection`。 * 每次迭代,操作系统会按顺序执行三个强制操作:通过 DNS 解析名称、检查 ICMP(Ping)和尝试 TCP 握手。 * 脚本没有超时时间控制;延迟由 Windows 的 TCP/IP 协议栈决定(每个不存在的 IP 平均需 3 到 4 秒)。 * **优点:** * 代码简单,无并发逻辑或处理作用域变量的必要。 * **缺点:** * 对于企业网络完全不可行。等待离线主机丢弃数据包(*drop*)累积的死时间,会使每个子网的执行时间超过 10 分钟。 ## 📋 自定义与配置 所有脚本在文件顶部都有一个静态参数化块。执行前请根据场景进行更改: ``` # 设置为您本地网络的前3个octets $Rede = "10.174.25" # 设置为目标TCP端口(例如: 22, 80, 443, 445, 3389) $Porta = 22 ```
标签:AI合规, IPv6, Libemu, PowerShell, PowerShell Core, Runspaces, SSH扫描, TCP端口扫描, 云存储安全, 企业网络, 子网扫描, 对称加密, 并行处理, 性能优化, 插件系统, 数据统计, 本地网络扫描, 检测绕过, 端口扫描, 网络安全, 网络扫描, 网络资产清点, 脚本工具, 脚本集合, 自动化审计, 资源管理, 隐私保护