Python ile Kendi Ağ Tarayıcınızı Yazın: Scapy ve ARP Rehberi
Python ve Scapy kütüphanesini kullanarak yerel ağdaki cihazları keşfedin, ARP protokolünün çalışma mantığını uygulamalı olarak öğrenin.
Python ile Kendi Ağ Tarayıcınızı Yazın: Scapy ve ARP Rehberi
Python ve Scapy kütüphanesini kullanarak yerel ağdaki cihazları keşfedin, ARP protokolünün çalışma mantığını uygulamalı olarak öğrenin.
Giriş
Siber güvenlik dünyasına adım attığınızda veya ağ yönetimiyle ilgilendiğinizde, ilk öğrenmeniz gereken şeylerden biri “Farkındalık”tır. Şu an ağımda kimler var? Hangi cihazlar bağlı? Bu soruların cevabını bulmak için hazır araçlar (Nmap, Netdiscover vb.) olsa da, kendi aracınızı yazmak ağ protokollerinin nasıl çalıştığını anlamanın en iyi yoludur.
Bu yazıda, Python’un güçlü kütüphanesi Scapy’yi kullanarak, yerel ağımızdaki cihazların IP ve MAC adreslerini tespit eden bir “Network Scanner” (Ağ Tarayıcısı) yazacağız.

Neden ARP Protokolünü Kullanıyoruz?
Kodlamaya geçmeden önce mantığı anlamalıyız. Bir ağdaki cihazlar birbirleriyle iletişim kurmak için IP adreslerini kullanırlar ancak veri paketi fiziksel olarak iletilirken MAC (Media Access Control) adresine ihtiyaç duyar.
İşte burada ARP (Address Resolution Protocol) devreye girer. Bizim yazacağımız programın çalışma mantığı şudur:
- Ağdaki tüm cihazlara “Bu IP adresi kimde?” diye soran bir paket gönder (Broadcast).
- İlgili IP’ye sahip cihaz, “O IP bende, MAC adresim de bu!” diye cevap verir.
- Gelen cevapları topla ve listele.

Gerekli Kütüphaneler
Projemizde iki temel kütüphane kullanacağız:
- Scapy: Paket oluşturmak, göndermek ve ağ trafiğini analiz etmek için.
- Argparse: Terminalden parametre alarak aracımızı daha profesyonel hale getirmek için.
Terminalden pip install scapy diyerek kurulumu yapabilirsiniz.
Adım Adım Kodlama
1. Kullanıcıdan Girdi Alma (Argparse)
Statik bir kod yazmak yerine, kullanıcının taramak istediği IP aralığını terminalden girmesini istiyoruz. Bunun için get_arguments fonksiyonunu oluşturuyoruz:
import scapy.all as scapy
import argparse
def get_arguments():
parser = argparse.ArgumentParser(description="Network Scanner Tool")
parser.add_argument("-t", "--target", dest="target", help="Taranacak IP Adresi veya Aralığı")
options = parser.parse_args()
if not options.target:
parser.error("Lütfen bir IP adresi belirtin. Yardım için --help kullanın.")
return options
Bu sayede programımızı python scanner.py -t 192.168.1.1/24 şeklinde çalıştırabileceğiz.
2. Paketi Oluşturma ve Gönderme (Scapy)
İşin en heyecanlı kısmı burası. Scapy’nin katmanlı yapısını kullanarak bir ARP isteği oluşturacağız.
def scan(ip):
# 1. ARP İsteği: "Bu IP kimde?" sorusu
arp_request = scapy.ARP(pdst=ip)
# 2. Broadcast: Paketin ağdaki herkese gitmesi için
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
# 3. Paketleri Birleştirme (Scapy'de '/' operatörü kullanılır)
arp_request_broadcast = broadcast / arp_request
# 4. Gönderme ve Cevap Alma
# srp (send receive packets) fonksiyonu 2. katmanda (Ethernet) çalışır.
answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0]
clients_list = []
# Gelen cevapları anlamlı bir listeye dönüştürme
for element in answered_list:
client_dict = {"ip": element[1].psrc, "mac": element[1].hwsrc}
clients_list.append(client_dict)
return clients_list
Burada scapy.srp fonksiyonu, oluşturduğumuz paketi gönderir ve gelen cevapları dinler. verbose=False parametresi, ekrana gereksiz detayların basılmasını engeller.
3. Sonuçları Görselleştirme
Elde ettiğimiz verileri (IP ve MAC adresleri) okunabilir bir tablo halinde sunmak için print_result fonksiyonunu yazıyoruz:
def print_result(results_list):
print("-" * 50)
print(f"{'IP Address':<20} {'MAC Address':<20}")
print("-" * 50)
for client in results_list:
print(f"{client['ip']:<20} {client['mac']:<20}")
Sonuç ve Çalıştırma
Kodların tam hali : https://github.com/Cinargenc/my_net_scanner
Tüm parçaları birleştirdiğimizde, kendi ağ tarayıcımız hazır! Script’i çalıştırmak için terminali açın ve root yetkileriyle (Scapy ağ kartına erişmek için root yetkisi ister) şu komutu girin(Öncesinde terminalde ip a şeklinde taratarak bilmiyorsanız ip adresinizi öğrenebilirsiniz):
sudo python3 network_scanner.py -t 192.168.1.1/24
Kali Linux makinemizde çalıştırdığımızda alacağımız çıktı:

Gördüğünüz gibi, sadece birkaç satır Python kodu ile ağımızdaki cihazları haritalandıran güçlü bir araç yazdık. Bu projeyi geliştirmek için üretici firma bilgilerini de (OUI lookup) ekleyebilir veya sonuçları bir dosyaya kaydedebilirsiniz.
İyi kodlamalar!
메타데이터
- post_id
- c4b4746c76ef
- slug
- python-ile-kendi-ağ-tarayıcınızı-yazın-scapy-ve-arp-rehberi-c4b4746c76ef
- url
- https://medium.com/@cinargencc/python-ile-kendi-a%C4%9F-taray%C4%B1c%C4%B1n%C4%B1z%C4%B1-yaz%C4%B1n-scapy-ve-arp-rehberi-c4b4746c76ef
- canonical_url
- https://medium.com/@cinargencc/python-ile-kendi-a%C4%9F-taray%C4%B1c%C4%B1n%C4%B1z%C4%B1-yaz%C4%B1n-scapy-ve-arp-rehberi-c4b4746c76ef
- author_url
- https://medium.com/@cinargencc
- status
- ok
- fetched_at
- 2026-07-14 21:01:18