Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pypacker — :package: Die schnellste und einfachste Bibliothek zur Paketmanipulation für Python | Kitploit
Tools/GitLabGitLab/mike01/pypacker
Paket-Sniffing & AnalyseWeb-Proxys & AbfangenNetzwerksicherheitPenetrationstestsDienstprogramme & FrameworksRed Teaming
GitLabmike01/pypacker

pypacker

📦 Die schnellste und einfachste Bibliothek zur Paketmanipulation für Python

Repository anzeigen
2818vor 25 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Allgemeine Informationen

Dies ist Pypacker: Die schnellste und einfachste Low-Level-Paketmanipulationsbibliothek für Python. Siehe unten Beispiele für das, was Sie damit machen können.

Wenn Sie dieses Projekt unterstützen möchten, können Sie Mit PayPal spenden via PayPal spenden.

Was Sie mit Pypacker machen können

  • Erstellen Sie benutzerdefinierte Pakete über Schlüsselwörter oder aus rohen Bytes und lesen/ändern Sie deren Daten über Python: examples/create_packets.py
  • Lesen/Schreiben von Paketen von/nach pcap-Datei (Unterstützung nur für Wireshark/tcpdump pcap-Format): examples/pcap_read_write.py
  • Zusammenführen mehrerer pcap-Dateien zu einer Datei. Versucht, beschädigte pcap-Dateien zu lesen und erlaubt Filterung per Callback: examples/pcap_merge.py
  • Senden/Empfangen von Layer-2-Paketen: examples/send_receive_l2.py
  • Abfangen (und Modifizieren) von Paketen z. B. für MITM: examples/interceptor3.py

