Advertisement
upz

PortScan

upz
Dec 19th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Get-OpenPorts {
  2.     [CmdletBinding()]
  3.     Param(
  4.             [parameter(
  5.                     Mandatory = $true
  6.                 ,   HelpMessage = "Insert IP to scan"
  7.                 ,   Position = 0)]
  8.             [string]$ip
  9.         ,   [parameter(
  10.                     Mandatory = $true
  11.                 ,   HelpMessage = "Insert ports to scan"
  12.                 ,   Position = 1)]
  13.             [int[]]$portArray
  14.     )
  15.  
  16.     begin{
  17.         #Check if IP is valid
  18.         try {
  19.             [System.Net.IPAddress]$iptest = $ip
  20.         }
  21.         catch {
  22.             $target = $ip
  23.             try {
  24.                 $dnstest = [System.Net.Dns]::GetHostAddresses($ip).ipaddresstostring
  25.             } catch {
  26.                 Write-Host -ForegroundColor Red "Host: '$ip' not found"
  27.                 break
  28.             }
  29.             [System.Net.IPAddress]$ip = $dnstest
  30.         }
  31.     }
  32.  
  33.     process{
  34.         $openPorts = New-Object -TypeName System.Collections.Generic.List[int]
  35.  
  36.         $runTime = Measure-Command {
  37.             $counter = 0
  38.             foreach ($port in $portArray) {
  39.                    
  40.                     $counter++
  41.                     Write-Progress -Activity "Scanning Port: $port progress: $($counter)/$($portArray.Count)" -Status "Found $($openPorts.Count) open ports" -PercentComplete (($counter / $portArray.Count) * 100)
  42.                    
  43.                     $TCP = New-Object -TypeName System.Net.Sockets.TcpClient    
  44.                    
  45.                     $result = $TCP.BeginConnect($ip,$port,$null,$null)
  46.                     $success = $result.AsyncWaitHandle.WaitOne(15)
  47.                    
  48.                     if ($success){
  49.                         $openPorts.Add($port)                    
  50.                     }
  51.                
  52.                     $TCP.Dispose()
  53.                 }
  54.             }        
  55.  
  56.         $Propertys = [ordered]@{
  57.             'Destination' = $target
  58.             'ScanTime' = $runTime.ToString("hh\:mm\:ss\,ff")
  59.             'OpenPorts' = $openPorts
  60.         }
  61.         $returnObject = New-Object -TypeName PsObject -Property $Propertys
  62.         return $returnObject
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement