Powershell ile UDP Port Taraması

Test-NetConnection cmdleti ile TCP port kontrolünü gerçekleştirebiliyoruz. Peki ya UDP? Sürekli makineye nmap yüklemekten sıkılanlar, elimin altında bir function dursun kullanayım diyenler. Aşağıdaki function tam size göre :p

function Test-UDPConnection {
    param (
        [string]$ComputerName,
        [int]$Port
    )

    $UDPClient = New-Object System.Net.Sockets.UdpClient
    $Timeout = 1000  
    $UDPClient.Client.ReceiveTimeout = $Timeout

    try {
        
        $UDPClient.Connect($ComputerName, $Port)

        
        $Message = [byte[]]@(0)
        $UDPClient.Send($Message, $Message.Length) > $null

       
        $RemoteEndPoint = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, 0)
        $Response = $UDPClient.Receive([ref]$RemoteEndPoint)

        if ($Response) {
            "UDP bağlantısı $ComputerName üzerinde yer alan ve port değeri $Port olan servise başarılı şekidle sağlandı. Port açık ve cevap veriyor.."
        } else {
            "Cevap alınamadı port kapalı."
        }
    } catch {
        "UDP bağlantısı $ComputerName bu cihaz üzerinde yerlan portu $Port olan alana sağlanamadı.. Error: $_"
    } finally {
        $UDPClient.Close()
    }
}

# Kullanım örneği:
Test-UDPConnection -ComputerName 192.168.1.2 -Port 53

Powershell ile UDP Port Taraması” üzerine 2 yorum

  1. Scriptinizde sorun var. bilgisayar adını çözdüğü sürece hataya düşmüyor. Örn. yok.gov.tr üzerinden port 53 sorgulaması yapldığında başarışı diyor. Başka portlar da test ettik.

    1. Selam hocam haklısın, geri dönüş için teşekkürler. Aslında bunun sebebi UdpClient.Connect kullanarak hedef makineye UDP bağlantısı kurmayı deniyor. Ancak UdpClient.Connect, UDP protokolünün doğası gereği bağlantı doğrulaması yapmaz ve sadece hedef adresle bir bağlantı kurar gibi görünür. Eğer bir DNS çözümleme varsa, sadece çözümleme başarılıysa bağlantı başarılı olarak görünebilir. Fakat burada hedef UDP portunun gerçekten açık olup olmadığını anlamak için daha ileri bir doğrulama ekleyerek scripti güncelledim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir