Port Scanner

Simge Karahan
2 min readDec 6, 2020

--

Merhaba, bu yazımda size Python’da soket kullanımından ve bir port tarama uygulamasından bahsedeceğim.

Python, BSD soketine erişim sağlayabilen bir programlama dilidir. BSD soket, Tcp/ip bağlantılarının kurulabildiği bir programlama arabirimidir. Bu arabirim ile hedefin Tcp/ip soketlerindeki trafik dinlenebilir. Hedefin Tcp’si istismar edildiğinde portlarda çalışan servislere de ulaşılmış olur. Bir ağa saldırı yapmak için önce mutlaka port bilgileri elde edilir. Hangi portların açık olduğunu ve portlar üstünde hangi servislerin çalıştığını bilmek ağa saldırı yapmak için kullanılır. Çünkü bilgisayarlar diğer cihazlarla iletişim kurarken ilgili portu açarlar ve o port üzerinden veri alışverişini gerçekleştirirler. Bu portlar açık olduğu için hackerlar tarafından sömürülebilir durumda olur.

Python’da soket fonksiyonları:

Soket Oluşturma:
sock = socket.socket(socket_family,socket_type)

Stream Soketi Oluşturma:
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

AF_INET: Soket Ailesi (Tcp ve Udp için ipv4'tür)

SOCK_STREAM: Tcp bağlantı için soket tipi

SOCK_DGRAM: Udp bağlantı için soket tipi

gethostbyname(“host”): Hostu ipv4 adres formatına dönüştürme

socket.gethostbyname_ex(“host”): hostu ipv4 adres formatına dönüştürmek için genişletilmiş arayüz

socket.getfqdn(“8.8.8.8”): Fully Qualified Domain Name, yani tam nitelikli domain adı. Bir site için dns’in tüm yapısına denir.

socket.gethostname(): Host name, ağ üzerinde bulunan cihazların Dns karşılıklarıdır.

Socket.error: hata durumları için kullanılır

Not: İnternet sitelerinin ip adresleri ve bu adreslere karşılık gelen isimleri vardır. Biz bu isimlerle sitelere ulaşırken aslında Dns sayesinde ip adresleri yerine bu isimleri kullanırız. Ağda bulunan cihazların Dns karşılıklarına host name (alan adı) denir. Ağ üzerinde cihazlar host name ve bu host name’e ait ip adresleri barındırırlar. Bir sitenin internet ortamında ulaşılabilir olması için Dns ve Fqdn oluşturulmalıdır. Örneğin Google.com alan adıdır ama “translate.google.com” ifadesi Fqdn’dir.

Port tarama uygulaması:

  • Socket kütüphanesi eklenir.
  • Port taraması yapılacak host girişi ve hosta ait ip adresi elde edilir.
  • 1–100 aralığındaki port numaraları taranması için for döngüsü kullanılır.
  • socket.socket(Family,Type) için önce af_inet ile aile(ipv4), sonra sock_stream ile Tcp bağlantı tipi belirlenir.
  • sock.connect_ex((ip,port)) ile belirlenen ip adresi için 1–100 arasındaki portlara bakılarak açık mı ya da kapalı mı oldukları belirlenir.

Sonuç çıktısına bakıldığında port durumları aşağıdaki gibi gözükmektedir:

Bir internet sayfasında bu port tarama işlemini gerçekleştirdiğimiz için 80 numaralı portun açık olduğunu görmekteyiz:

Kodlara github’dan ulaşmak için → tıklayabilirsiniz

--

--

No responses yet