前面的文章中曾經發布了對指定IP進行批量端口掃描的方法和腳本,過PowerShell收發TCP和UDP消息包的方法以及通過PowerShell嘗試登錄SQLServer服務的方法,這構成了PSNet程序集用于通過PowerShell對網絡狀態進行操作。最近在不斷嘗試之下,找到了對指定范圍的IP段進行掃描和對端口進行掃描的方法,本文將會介紹如何通過PowerShell批量掃描IP及其對應的端口。
依然在PSNet程序集的基礎上進行擴展,首先在$env:PSSpace/PSNet/TCPOp下創建腳本文件Invoke-ScanIPPort.ps1,并在$env:PSSpace/PSNet/TCPOp/PSNet.psm1中添加對腳本文件的調用:
復制代碼 代碼如下:
. $env:PSSpace/PSNet/TCPOp/Invoke-ScanIPPort.ps1
首先對后面代碼中將會出現的變量進行介紹:
復制代碼 代碼如下:
-StartAddress[掃描的起始IP地址],與-EndAddress配合使用,【此參數必須】
-EndAddress[掃描的結束IP地址],【此參數必須】
-ResolveHost[是否嘗試對主機名嘗試進行解析]
-ScanPort[是否進行端口掃描],如果要掃描端口此選項必須
-AllPort[是否對所有端口進行掃描],范圍為1~65534(注意此選項掃描時間很長建議在選中單個IP的情況下進行使用,并且盡量少使用)
-StartPort[掃描的起始端口端口],與-EndPort配合使用,如果此選項與-Ports選項同時存在則-Port參數失效
-EndPort[掃描的結束端口]
-Ports掃描時默認掃描的端口,如果后續不帶參數則僅掃描21,22,23,53,69,71,80,98,110,139,111,389,443,445,1080,1433,2001,2049,
3001,3128,5222,6667,6868,7777,7878,8080,1521,3306,3389,5801,5900,5555,5901如果后續帶多個以逗號分割的多個數字則會掃描數字對應的端口,如果只掃描默認的端口,則不需此參數
-TimeOut超時時間,默認值為100ms(毫秒)
此函數的調用方式如下:
復制代碼 代碼如下: