Sızma Testleri

Gelişmiş Ağ Trafiği Analizi Python Scripti

Ağ trafiği analizi, güvenlik araştırmacıları ve sistem yöneticileri için kritik bir işlemdir. Python‘un güçlü kütüphaneleri sayesinde, ağ trafiğini yakalamak, analiz etmek ve paketleri filtrelemek kolay hale gelir. Bu çalışmada, Scapy kullanarak gelişmiş bir ağ trafiği analiz aracı geliştireceğiz.

Kullanılan Kütüphaneler

  • Scapy: Paket oluşturma, yakalama ve analiz için kullanılır.
  • argparse: Komut satırında argümanlar almak için.
  • collections: Paket sayımlarını tutmak için.

Kurulum

Öncelikle gerekli kütüphaneleri yükleyelim:

pip install scapy

Örnek Ağ Trafiği Analiz Scripti

Kod: network_traffic_analyzer.py

Bu script, canlı ağ trafiğini dinler ve filtreleme seçeneklerine göre paketleri analiz eder.

from scapy.all import sniff, IP, TCP, UDP, ICMP
import argparse
from collections import defaultdict

# Paket sayılarını tutmak için bir sözlük
packet_counts = defaultdict(int)

def packet_callback(packet):
    """
    Paketler yakalandığında çalışacak geri çağırma fonksiyonu.
    Paket türüne göre sayaçları artırır ve bilgileri yazdırır.
    """
    if IP in packet:
        packet_counts["IP"] += 1
        src_ip = packet[IP].src
        dst_ip = packet[IP].dst
        print(f"[+] IP Packet: {src_ip} --> {dst_ip}")
        
        # TCP Paketi Kontrolü
        if TCP in packet:
            packet_counts["TCP"] += 1
            sport = packet[TCP].sport
            dport = packet[TCP].dport
            print(f"    [-] TCP Packet: Src Port: {sport} --> Dst Port: {dport}")
        
        # UDP Paketi Kontrolü
        elif UDP in packet:
            packet_counts["UDP"] += 1
            sport = packet[UDP].sport
            dport = packet[UDP].dport
            print(f"    [-] UDP Packet: Src Port: {sport} --> Dst Port: {dport}")
        
        # ICMP Paketi Kontrolü
        elif ICMP in packet:
            packet_counts["ICMP"] += 1
            print(f"    [-] ICMP Packet: Type: {packet[ICMP].type}")
    
    # Diğer paket türleri
    else:
        packet_counts["Other"] += 1
        print("[-] Non-IP Packet Detected")

def main():
    # Argümanları ayarlama
    parser = argparse.ArgumentParser(description="Network Traffic Analyzer with Scapy")
    parser.add_argument("-i", "--interface", type=str, help="Interface to listen on", required=True)
    parser.add_argument("-c", "--count", type=int, help="Number of packets to capture", default=10)
    parser.add_argument("-f", "--filter", type=str, help="BPF Filter for packet capturing", default="")
    args = parser.parse_args()

    print(f"[*] Listening on interface {args.interface}...")
    print(f"[*] Capturing {args.count} packets with filter '{args.filter}'")
    
    try:
        # Paketleri dinleme
        sniff(iface=args.interface, filter=args.filter, prn=packet_callback, count=args.count)
    except KeyboardInterrupt:
        print("\n[*] Stopping packet capture...")

    # Sonuçları gösterme
    print("\n[*] Packet Capture Summary:")
    for packet_type, count in packet_counts.items():
        print(f"{packet_type}: {count}")

if __name__ == "__main__":
    main()

Scriptin Açıklaması

  1. Argümanlar:
    • -i: Hangi ağ arayüzünden trafiği dinleyeceğinizi belirtir.
    • -c: Kaç paket yakalanacağını belirtir (varsayılan: 10).
    • -f: BPF (Berkeley Packet Filter) filtresi uygulamak için.
  2. Paket Callback Fonksiyonu:
    • Tüm IP paketlerini dinler.
    • TCP, UDP ve ICMP protokolleri için ayrıntılı bilgi gösterir.
    • Paket sayımlarını tutar.
  3. Sniffing:
    • sniff() fonksiyonu, Scapy’nin paket dinleme işlevini sağlar.
    • prn: Paket yakalandığında çalışacak callback fonksiyonu.

Bu script, Scapy kullanarak ağ trafiğini analiz eder ve belirli filtrelere göre paket bilgilerini sunar. Güvenlik analizleri ve ağ monitörleme çalışmaları için temel bir yapı sunar. Daha ileri seviyede, grafiksel raporlar veya otomatik saldırı tespiti gibi özellikler eklenebilir.

Yorum Gönder

1 Yorum

  • zoritoler imol
    8 Mayıs 2025, 16:31'de

    Nice post. I learn something more challenging on different blogs everyday. It will always be stimulating to read content from other writers and practice a little something from their store. I’d prefer to use some with the content on my blog whether you don’t mind. Natually I’ll give you a link on your web blog. Thanks for sharing.

    Reply

Bir yanıt yazın

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