Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pypacker — :package: La lib de manipulation de paquets la plus rapide et la plus simple pour Python | Kitploit
Outils/GitLabGitLab/mike01/pypacker
Sniffing et Analyse de PaquetsProxies Web et InterceptionSécurité RéseauTests d'IntrusionUtilitaires et FrameworksRed Teaming
GitLabmike01/pypacker

pypacker

📦 La lib de manipulation de paquets la plus rapide et la plus simple pour Python

Voir le dépôt
2818il y a 23 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Informations générales

Voici Pypacker : la bibliothèque de manipulation de paquets bas niveau la plus rapide et la plus simple pour Python. Voir les exemples ci-dessous pour ce que vous pouvez en faire.

Si vous souhaitez soutenir ce projet, vous pouvez Faire un don avec PayPal via PayPal.

Ce que vous pouvez faire avec Pypacker

  • Créer des paquets personnalisés via des mots-clés ou à partir d'octets bruts et lire/modifier leurs données via Python : examples/create_packets.py
  • Lire/écrire des paquets depuis/vers un fichier pcap (prise en charge uniquement du format pcap Wireshark/tcpdump) : examples/pcap_read_write.py
  • Fusionner plusieurs fichiers pcap en un seul fichier. Essaie de lire les fichiers pcap corrompus et permet le filtrage par rappel : examples/pcap_merge.py
  • Envoyer/recevoir des paquets de couche 2 : examples/send_receive_l2.py
  • Intercepter (et modifier) des paquets, par exemple pour un MITM : examples/interceptor3.py

Prérequis

  • Python 3.x (CPython, Pypy, Jython ou tout autre interpréteur)
  • Optionnel : netifaces >=0.10.6 (pour les utilitaires)
  • Optionnel (pour l'intercepteur) :
    • CPython
    • Système basé sur Linux avec prise en charge de la cible NFQUEUE par le noyau. L'option de configuration du noyau se trouve dans :
      • Options réseau -> Filtrage des paquets réseau -> Netfilter central -> Cible NFQUEUE
    • iptables (alternativement nftables)
      • Les règles liées à NFQUEUE peuvent être ajoutées, par exemple "iptables -I INPUT 1 -j NFQUEUE --queue-num 0"
    • bibliothèque libnetfilter_queue (voir http://www.netfilter.org/projects/libnetfilter_queue)

Installation

Quelques exemples :

  • Cloner la version la plus récente
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypi n'est plus pris en charge en raison de leur mécanisme d'authentification compliqué, désolé.

Exemples d'utilisation et documentation

Voir :

  • Les exemples ci-dessus
  • Les exemples dans le répertoire ./examples
  • Wiki Gitlab : https://gitlab.com/mike01/pypacker/-/wikis/home

Les protocoles eux-mêmes (voir layerXYZ) n'ont généralement pas beaucoup de documentation car ils sont documentés par leurs RFC/standards officiels respectifs.

Tests

Les tests sont exécutés comme suit :

  1. Ajouter le répertoire Pypacker au PYTHONPATH.
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. Exécuter les tests
  • python tests/test_pypacker.py

Résultats des tests de performance :

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

nr = new results on this machine
Rounds per test: 10000
=====================================
>>> Packet parsing (Ethernet + IP + UDP + DNS): Search UDP port
Time diff: 0.1409761905670166s
nr = 70933 p/s
>>> Packet parsing (Ethernet + IP + TCP + HTTP): Search TCP port
Time diff: 0.3157649040222168s
nr = 31669 p/s
>>> Packet parsing (Ethernet + IP + TCP + HTTP): Reading all header
Time diff: 0.5989120006561279s
nr = 16696 p/s
>>> Parsing first layer (IP + ICMP)
Time diff: 0.014587163925170898s
nr = 685534 p/s
>>> Creating/direct assigning (IP only header)
Time diff: 0.02884364128112793s
nr = 346696 p/s
>>> bin() without change (IP)
Time diff: 0.013646364212036133s
nr = 732795 p/s
>>> Output with change/checksum recalculation (IP)
Time diff: 0.07719659805297852s
nr = 129539 p/s
>>> Basic/first layer parsing (Ethernet + IP + TCP + HTTP)
Time diff: 0.019113540649414062s
nr = 523189 p/s
>>> Changing Triggerlist element value (Ethernet + IP + TCP + HTTP)
Time diff: 0.017654895782470703s
nr = 566415 p/s
>>> Changing dynamic field (Ethernet + IP + TCP + HTTP)
Time diff: 0.006037473678588867s
nr = 1656321 p/s
>>> Direct assigning and concatination (Ethernet + IP + TCP + HTTP)
Time diff: 0.2050457000732422s
nr = 48769 p/s
.>>> Performance test pypacker vs. dpkt vs. scapy
Comparing pypacker, dpkt and scapy performance (parsing Ethernet + IP + TCP + HTTP)
nr = new results on this machine
Rounds per test: 10000
>> Testing pypacker parsing speed
nr = 194382 p/s
>> Testing dpkt parsing speed
Could not execute dpkt tests: ModuleNotFoundError("No module named 'dpkt'")
>> Testing scapy parsing speed
nr = 2775 p/s

FAQ

Pour toute question restante, veuillez créer un rapport de bug (il sera étiqueté « questions »).

Q: Quelle est la vitesse de pypacker ?

A: Voir les résultats ci-dessus. Pour des résultats détaillés sur votre machine, exécutez les tests : python tests/test_pypacker.py PerfTestCase

Q: Quels protocoles sont pris en charge ?

A: Actuellement, les protocoles minimum pris en charge sont : 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

Q: Y a-t-il des projets pour prendre en charge [xyz] ?

A: Les nouvelles fonctionnalités sont ajoutées à Pypacker parce que j'en ai besoin ou que des personnes y contribuent - il n'existe pas de plans formels pour ajouter la prise en charge de fonctionnalités particulières dans les versions futures. Une directive générale pour la contribution se trouve dans le fichier HACKING.

Q: Comment puis-je contribuer à ce projet ?

A: Veuillez utiliser le suivi de bugs Gitlab pour les bugs/demandes de fonctionnalités. Veuillez lire le suivi de bugs pour les bugs déjà connus avant d'en signaler un nouveau. Les correctifs peuvent être envoyés via une demande de tirage (pull request).

Q: Il y a un problème xyz avec Pypacker utilisant Windows 3.11/XP/7/8/mobile, etc. Pouvez-vous le corriger ?

A: Les fonctionnalités de base devraient fonctionner avec n'importe quel système d'exploitation. Les fonctionnalités optionnelles peuvent poser problème (par exemple l'intercepteur).

Q: Sous quelle licence Pypacker est-il publié ?

A: C'est la licence GPLv2 (voir le fichier LICENSE pour plus d'informations).

Q: L'appel de copy.deepcopy(some_packet) lève une exception "TypeError: can't pickle Struct objects".

A: Essayez la solution de contournement suivante pour pouvoir sérialiser (pickle) les objets Struct :

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

copyreg.pickle(struct.Struct, pickle_struct)

Conseils d'utilisation

Concernant les performances

  • Pour des performances maximales, commencez à accéder aux attributs au niveau le plus bas via la notation par index suivante. Cela analysera paresseusement uniquement les couches nécessaires en arrière-plan :
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
]
...
  • Évitez de convertir les paquets en utilisant le format "%s" ou "%r" car cela déclenche une analyse en arrière-plan :
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# This parses ALL layers
packet_print = "%s" % pkt
  • Évitez de rechercher une couche en utilisant la notation par index à valeur unique via pkt[L], car cela analyse toutes les couches jusqu'à ce que L soit trouvée ou que la couche la plus haute soit atteinte :
root@kitploit:~
packet_found = pkt[Telnet]
# Alternative: Use multi-value index-notation. This will stop parsing at any non-matching layer:
packet_found = pkt[Ethernet,IP,TCP,Telnet]
  • Utilisez pypy (~3 fois plus rapide que CPython en ce qui concerne l'analyse complète des paquets)

  • Pour encore plus de performances, désactivez les champs automatiques (affecte l'appel de bin(...)) :

root@kitploit:~
pkt = ip.IP(src_s="1.2.3.4", dst_s="1.2.3.5") + tcp.TCP()
# Disable checksum calculation (and any other update) for IP and TCP (only THIS packet instance)
pkt.sum_au_active = False
pkt.tcp.sum_au_active = False
bts = pkt.bin(update_auto_fields=False)
  • Agrandissez les tampons de réception/envoi pour obtenir des performances maximales. Cela peut être fait en utilisant les commandes suivantes (tiré de : 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

Divers

  • L'assemblage des flux TCP/UDP peut être effectué par tshark en utilisant des tubes (pipes) avec "-i -" et "-z follow,prot,mode,filter[,range]"
  • Choisir la « couche la plus basse » appropriée lors de la lecture de fichiers de capture : ouvrez le fichier, par exemple avec Wireshark, et examinez les détails du paquet pour la couche de liaison de données. La plupart du temps, ce sera probablement Ethernet II, qui peut être analysée avec layer12.ethernet.Ethernet. Lors d'une capture via l'option "-i any" de Wireshark/tshark, cela conduit à une capture Linux cooked représentée par layer12.linuxcc.LinuxCC.
Télécharger l’outil