Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pypacker — :package: La libreria di manipolazione dei pacchetti più veloce e semplice per Python | Kitploit
Strumenti/GitLabGitLab/mike01/pypacker
Sniffing e Analisi dei PacchettiProxy Web e IntercettazioneSicurezza di RetePenetration TestingUtilità e FrameworkRed Teaming
GitLabmike01/pypacker

pypacker

📦 La libreria di manipolazione dei pacchetti più veloce e semplice per Python

Vedi Repository
281823 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Informazioni generali

Questo è Pypacker: la libreria di manipolazione di pacchetti di basso livello più veloce e semplice per Python. Vedi gli esempi qui sotto per cosa puoi farci.

Se vuoi supportare questo progetto puoi Dona con PayPal tramite PayPal.

Cosa puoi fare con Pypacker

  • Creare pacchetti personalizzati tramite parole chiave o da byte grezzi e leggere/modificare i loro dati via Python: examples/create_packets.py
  • Leggere/scrivere pacchetti da/a file pcap (Supporto solo per il formato pcap di Wireshark/tcpdump): examples/pcap_read_write.py
  • Unire più file pcap in un unico file. Tenta di leggere file pcap corrotti e consente il filtraggio tramite callback: examples/pcap_merge.py
  • Inviare/ricevere pacchetti di livello 2: examples/send_receive_l2.py
  • Intercettare (e modificare) pacchetti, ad es. per MITM: examples/interceptor3.py

