Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Get-OpenPorts {
- [CmdletBinding()]
- Param(
- [parameter(
- Mandatory = $true
- , HelpMessage = "Insert IP to scan"
- , Position = 0)]
- [string]$ip
- , [parameter(
- Mandatory = $true
- , HelpMessage = "Insert ports to scan"
- , Position = 1)]
- [int[]]$portArray
- )
- begin{
- #Check if IP is valid
- try {
- [System.Net.IPAddress]$iptest = $ip
- }
- catch {
- $target = $ip
- try {
- $dnstest = [System.Net.Dns]::GetHostAddresses($ip).ipaddresstostring
- } catch {
- Write-Host -ForegroundColor Red "Host: '$ip' not found"
- break
- }
- [System.Net.IPAddress]$ip = $dnstest
- }
- }
- process{
- $openPorts = New-Object -TypeName System.Collections.Generic.List[int]
- $runTime = Measure-Command {
- $counter = 0
- foreach ($port in $portArray) {
- $counter++
- Write-Progress -Activity "Scanning Port: $port progress: $($counter)/$($portArray.Count)" -Status "Found $($openPorts.Count) open ports" -PercentComplete (($counter / $portArray.Count) * 100)
- $TCP = New-Object -TypeName System.Net.Sockets.TcpClient
- $result = $TCP.BeginConnect($ip,$port,$null,$null)
- $success = $result.AsyncWaitHandle.WaitOne(15)
- if ($success){
- $openPorts.Add($port)
- }
- $TCP.Dispose()
- }
- }
- $Propertys = [ordered]@{
- 'Destination' = $target
- 'ScanTime' = $runTime.ToString("hh\:mm\:ss\,ff")
- 'OpenPorts' = $openPorts
- }
- $returnObject = New-Object -TypeName PsObject -Property $Propertys
- return $returnObject
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement