Zum Inhalt springen
Vuk Cvetković
Projekte

Network Traffic Analyzer

Ein Mitschnitt, einmal gelesen, und zwölf Fragen an jedes Paket darin.

Jahr
2024
Rahmen
Seminararbeit, Fakultät für Elektronik in Niš
Domäne
Analyse von Paketmitschnitten

Der Weg einer Anfrage

  1. Eingang: Ein .pcapng-Mitschnitt
  2. Orchestrierung: Pyshark, über Wiresharks tshark - Pyshark, Wireshark
  3. Parallel
    • Anwendungsprotokolle - HTTP, HTTPS, DNS, FTP, SMTP
    • Transport und Steuerung - TCP, UDP, ICMP, ARP
    • Adressierung - IP, Ethernet
  4. Ausgabe: Eine Zeile je Paket - Aufklappbar und in den Diagrammen gezählt - Tkinter, Matplotlib

Überblick

Die Arbeit behandelt, wie Netzwerkverkehr analysiert wird und warum PCAP dafür zum Standardformat wurde. Die Anwendung setzt das praktisch um: Nach dem Öffnen eines Mitschnitts zeigt sie, was jedes Paket enthält, Protokoll für Protokoll.

Darunter arbeitet Wireshark: Pyshark steuert dessen tshark, und daher kommt die Breite beim Parsen. Darauf aufbauend stellt die Anwendung jedem Paket der Datei dieselben festen Fragen und zeigt alle Antworten an einer Stelle. Genau das braucht man, wenn man etwas sucht und noch nicht weiß, in welchem Paket es steckt.

Technologien

Oberfläche
Python
Tkinter
Mitschnitt
Pyshark
Wireshark
Diagramme
Matplotlib

Architektur

  1. Der Mitschnitt wird einmal gelesen

    Ein Dateidialog nimmt eine .pcapng- oder .pcap-Datei entgegen, Pyshark öffnet sie, und alle Pakete landen in einer Liste im Speicher, bevor die Datei geschlossen wird. Danach wird die Datei nicht mehr gelesen, deshalb kosten die Filter kaum etwas: Sie laufen über die Liste, statt den Mitschnitt neu zu parsen.

  2. Jedes Paket wird Schicht für Schicht durchgegangen

    Die Protokollnamen kommen aus dem Schichtenstapel des Pakets selbst und nicht aus einer Nachschlagetabelle. So meldet jedes Paket, was es tatsächlich enthält, und die Zählung am Ende erfasst echte Schichten. Danach laufen zwölf Extraktoren nacheinander, und jeder prüft zuerst, ob sein Protokoll vorhanden ist, bevor er irgendetwas anfasst.

  3. Jeder Extraktor fragt, bevor er liest

    Dass einem Paket ein Feld fehlt, ist kein Fehler, sondern der Normalfall. Deshalb prüft jeder Extraktor vor dem Lesen, ob ein Attribut existiert, und lässt Fehlendes einfach weg. Darum ist der Baum ungleichmäßig: Ein HTTP-Paket zeigt ein Dutzend Felder, das nächste zwei, und beides stimmt.

  4. Was im Klartext übertragen wird, erscheint im Klartext

    HTTP-Basic-Zugangsdaten sind nur base64-kodiert, nicht verschlüsselt, also dekodiert der Extraktor sie. FTP schickt Benutzername und Passwort als Klartext, also erscheinen auch sie. Genau diesen ehrlichen Nachweis wollte die Arbeit führen: keine Behauptung, dass diese Protokolle unsicher sind, sondern die dekodierte Zeichenkette, die im Baum vor Ihnen steht.

  5. Die Ergebnisse landen in einem Baum und in Diagrammen

    Jedes Paket wird zu einer Zeile mit Zeitstempel, Quell- und Ziel-IP, Länge und Protokollliste, die sich in einen Knoten je Protokoll und ein Blatt je Feld aufklappen lässt. Derselbe Durchgang liefert die Anzahl je Protokoll, die Matplotlib als Kreis- und Balkendiagramm direkt ins Fenster zeichnet.

Was es kann

  • Zwölf Protokolle, je Paket

    HTTP, HTTPS, DNS, FTP, SMTP, ARP, ICMP, IP, Ethernet, TCP, UDP und FPP, jedes mit eigenem Extraktor und eigenen Feldern.

  • Filter nach fünf Kriterien

    Ein Datums- und Zeitbereich, eine Quell-IP, eine Ziel-IP und eine durch Kommas getrennte Protokollliste. Bleibt die Uhrzeit leer, gilt der ganze Tag, von 00:00:00 bis 23:59:59.

  • Ein Baum, keine Textwand

    Paket, dann Protokoll, dann Feld, und jede Ebene erscheint erst, wenn Sie sie aufklappen. So bleibt auch ein Mitschnitt mit Tausenden Paketen übersichtlich.

  • Protokollverteilung auf einen Blick

    Ein Kreisdiagramm für die Anteile und ein Balkendiagramm für die Anzahl, bei jedem Filtern neu gezeichnet, sodass sichtbar wird, was ein Filter tatsächlich entfernt hat.

  • Zugangsdaten im Klartext, als solche gezeigt

    Dekodierte HTTP-Basic-Zugangsdaten sowie FTP-Benutzernamen und -Passwörter: das kürzeste Argument dagegen, diese Protokolle unverschlüsselt zu verwenden.

  • Beide PCAP-Generationen

    Der Dialog akzeptiert .pcapng und .pcap. Das neuere Format enthält mehr Metadaten und kann mehrere Schnittstellen abbilden, gelesen wird es vom selben Code.

Was ich daraus mitnehme

Dass die Anwendung mit jedem Mitschnitt funktioniert, liegt an der Disziplin, die das Format erzwingt. Ein Paket garantiert nicht, welche Felder es enthält, also ist jeder Zugriff abgesichert, und ein fehlendes Feld ist ein normales Ergebnis und kein Fehler. Weil die zwölf Extraktoren einzeln ausgeschrieben sind, bleibt das überall sichtbar, und deshalb laufen ein Mitschnitt mit zwei Paketen und einer mit zweitausend ohne einen einzigen Sonderfall durch denselben Code.

Weil der Mitschnitt nur einmal gelesen wird, reagiert alles Weitere sofort. Jeder Filter, jede Neuzählung und jedes neu gezeichnete Diagramm arbeitet mit der Liste, die schon im Speicher liegt. Ändert man ein Datum oder eine IP-Adresse, erscheint gleich eine neue Ansicht desselben Mitschnitts, ohne dass die Datei erneut gelesen wird.

Alle Projekte

Esc