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.

Tepkiniz ne oldu ?

Heyecanlı
0
Mutlu
0
Aşık
0
Emin değilim
0
Şapşal
0

İlginizi Çekebilir

Bir cevap bırakın

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

Daha fazlası:Sızma Testleri