Analýza síťového provozu s využitím Pythonu a Scapy

author
3 minutes, 9 seconds Read

Úvod

V dnešním článku se podíváme na jednoduchý Python skript, který nám umožní analyzovat síťový provoz. Skript využívá knihovnu Scapy, která je velmi oblíbená pro manipulaci s pakety na síťové vrstvě.

Kód:

# Importujeme potřebné knihovny
import os
from scapy.all import *
import traceback

# Funkce, která se zavolá při zachycení paketu
def packet_callback(packet):
    # Kontrola, zda paket obsahuje IP vrstvu
    if packet.haslayer(IP):
        ip_src = packet[IP].src
        ip_dst = packet[IP].dst
        protocol = packet[IP].proto

        # Sestavení informací o paketu
        packet_info = f"IP zdroj: {ip_src} | IP cíl: {ip_dst} | Protokol: {protocol}\n"

        # Kontrola, zda paket obsahuje TCP vrstvu
        if packet.haslayer(TCP):
            tcp_sport = packet[TCP].sport
            tcp_dport = packet[TCP].dport
            tcp_flags = packet[TCP].flags
            packet_info += f"TCP zdrojový port: {tcp_sport} | TCP cílový port: {tcp_dport} | TCP flags: {tcp_flags}\n"

        # Kontrola, zda paket obsahuje UDP vrstvu
        elif packet.haslayer(UDP):
            udp_sport = packet[UDP].sport
            udp_dport = packet[UDP].dport
            packet_info += f"UDP zdrojový port: {udp_sport} | UDP cílový port: {udp_dport}\n"

        # Výpis všech vrstev a polí paketu
        packet_info += f"Raw Data: {packet.show(dump=True)}\n"

        # Kontrola existence složky pro logování
        log_directory = "packet_logs"
        if not os.path.exists(log_directory):
            os.makedirs(log_directory)

        # Uložení informací o paketu do souboru
        log_filename = f"{log_directory}/{ip_src}.txt"
        with open(log_filename, "a", encoding='utf-8') as f:
            f.write(packet_info)

        # Výpis informací o paketu na konzoli
        print(packet_info)

# Hlavní část kódu
try:
    # Spuštění sniffingu
    sniff(prn=packet_callback, store=0)
except Exception as e:
    # Zápis chyb do logovacího souboru
    with open('error_log.txt', 'a', encoding='utf-8') as f:
        f.write(str(e))
        f.write(traceback.format_exc())

Vysvětlení kódu

  1. Import knihoven: Na začátku importujeme všechny potřebné knihovny.
  2. Funkce packet_callback: Tato funkce je volána pokaždé, když je zachycen nový paket. Funkce analyzuje paket a extrahuje z něj potřebné informace.
  3. Uložení informací: Informace o paketu jsou uloženy do textového souboru, který je pojmenován podle zdrojové IP adresy.
  4. Hlavní část kódu: Zde spouštíme funkci sniff z knihovny Scapy, která začne zachytávat pakety.

Verze Pythonu

  • Doporučuje se použít Python 3.6 nebo novější.
  • Můžete stáhnout instalátor z oficiálního webu: Python.org

Instalace potřebných knihoven

Scapy

  1. Otevřete příkazový řádek (CMD) jako administrátor.
  2. Zadejte následující příkaz:
pip install scapy

Ostatní knihovny

  • V kódu jsou použity standardní Python knihovny (os, traceback), takže pro ně není potřeba žádná další instalace.

Další nastavení

Nastavení cesty k Pythonu

  • Ujistěte se, že cesta k Pythonu je přidána do systémové proměnné PATH.
  • To můžete ověřit tím, že zadejte python --version do CMD. Mělo by to vrátit verzi Pythonu.

Práva administrátora

  • Pro zachytávání paketů na síťovém adaptéru je obvykle potřeba mít administrátorská práva.
  • Spusťte skript v příkazovém řádku otevřeném jako administrátor.

Testování

  • Po instalaci všech knihoven a nastavení cesty k Pythonu spusťte skript a ověřte, zda funguje správně.

Závěr

Tento skript je jednoduchým nástrojem pro analýzu síťového provozu. Je ideální pro výukové účely nebo pro rychlou diagnostiku síťových problémů. Díky knihovně Scapy je kód relativně jednoduchý, ale přesto velmi mocný.

Podobné příspěvky

Napsat komentář