14 Temmuz 2016 Perşembe

Port Tarama Araçları Olmasaydı Ne Yapardık?

Sızma testlerinin olmazsa olmazı port tarama araçları olmasa ne yapardık? Hemen oturur kendimize bir tane yazardık. Kolayıma geldiği için, paylaşacağım betiği(script) oluşturmak için Python kullandım.

Öncelikle, terminal ekranını (varsa) daha önceden girilen girdilerden temizlemek için aşağıdaki satırı kullanıyoruz:


Kullanıcıya taramak istediği alan adını ve port aralığını soruyoruz:


Taramanın tahmini olarak ne kadar sürdüğünü hesaplayabilmek için "datetime" modülünü kullanıyoruz:


Böylelikle betik taramanın kaçta başladığını önbellekte saklamış oluyor.

Simdi ise bir tcp soketi açıyor ve sunucu IP Adresine sırasıyla belirtilen aralıktaki portlardan bağlanmaya çalışıyor. Eğer port açıksa ve bağlantı tamamlanırsa, ekrana "Açık" yanına da açık olan portun numarasını yazıyor.


Yukarıdaki kodda küçük bir problem var. Soketin kaç saniye boyunca bağlantı kurmaya çalışacağını belirlemediğimiz takdirde, betik her port için bağlantı aşım süresini default tutacaktır. Böylece betik kapalı portlardan uzun süre cevap bekleyecek ve tarama süresi gereksiz bir şekilde uzayacaktır.  Bu soruna çözüm getirmek için kodu aşağıdaki şekilde modifiye ediyoruz:


Bağlantı aşım süresi için istediğiniz değeri verebilirsiniz. Ben internet hızıma güvendiğim ve sabırsız olduğum için 0.3 verdim. Soketi kapattıktan sonra, betiğin, karşısına çıkabilecek erörlere ne reaksiyon vereceğini belirliyoruz:


Eğer kullanıcı taramayı iptal etmek niyetiyle ctrl + C ye basarsa, betik mesajı gösterdikten sonra çalışmayı durduracaktır. Aynı işlemin sunucuya ulaşılamadığı takdirde gerçekleştirilmesi için:


Şimdi betik taramanın bittiği saatin kaça denk geldiğini önbelleğe atsın:


Şimdi ise taramanın ne kadar sürdüğünü hesaplamak için, taramanın başlatıldığı saatten taramanın bittiği saati çıkarsın:


Ekrana taramanın ne kadar sürdüğünü yansıtması için de:


%100 Python kullanarak, bir çok ortamda rahatça çalışabilen, basit bir port tarama aracı yazmış olduk. İstersek Wireshark çalıştırarak betiğin ne yaptığını görebiliriz. Bu bize port tarama araçlarının temel prensiplerini anlamamızda yardımcı olacaktır.

İşte betiğin tamamı:

on 14 Temmuz by Berk Cem Göksel |   Edit