Prerequisiti

  • Python 3.x (CPython, Pypy, Jython o qualsiasi altro interprete)
  • Opzionale: netifaces >=0.10.6 (per utils)
  • Opzionale (per l'interceptor):
    • CPython
    • Sistema basato su Linux con supporto del kernel per il target NFQUEUE. L'opzione di configurazione del kernel si trova in:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables (in alternativa nftables)
      • Le regole relative a NFQUEUE possono essere aggiunte ad es. "iptables -I INPUT 1 -j NFQUEUE --queue-num 0"
    • libreria libnetfilter_queue (vedi http://www.netfilter.org/projects/libnetfilter_queue)

Installazione

Alcuni esempi:

  • Clona la versione più recente
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypi NON è più supportato a causa del loro complicato meccanismo di autenticazione, spiacenti.

Esempi di utilizzo e documentazione

Vedi:

  • Gli esempi sopra
  • Gli esempi nella directory ./examples
  • Wiki Gitlab: https://gitlab.com/mike01/pypacker/-/wikis/home

I protocolli stessi (vedi layerXYZ) generalmente non hanno molta documentazione perché sono documentati dai rispettivi RFC/standard ufficiali.

Test

I test vengono eseguiti come segue:

  1. Aggiungi la directory Pypacker al PYTHONPATH.
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. Esegui i test
  • python tests/test_pypacker.py

Risultati dei test di performance:

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

nr = nuovi risultati su questa macchina
Round per test: 10000
=====================================
>>> Parsing dei pacchetti (Ethernet + IP + UDP + DNS): Ricerca porta UDP
Time diff: 0.1409761905670166s
nr = 70933 p/s
>>> Parsing dei pacchetti (Ethernet + IP + TCP + HTTP): Ricerca porta TCP
Time diff: 0.3157649040222168s
nr = 31669 p/s
>>> Parsing dei pacchetti (Ethernet + IP + TCP + HTTP): Lettura di tutti gli header
Time diff: 0.5989120006561279s
nr = 16696 p/s
>>> Parsing del primo livello (IP + ICMP)
Time diff: 0.014587163925170898s
nr = 685534 p/s
>>> Creazione/assegnazione diretta (solo header IP)
Time diff: 0.02884364128112793s
nr = 346696 p/s
>>> bin() senza modifiche (IP)
Time diff: 0.013646364212036133s
nr = 732795 p/s
>>> Output con modifica/ricalcolo del checksum (IP)
Time diff: 0.07719659805297852s
nr = 129539 p/s
>>> Parsing di base/primo livello (Ethernet + IP + TCP + HTTP)
Time diff: 0.019113540649414062s
nr = 523189 p/s
>>> Modifica del valore di un elemento Triggerlist (Ethernet + IP + TCP + HTTP)
Time diff: 0.017654895782470703s
nr = 566415 p/s
>>> Modifica di un campo dinamico (Ethernet + IP + TCP + HTTP)
Time diff: 0.006037473678588867s
nr = 1656321 p/s
>>> Assegnazione diretta e concatenazione (Ethernet + IP + TCP + HTTP)
Time diff: 0.2050457000732422s
nr = 48769 p/s
.>>> Test di performance pypacker vs. dpkt vs. scapy
Confronto delle performance tra pypacker, dpkt e scapy (parsing di Ethernet + IP + TCP + HTTP)
nr = nuovi risultati su questa macchina
Round per test: 10000
>> Test della velocità di parsing di pypacker
nr = 194382 p/s
>> Test della velocità di parsing di dpkt
Non è stato possibile eseguire i test dpkt: ModuleNotFoundError("No module named 'dpkt'")
>> Test della velocità di parsing di scapy
nr = 2775 p/s

FAQ

Per qualsiasi domanda rimasta, apri una segnalazione di bug (verrà taggata come "questions").

D: Quanto è veloce pypacker?

R: Vedi i risultati sopra. Per risultati dettagliati sulla tua macchina esegui i test: python tests/test_pypacker.py PerfTestCase

D: Quali protocolli sono supportati?

R: Attualmente i protocolli minimi supportati sono: 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

D: Ci sono piani per supportare [xyz]?

R: Le nuove funzionalità vengono aggiunte a Pypacker perché mi servono o perché le persone le contribuiscono - non ci sono piani formali per aggiungere il supporto a particolari funzionalità in release future. Una linea guida generale per i contributi si trova nel file HACKING.

D: Come posso contribuire a questo progetto?

R: Per favore usa il bug-tracker di Gitlab per bug/richieste di funzionalità. Leggi il bugtracker per i bug già noti prima di aprirne uno nuovo. Le patch possono essere inviate tramite pull request.

D: C'è il problema xyz con Pypacker su Windows 3.11/XP/7/8/mobile ecc. Puoi sistemarlo?

R: Le funzionalità di base dovrebbero funzionare con qualsiasi sistema operativo. Quelle opzionali possono causare problemi (ad es. l'interceptor).

D: Sotto quale licenza è rilasciato Pypacker?

R: È la licenza GPLv2 (vedi il file LICENSE per maggiori informazioni).

D: La chiamata copy.deepcopy(some_packet) solleva un'eccezione "TypeError: can't pickle Struct objects".

R: Prova il seguente workaround per poter fare il pickle degli oggetti Struct:

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

copyreg.pickle(struct.Struct, pickle_struct)

Suggerimenti d'uso

Relative alle performance

  • Per ottenere le massime performance inizia ad accedere agli attributi al livello più basso usando la seguente notazione a indici. Questo eseguirà il parsing lazy solo dei livelli necessari dietro le quinte:
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
]
...
  • Evita di convertire i pacchetti usando i formati "%s" o "%r" poiché attivano il parsing dietro le quinte:
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# Questo esegue il parsing di TUTTI i livelli
packet_print = "%s" % pkt
  • Evita di cercare un livello usando la notazione a indice singolo pkt[L] poiché esegue il parsing di tutti i livelli fino a quando L viene trovato o si raggiunge il livello più alto:
root@kitploit:~
packet_found = pkt[Telnet]
# Alternativa: usa la notazione a indici multipli. Questo interromperà il parsing a qualsiasi livello non corrispondente:
packet_found = pkt[Ethernet,IP,TCP,Telnet]
  • Usa pypy (~3 volte più veloce di CPython per quanto riguarda il parsing completo dei pacchetti)

  • Per ancora più performance disabilita i campi automatici (influisce sulla chiamata a bin(...)):

root@kitploit:~
pkt = ip.IP(src_s="1.2.3.4", dst_s="1.2.3.5") + tcp.TCP()
# Disabilita il calcolo del checksum (e qualsiasi altro aggiornamento) per IP e TCP (solo QUESTA istanza di pacchetto)
pkt.sum_au_active = False
pkt.tcp.sum_au_active = False
bts = pkt.bin(update_auto_fields=False)
  • Aumenta i buffer di ricezione/invio per ottenere le massime performance. Questo può essere fatto usando i seguenti comandi (tratto da: 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

Varie

  • L'assemblaggio dei flussi TCP/UDP può essere fatto con tshark usando le pipe con "-i -" e "-z follow,prot,mode,filter[,range]"
  • Scelta del "livello più basso" corretto durante la lettura dei file di cattura: apri il file ad es. con wireshark e osserva i dettagli del pacchetto per il data link layer. Molto spesso sarà probabilmente Ethernet II, che può essere analizzato con layer12.ethernet.Ethernet. Quando si cattura ad es. con l'opzione "-i any" di wireshark/tshark, si otterrà la Linux cooked capture rappresentata da layer12.linuxcc.LinuxCC.
Scarica lo strumento