Zurück zu den Updates
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

# Raw-Socket-basierter Netzwerk-Paket-Sniffer Ein auf Raw-Sockets basierender Netzwerk-Paket-Sniffer, der TCP/IP-Pakete von Netzwerkschnittstellen erfasst und zerlegt – für Sicherheitsanalysen und zu Bildungszwecken.

Teilen

RootWire

CI PyPI Python Version OS License

Ein Netzwerkverkehrs-Monitor für GNU/Linux — ehemals bekannt als Packet-Sniffer. Frames werden über einen Raw-Socket von einer Netzwerkschnittstelle erfasst, mit der NETProtocols-Bibliothek Schicht für Schicht dekodiert und live dargestellt, in eine pcap-Datei geschrieben oder als JSON gestreamt:

[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
    [+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
        EtherType: IPv4
    [+] IPv4 192.168.1.96 -> 142.250.79.78
        TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
        Protocol: TCP | Checksum: 0x2b51
    [+] TCP 51888 -> 443
        Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
        Window: 64240 | Checksum: 0x2008 | Options: 20 bytes

Der Dekoder deckt Ethernet, ARP, IPv4 (Optionen und Fragmente), IPv6 einschließlich Extension Headers (ein MLD-Report rendert seine vollständige Hop-by-Hop-Kette), ICMPv4/v6, TCP (optionsbewusste Payload-Offsets) und UDP ab. Fehlerhafte oder abgeschnittene Frames werden diagnostiziert, anstatt die Erfassung zum Absturz zu bringen, unbekannte Protokolle beenden die Kette sauber, und eine 16-Schichten-Obergrenze verhindert, dass manipulierte Extension-Header-Stapel verstärkt werden — die Erfassung übersteht, was auch immer das Netzwerk liefert.

Installation

pipx install rootwire        # oder: uv tool install rootwire

Oder aus einem Klon mit uv ausführen:

git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync

Verwendung

rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]

options:
  -i, --interface   Schnittstelle, von der Frames erfasst werden (Standard: alle Schnittstellen)
  -r, --read FILE   Frames aus einer klassischen pcap-Datei abspielen statt Live-
                    Erfassung (keine Privilegien erforderlich)
  -w, --write FILE  zusätzlich jeden erfassten Frame in eine klassische pcap-Datei schreiben
  --json            ein NDJSON-Objekt pro Frame auf stdout (Banner und
                    Statistiken bleiben auf stderr): direkt in jq pipen
  -d, --data        zusätzlich die rohe Payload jedes Frames anzeigen (wird mit --json ignoriert)

Erfassungsstatistiken — Frames, Bytes, Frames/s, fehlerhafte/abgeschnittene Zähler, Aufschlüsselung nach Protokoll — werden auf stderr gemeldet, wenn die Erfassung endet. Einige beliebte Kombinationen:

sudo rootwire -i eth0 -w session.pcap   # erfassen und Beweise aufbewahren
rootwire -r session.pcap                # später inspizieren, ohne root
rootwire -r session.pcap --json | jq .  # maschinenlesbare Analyse

Live-Erfassung benötigt einen Raw-Socket, was unter Linux root bedeutet (sudo rootwire -i eth0) oder das Gewähren der CAP_NET_RAW-Fähigkeit für den Interpreter. Das Abspielen von Dateien mit -r benötigt niemals Privilegien. Aus einem Klon ausführen als sudo .venv/bin/python -m rootwire.

So funktioniert es

capture.py liefert rohe Frames von einem AF_PACKET-Socket (oder pcap.py spielt sie aus einer Datei ab — die beiden Quellen sind austauschbar); decoder.py durchläuft die Protokollkette jedes Frames in ein unveränderliches DecodedFrame; Ausgaben — der Bildschirm-Renderer, der NDJSON-Stream, der pcap-Schreiber, der Statistik-Sammler — konsumieren jeden Frame über eine kleine Output-Schnittstelle. Die vollständige Tour, einschließlich warum der Speicher bei langen Erfassungen flach bleibt und wie man eine Ausgabe hinzufügt, findet sich in ARCHITECTURE.md.

Alles außer dem Raw-Socket läuft auf jedem Betriebssystem, sodass die Testsuite — die einen Korpus aus 65 Frames real erfassten Verkehrs enthält, der durch die gesamte Pipeline abgespielt wird — weder root noch Linux benötigt:

uv run pytest

Roadmap

  • BPF-Filterung (Kernel-seitige Erfassungsfilter)
  • Kernel-Zeitstempel (SO_TIMESTAMPNS) und SIGTERM-saubere Dienstnutzung
  • Prüfsummen-Verifizierungsdarstellung (die Bibliothek berechnet sie bereits)

Rechtlicher Haftungsausschluss

Die Verwendung des in diesem Repository enthaltenen Codes, sei es teilweise oder in seiner Gesamtheit, zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze zu befolgen.

Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch irgendeinen Code in diesem Repository verursacht werden, falls er — versehentlich oder anderweitig — von einem Bedrohungsakteur oder einer unbefugten Entität genutzt wird, um die Sicherheit, Privatsphäre, Vertraulichkeit, Integrität und/oder Verfügbarkeit von Systemen und ihren zugehörigen Ressourcen zu gefährden. In diesem Kontext wird der Begriff „Gefährdung" fortan als die Ausnutzung bekannter oder unbekannter Schwachstellen in besagten Systemen verstanden, einschließlich, aber nicht beschränkt auf, die Implementierung von Sicherheitskontrollen, ob menschlich oder elektronisch ermöglicht.

Die Verwendung dieses Codes wird von den Entwicklern nur in jenen Umständen befürwortet, die direkt mit Bildungsumgebungen oder autorisierten Penetrationstest-Einsätzen zusammenhängen, deren erklärter Zweck es ist, Schwachstellen in Systemen zu finden und zu beheben, um deren Exposition gegenüber Gefährdungen und Exploits zu begrenzen, die von böswilligen Akteuren gemäß ihren jeweiligen Bedrohungsmodellen eingesetzt werden.

Lizenz

AGPL-3.0

Kategorien