powershell扫描指定IP的端口的方法详解
调用的TCPClient对象超时时间比较长,不管端口是否开发,都需要等到连接超时后才会扫描下一个端口,扫描一个区间的端口会耗费很多的时间。 catch{}
│ ├─TCPOp
│ │Test-TCPPort.ps1
$Socket = New-Object System.Net.Sockets.TCPClient
│ │ PSNet.psm1
return $false
Import-Module $env:PSSpace/PSNet
Test-TCPPort.ps1
}
}
│
$Address = [System.Net.IPAddress]::Parse($IP)
语句中直接通过..列举了1到1024之间的数字,通过管道次传递给后面的操作符,使用New-Object创建System.Net.Sockets.TCPClient对象,调用该对象的Connect()方法连接指定IP的指定端口,而端口则是由管道传入的入组对象,也就是前面提到的1~1024及其之间的的数字,是由$_这个自动变量来代替,代表管道传入的当前的对象。
为了便于函数的共享和重用,创建一个名为PSNet的工具集:
{
复制代码 代码示例:
{[string] $Port = $(throw "Please specify a Port") )
对于Test-TCPPort.ps1子模块,写入以下代码用于实现对TCP端口是否监听进行测试:
│ │
else
param ( [ValidateNotNullOrEmpty()]
└─PSNet
对于抛出的异常通过2>$null的方式将错误信息重定向到$null的空设备,而不再当前屏幕输出,于此同时如果在对指定端口进行连接的过程中未曾抛出异常说明TCPClient对象可以正常连接到端口,则打印出该端口并提示该端口是打开的。
return $false$Socket.Close()
}
以上脚本的缺点:
抛开笨重的Nmap直接扫描指定的指定IP的端口:
复制代码 代码示例:
if(!$Wait)首先,介绍了该小脚本是如何实现功能的,接下来对创建脚本工具集并导入的方法,随后又在该工具集中创建了Test-TCPPort函数,并介绍了调用方法。 │ │
Step 6. 在PSNet.psm1语句的最后面添加Export-ModuleMember -Function * 语句用于将从该文件中导入的函数都作为Module的成员发布,注意此语句每个模块只可使用一次否则将会报错。 本文通过一段小脚本的方式引入了通过PowerShell实现简单安全渗透功能的想法。
if ( $IP = [System.Net.Dns]::GetHostAddresses($EndPoint) )
else
总结:
else
}
├─PSNet
1..1024 | %{ echo ((new-object Net.Sockets.TcpClient).Connect("192.168.10.26",$_)) "$_ is open"} 2>$null
└─PSSecurity
对于开放TCP端口是会有相应的程序监听该端口的,等待程序连接,如果连接了一个未曾起监听的端口,TCPClient对象是会抛出以下的异常
echo $_
Test-TCPPort 192.168.10.26 80
至此工具集的结构创建成功,目录树如下所示:
+D:\MY DOCUMENTS\WINDOWSPOWERSHELL\MODULES
{
Step 4.在PSNet目录下创建相关细分的子函数目录,便于不同类型操作进行分类,如创建TCPOp,用于创建TCP相关操作,并把Test-TCPPort.ps1放入其中
Step 1:创建PowerShell的工作文件夹(D:\My Documents\WindowsPowerShell\Modules)并创建系统环境变量指向该目录,便于后续调用,如PSSpace
对于本文最初的那个例子,在有了导入这个模块后执行:
}
Step 5.打开PSNet.psm1加入行:.$PSSpace/TCPOp/Test-TCPPort.ps1 以后如果要创建任何相关函数文件都可以添加一条记录到此文件,以便module初始化的时候可以初始化相关的函数,如果相关函数相互之间存在依赖关系,被依赖的文件初始化语句需要放在有依赖关系的文件语句之前
start %windir%\System32\WindowsPowerShell\v1.0\powershell.exe -noExit -Command "Import-Module '%PSSpace%\PSNet' "
通过PowerShell对.net对象的调用我们可以做很多的事情,基本上用WinForm和asp.net能做的事情大多可以通过PowerShell进行操作,与此同时我有了一个想法,通过PowerShell是否可以写出一些常用的用于安全和渗透测试的工作脚本,这些脚本可以组合成一个工具集,这不就能在手边没有相关渗透工具的情况下用 轻量级的脚本环境+编程 实现安全相关的功能检测呢?
{{
[string] $EndPoint = $(throw "Please specify an EndPoint (Host or IP Address)"),
{
$Socket.Close()
+D:\MY DOCUMENTS\WINDOWSPOWERSHELL\MODULES
Function Test-TCPPort
如果我们要在PSNet下创建关于UDP相关的操作可以与TCPOp同级创建UDPOp子模块目录,依次类推,与网络相关的操作子模块均放在PSNet下,再预先创建一个PSSecurity模块用于后续创建于安全相关的模块。目录结构如下:
└─TCPOp
if ( $Connect.IsCompleted )
{
{
}
对于此模块可以通过PowerShell命令行使用以下语句 :
try
Step 2.在上述步骤中提到的PSSpace路径中创建与目标module同名的目录用于存放脚本,即在%PSSpace%下创建PSNet
“Exception calling "Connect" with "2" argument(s): "由于目标机器积极拒绝,无法连接。 192.168.10.26:1"”
}
$Wait = $Connect.AsyncWaitHandle.WaitOne($TimeOut,$false)
进行调用,或者通过命令行或者批处理启动时指定
}
}
Step 3.在PSNet目录下创建与module同名的.psm1文件PSNet.psm1
return $true
$Socket.EndConnect($Connect)
│ └─UDPOp
1..1024 | %{$A=(Test-tcpport 192.168.10.26 $_)
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/shell/6086.shtml
相关文章
热门TAG
命令 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 技巧 权重 服务器 网站流量 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows 蜘蛛 搜索引擎 网站收录 JSP 实例解析最新文章
-
PHP生成奖状
时间:2021-01-06
-
python实现输入五个数并求
时间:2021-01-06
-
php检测网站是否正常打开
时间:2021-01-05
-
python怎么右对齐
时间:2021-01-05
-
Python3爬虫入门之Python3的安
时间:2021-01-05
-
如何用PHP接收http请求头信
时间:2021-01-05
-
数据库怎么连接用php写的
时间:2021-01-05
-
php后缀怎么打开
时间:2021-01-05
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
php文档怎么打开
时间:2020-12-29
-
php检测网站是否正常打开
时间:2021-01-05
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
python实现输入五个数并求平均值
时间:2021-01-06
-
浅谈Linux Shell的管道与重定向
时间:2020-12-23
-
如何检测Django是否安装成功
时间:2020-12-29
