windows PowerShell内置的端口扫描器使用

您所在的位置:网站首页 win如何开放端口 windows PowerShell内置的端口扫描器使用

windows PowerShell内置的端口扫描器使用

#windows PowerShell内置的端口扫描器使用| 来源: 网络整理| 查看: 265

前言

可能我们想知道远程主机的端口开放,首先想到的都是Nmap工具,但有时工具获取困难,且Nmap获取信息有限,这时PowerShell就有用武之地了。

用PowerShell实现基本的端口扫描

CMD进入powershell: 在这里插入图片描述 【示例1】: 针对单个IP的多个端口的扫描

PS C:\User\my>1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect ("10.0.0.100",$_)) "Port $_ is open!"} 2>$null

在这里插入图片描述 参数说明:

1) 1..1024 - 创建值为从1到1024的一系列变量 2)| - 管道运算符,将上述对象传递给循环体 3)% - 在PowerShell中,%是foreach对象的别名,用来开始一个循环。循环体为接下来使用大括号{}括起来 的内容 4)echo - 将输出打印至屏幕 5)new-object Net.Sockets.TcpClient - 新建一个.Net TcpClient类的实例,它允许我们和TCP端口 之间建立socket连接 6).Connect("10.0.0.100",$_)) -调用TcpClient类的Connect函数,参数为10.0.0.100和端口$_。 其中$_这个变量表示当前对象,即本轮循环中的数字(1..1024) 7)"Port $_ is open!") - 当程序发现一个开放的端口时,屏幕打印『Port # is open!』 8)2>$null - 告诉PowerShell遇到任何错误都不显示

上述示例中扫描的端口范围是1-1024,可修改为你想扫描的端口范围,如(22…58)、(8080…9000)等端口范围。

此外,PowerShell中另一种可用的方法是用Test-NetConnection命令,其能够输出更多有用的信息。

**【示例2】:Test-Netconnection 针对某IP段中单个端口的扫描

PS C:\User\my>foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 192.168.1.$ip}

注:win7版本的powershell没有Test-NetConnection ,win0系统有该命令 在这里插入图片描述 注: Test-NetConnection的最大的不足是:该命令是在4.0版本的PowerShell中才引入的。

参数说明:

1)foreach ($ip in 1…20) {} - 循环遍历数字1到20

2)Test-NetConnection - Test-Connection是一个用来测试不同种类的网络连接的工具

3)-Port 80 - 检查80端口是否可用

4)-InformationLevel “Detailed” - 提供详细的输出信息

5)192.168.1. i p − 针 对 列 表 中 的 I P 地 址 , 依 次 尝 试 向 80 端 口 发 起 连 接 。 在 本 例 中 , 变 量 ip - 针对列表中的IP地址,依次尝试向80端口发起连接。在本例中,变量 ip−针对列表中的IP地址,依次尝试向80端口发起连接。在本例中,变量ip从1循环至20

当然,构建一个可以遍历多个系统的多个端口的扫描器也是可行的。 【示例3】: ** 针对某IP段 & 多个端口的扫描器

PS C:\User\my>1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient). Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}

上述命令执行较慢,改进版如下:

PS C:\User\my>1..20 | % { $a = $_; write-host "------"; write-host "10.0.0.$a"; 22,53,80,445 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}

许多安全的网络环境会开启出口流量过滤控制,以限制对某些服务的出口协议的访问。这对于提升HTTP/HTTPS/DNS通道的安全性是有好处的,原因之一就在于此。然而,当需要识别出可替代的出站访问时,我们可以在内网中使用PowerShell来评估网络防火墙上的出口过滤器。

PowerShell测试出口过滤器:

PS C:\User\my>1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("allports.exposed",$_)) "Port $_ is open" } 2>$null


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3