Voraussetzungen

  • Python 3.x (CPython, Pypy, Jython oder ein anderer Interpreter)
  • Optional: netifaces >=0.10.6 (für utils)
  • Optional (für Interceptor):
    • CPython
    • Linux-basiertes System mit Kernel-Unterstützung für das NFQUEUE-Ziel. Die Kernel-Konfigurationsoption befindet sich unter:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables (alternativ nftables)
      • NFQUEUE-bezogene Regeln können z. B. mit "iptables -I INPUT 1 -j NFQUEUE --queue-num 0" hinzugefügt werden
    • libnetfilter_queue Bibliothek (siehe http://www.netfilter.org/projects/libnetfilter_queue)

Installation

Einige Beispiele:

  • Neueste Version klonen
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypi wird aufgrund ihres komplizierten Authentifizierungsmechanismus leider nicht mehr unterstützt.

Nutzungsbeispiele und Dokumentation

Siehe:

  • Beispiele oben
  • Beispiele im Verzeichnis ./examples
  • Gitlab Wiki: https://gitlab.com/mike01/pypacker/-/wikis/home

Die Protokolle selbst (siehe layerXYZ) haben im Allgemeinen nicht viel Dokumentation, da diese durch ihre jeweiligen RFCs/offiziellen Standards dokumentiert sind.

Testen

Tests werden wie folgt ausgeführt:

  1. Fügen Sie das Pypacker-Verzeichnis zum PYTHONPATH hinzu.
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. Tests ausführen
  • python tests/test_pypacker.py

Leistungstestergebnisse:

root@kitploit:~
Hardware: Intel CPU, 4 Cores @ 3.2 GHz
Python: CPython v3.10

nr = neue Ergebnisse auf diesem Rechner
Runden pro Test: 10000
=====================================
>>> Paketparsen (Ethernet + IP + UDP + DNS): UDP-Port suchen
Zeitdifferenz: 0.1409761905670166s
nr = 70933 p/s
>>> Paketparsen (Ethernet + IP + TCP + HTTP): TCP-Port suchen
Zeitdifferenz: 0.3157649040222168s
nr = 31669 p/s
>>> Paketparsen (Ethernet + IP + TCP + HTTP): Alle Header lesen
Zeitdifferenz: 0.5989120006561279s
nr = 16696 p/s
>>> Parsen der ersten Schicht (IP + ICMP)
Zeitdifferenz: 0.014587163925170898s
nr = 685534 p/s
>>> Erstellen/direktes Zuweisen (nur IP-Header)
Zeitdifferenz: 0.02884364128112793s
nr = 346696 p/s
>>> bin() ohne Änderung (IP)
Zeitdifferenz: 0.013646364212036133s
nr = 732795 p/s
>>> Ausgabe mit Änderung/Prüfsummen-Neuberechnung (IP)
Zeitdifferenz: 0.07719659805297852s
nr = 129539 p/s
>>> Basis-/Erstschichtparsen (Ethernet + IP + TCP + HTTP)
Zeitdifferenz: 0.019113540649414062s
nr = 523189 p/s
>>> Ändern eines Triggerlist-Elementwerts (Ethernet + IP + TCP + HTTP)
Zeitdifferenz: 0.017654895782470703s
nr = 566415 p/s
>>> Ändern eines dynamischen Felds (Ethernet + IP + TCP + HTTP)
Zeitdifferenz: 0.006037473678588867s
nr = 1656321 p/s
>>> Direktes Zuweisen und Verketten (Ethernet + IP + TCP + HTTP)
Zeitdifferenz: 0.2050457000732422s
nr = 48769 p/s
.>>> Leistungstest pypacker vs. dpkt vs. scapy
Vergleich der Leistung von pypacker, dpkt und scapy (Parsen von Ethernet + IP + TCP + HTTP)
nr = neue Ergebnisse auf diesem Rechner
Runden pro Test: 10000
>> Teste pypacker Parsing-Geschwindigkeit
nr = 194382 p/s
>> Teste dpkt Parsing-Geschwindigkeit
Konnte dpkt-Tests nicht ausführen: ModuleNotFoundError("No module named 'dpkt'")
>> Teste scapy Parsing-Geschwindigkeit
nr = 2775 p/s

FAQ

Bei verbleibenden Fragen bitte einen Fehlerbericht einreichen (wird als "questions" getaggt).

F: Wie schnell ist pypacker?

A: Siehe Ergebnisse oben. Für detaillierte Ergebnisse auf Ihrem Rechner führen Sie die Tests aus: python tests/test_pypacker.py PerfTestCase

F: Welche Protokolle werden unterstützt?

A: Derzeit werden mindestens folgende Protokolle unterstützt: Ethernet, Radiotap, IEEE80211, ARP, DNS, STP, PPP, OSPF, VRRP, DTP, IP, ICMP, PIM, IGMP, IPX, TCP, UDP, SCTP, HTTP, NTP, RTP, DHCP, RIP, SIP, Telnet, HSRP, Diameter, SSL, TPKT, Pmap, Radius, BGP

F: Gibt es Pläne, [xyz] zu unterstützen?

A: Neue Funktionen werden zu Pypacker hinzugefügt, wenn ich sie benötige oder Leute sie beitragen - es gibt keine formalen Pläne, bestimmte Funktionen in zukünftigen Versionen zu unterstützen. Eine allgemeine Richtlinie für Beiträge finden Sie in der Datei HACKING.

F: Wie kann ich zu diesem Projekt beitragen?

A: Bitte verwenden Sie den Gitlab-Bugtracker für Fehler/Feature-Anfragen. Bitte lesen Sie den Bugtracker für bereits bekannte Fehler, bevor Sie einen neuen einreichen. Patches können per Pull-Request gesendet werden.

F: Es gibt Problem xyz mit Pypacker unter Windows 3.11/XP/7/8/mobile usw. Können Sie das beheben?

A: Die grundlegenden Funktionen sollten mit jedem Betriebssystem funktionieren. Optionale können Probleme bereiten (z. B. Interceptor).

F: Unter welcher Lizenz wird Pypacker veröffentlicht?

A: Es ist die GPLv2-Lizenz (siehe LICENSE-Datei für weitere Informationen).

F: Aufruf von copy.deepcopy(some_packet) löst eine Ausnahme "TypeError: can't pickle Struct objects" aus.

A: Versuchen Sie den folgenden Workaround, um Struct-Objekte pickeln zu können:

root@kitploit:~
import struct, copyreg
def pickle_struct(s):
	return struct.Struct, (s.format,)

copyreg.pickle(struct.Struct, pickle_struct)

Nutzungshinweise

Leistungsbezogen

  • Für maximale Leistung greifen Sie auf Attribute auf niedrigster Ebene über die folgende Indexnotation zu. Dies wird nur die benötigten Schichten im Hintergrund träge parsen:
root@kitploit:~
pkt_eth, pkt_ip, pkt_tcp, pkt_http = pkt[
 	None,
	(None, lambda b: b.__class__ in [ip.IP, ip6.IP6]),
	(tcp.TCP, lambda c: c.dport==80),
	http.HTTP
]
...
  • Vermeiden Sie es, Pakete mit dem Format "%s" oder "%r" zu konvertieren, da dies das Parsen im Hintergrund auslöst:
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# Dies parst ALLE Schichten
packet_print = "%s" % pkt
  • Vermeiden Sie es, nach einer Schicht mit der Ein-Wert-Indexnotation über pkt[L] zu suchen, da dies alle Schichten parst, bis L gefunden oder die höchste Schicht erreicht ist:
root@kitploit:~
packet_found = pkt[Telnet]
# Alternative: Verwenden Sie die Mehr-Wert-Indexnotation. Dies stoppt das Parsen bei jeder nicht passenden Schicht:
packet_found = pkt[Ethernet,IP,TCP,Telnet]
  • Verwenden Sie pypy (~3x schneller als CPython in Bezug auf vollständiges Paketparsen)

  • Für noch mehr Leistung deaktivieren Sie Auto-Felder (beeinflusst den Aufruf von bin(...)):

root@kitploit:~
pkt = ip.IP(src_s="1.2.3.4", dst_s="1.2.3.5") + tcp.TCP()
# Deaktivieren Sie die Prüfsummenberechnung (und jede andere Aktualisierung) für IP und TCP (nur DIESE Paketinstanz)
pkt.sum_au_active = False
pkt.tcp.sum_au_active = False
bts = pkt.bin(update_auto_fields=False)
  • Vergrößern Sie die Empfangs-/Sendepuffer, um maximale Leistung zu erzielen. Dies kann mit den folgenden Befehlen erfolgen (entnommen von: http://www.cyberciti.biz/faq/linux-tcp-tuning/):
root@kitploit:~
sysctl -w net.core.rmem_max=12582912
sysctl -w net.core.rmem_default=12582912
sysctl -w net.core.wmem_max=12582912
sysctl -w net.core.wmem_default=12582912
sysctl -w net.core.optmem_max=2048000
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.unix.max_dgram_qlen=1000
sysctl -w net.ipv4.tcp_rmem="10240 87380 12582912"
sysctl -w net.ipv4.tcp_wmem="10240 87380 12582912"
sysctl -w net.ipv4.tcp_mem="21228 87380 12582912"
sysctl -w net.ipv4.udp_mem="21228 87380 12582912"
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_sack=1

Sonstiges

  • Die Zusammenstellung von TCP/UDP-Strömen kann mit tshark über Pipes erfolgen mit "-i -" und "-z follow,prot,mode,filter[,range]"
  • Auswahl der richtigen "niedrigsten Schicht" beim Lesen von Capture-Dateien: Öffnen Sie die Datei z. B. mit Wireshark und schauen Sie sich die Paketdetails für die Datenverbindungsschicht an. Meistens wird dies wahrscheinlich Ethernet II sein, das mit layer12.ethernet.Ethernet geparst werden kann. Wenn Sie z. B. mit der Wireshark/tshark-Option "-i any" erfassen, führt dies zu Linux cooked capture, das durch layer12.linuxcc.LinuxCC repräsentiert wird.
Tool herunterladen