Ú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
- Import knihoven: Na začátku importujeme všechny potřebné knihovny.
- 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. - Uložení informací: Informace o paketu jsou uloženy do textového souboru, který je pojmenován podle zdrojové IP adresy.
- 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
- Otevřete příkazový řádek (CMD) jako administrátor.
- 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ý.