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ı
- 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.
- 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.
- 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