Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
pypacker — :package: La biblioteca de manipulación de paquetes más rápida y simple para Python | Kitploit
Herramientas/GitLabGitLab/mike01/pypacker
Sniffing y Análisis de PaquetesProxies Web e InterceptaciónSeguridad de RedesPruebas de PenetraciónUtilidades y FrameworksRed Teaming
GitLabmike01/pypacker

pypacker

📦 La biblioteca de manipulación de paquetes más rápida y simple para Python

Ver Repositorio
2818hace 23 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Información general

Este es Pypacker: la biblioteca de manipulación de paquetes de bajo nivel más rápida y simple para Python. Vea los ejemplos a continuación para ver qué puede hacer con ella.

Si desea apoyar este proyecto puede Donate with PayPal a través de PayPal.

Qué puedes hacer con Pypacker

  • Crear paquetes personalizados mediante palabras clave o a partir de bytes sin procesar y leer/cambiar sus datos con Python: examples/create_packets.py
  • Leer/escribir paquetes desde/hacia archivos pcap (soporte solo para formato pcap de Wireshark/tcpdump): examples/pcap_read_write.py
  • Fusionar múltiples archivos pcap en uno solo. Intenta leer archivos pcap corruptos y permite filtrar mediante callback: examples/pcap_merge.py
  • Enviar/recibir paquetes de capa 2: examples/send_receive_l2.py
  • Interceptar (y modificar) paquetes, por ejemplo para MITM: examples/interceptor3.py

Prerrequisitos

  • Python 3.x (CPython, Pypy, Jython o cualquier intérprete)
  • Opcional: netifaces >=0.10.6 (para utilidades)
  • Opcional (para interceptor):
    • CPython
    • Sistema basado en Linux con soporte del kernel para el objetivo NFQUEUE. La opción de configuración del kernel está en:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables (alternativamente nftables)
      • Se pueden agregar reglas relacionadas con NFQUEUE, por ejemplo "iptables -I INPUT 1 -j NFQUEUE --queue-num 0"
    • librería libnetfilter_queue (ver http://www.netfilter.org/projects/libnetfilter_queue)

Instalación

Algunos ejemplos:

  • Clonar la versión más reciente
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypi ya NO tiene soporte debido a su complicado mecanismo de autenticación, lo sentimos.

Ejemplos de uso y documentación

Vea:

  • Ejemplos anteriores
  • Ejemplos en el directorio ./examples
  • Gitlab Wiki: https://gitlab.com/mike01/pypacker/-/wikis/home

Los protocolos en sí (ver layerXYZ) generalmente no tienen mucha documentación porque están documentados por sus respectivos RFCs/estándares oficiales.

Pruebas

Las pruebas se ejecutan de la siguiente manera:

  1. Agregar el directorio de Pypacker al PYTHONPATH.
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. Ejecutar las pruebas
  • python tests/test_pypacker.py

Resultados de las pruebas de rendimiento:

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

Preguntas frecuentes

Para cualquier pregunta pendiente, por favor reporte un error (será etiquetado como "questions").

P: ¿Qué tan rápido es pypacker?

R: Vea los resultados anteriores. Para obtener resultados detallados en su máquina, ejecute las pruebas: python tests/test_pypacker.py PerfTestCase

P: ¿Qué protocolos están soportados?

R: Actualmente los protocolos mínimos soportados son: 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

P: ¿Hay planes para soportar [xyz]?

R: Las nuevas características se agregan a Pypacker como resultado de que yo las necesite o de que la gente las contribuya; no existen planes formales para agregar soporte para características particulares en futuras versiones. Se pueden encontrar pautas generales para contribuir en el archivo HACKING.

P: ¿Cómo puedo contribuir a este proyecto?

R: Por favor, use el rastreador de errores de Gitlab para informar errores/solicitar funciones. Lea el rastreador de errores para conocer los errores ya conocidos antes de reportar uno nuevo. Los parches se pueden enviar mediante pull request.

P: Hay un problema xyz con Pypacker usando Windows 3.11/XP/7/8/mobile etc. ¿Puede solucionarlo?

R: Las funciones básicas deberían funcionar con cualquier sistema operativo. Las opcionales pueden causar problemas (por ejemplo, interceptor).

P: ¿Bajo qué licencia se distribuye Pypacker?

R: Es la licencia GPLv2 (consulte el archivo LICENSE para obtener más información).

P: Llamar a copy.deepcopy(some_packet) lanza una excepción "TypeError: can't pickle Struct objects".

R: Pruebe la siguiente solución alternativa para poder serializar objetos Struct:

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

copyreg.pickle(struct.Struct, pickle_struct)

Consejos de uso

Relacionado con el rendimiento

  • Para obtener el máximo rendimiento, comience a acceder a los atributos en el nivel más bajo mediante la siguiente notación de índice. Esto analizará de forma diferida solo las capas necesarias detrás de escena:
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
]
...
  • Evite convertir paquetes usando el formato "%s" o "%r" ya que activa el análisis detrás de escena:
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# This parses ALL layers
packet_print = "%s" % pkt
  • Evite buscar una capa usando notación de índice de valor único mediante pkt[L] ya que analiza todas las capas hasta que se encuentra L o se alcanza la capa más alta:
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]
  • Use pypy (~3 veces más rápido que CPython en relación con el análisis completo de paquetes)

  • Para aún más rendimiento, desactive los campos automáticos (afecta la llamada a 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)
  • Aumente los búferes de recepción/envío para obtener el máximo rendimiento. Esto se puede hacer usando los siguientes comandos (tomado 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

Varios

  • El ensamblaje de flujos TCP/UDP se puede realizar con tshark usando tuberías con "-i -" y "-z follow,prot,mode,filter[,range]"
  • Elegir la "capa más baja" correcta al leer archivos de captura: Abra el archivo, por ejemplo, con Wireshark y observe los detalles del paquete para la capa de enlace de datos. La mayoría de las veces probablemente será Ethernet II, que se puede analizar con layer12.ethernet.Ethernet. Al capturar, por ejemplo, mediante la opción "-i any" de Wireshark/tshark, esto dará lugar a una captura Linux cooked representada por layer12.linuxcc.LinuxCC.
Descargar herramienta