Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pypacker — :package: Самая быстрая и простая библиотека для манипуляции пакетами для Python | Kitploit
Инструменты/GitLabGitLab/mike01/pypacker
Сниффинг и анализ пакетовВеб-прокси и перехватСетевая безопасностьТестирование на ПроникновениеУтилиты и фреймворкиRed Teaming
GitLabmike01/pypacker

pypacker

📦 Самая быстрая и простая библиотека для манипуляции пакетами для Python

Репозиторий
281823 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Общая информация

Это Pypacker: самая быстрая и простая библиотека для работы с пакетами низкого уровня на Python. Примеры использования см. ниже.

Если вы хотите поддержать этот проект, вы можете Donate with PayPal через PayPal.

Что можно делать с Pypacker

  • Создавать собственные пакеты с помощью ключевых слов или из сырых байтов и читать/изменять их данные через Python: examples/create_packets.py
  • Читать/записывать пакеты из/в pcap-файл (поддержка только формата pcap Wireshark/tcpdump): examples/pcap_read_write.py
  • Объединять несколько pcap-файлов в один. Пытается читать повреждённые pcap-файлы и позволяет фильтровать через callback: examples/pcap_merge.py
  • Отправлять/принимать пакеты 2-го уровня: examples/send_receive_l2.py
  • Перехватывать (и модифицировать) пакеты, например для MITM: examples/interceptor3.py

Предварительные требования

  • Python 3.x (CPython, Pypy, Jython или любой другой интерпретатор)
  • Опционально: netifaces >=0.10.6 (для утилит)
  • Опционально (для interceptor):
    • CPython
    • Система на базе Linux с поддержкой ядром цели NFQUEUE. Опция конфигурации ядра находится в:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables (или nftables)
      • Правила, связанные с NFQUEUE, можно добавить, например: "iptables -I INPUT 1 -j NFQUEUE --queue-num 0"
    • Библиотека libnetfilter_queue (см. http://www.netfilter.org/projects/libnetfilter_queue)

Установка

Несколько примеров:

  • Клонировать последнюю версию
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypi больше не поддерживается из-за сложного механизма аутентификации, извините.

Примеры использования и документация

Смотрите:

  • Примеры выше
  • Примеры в каталоге ./examples
  • Gitlab Wiki: https://gitlab.com/mike01/pypacker/-/wikis/home

Сами протоколы (см. layerXYZ) обычно не имеют подробной документации, поскольку они описаны в соответствующих RFC/официальных стандартах.

Тестирование

Тесты выполняются следующим образом:

  1. Добавьте каталог Pypacker в PYTHONPATH.
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. Запустите тесты
  • python tests/test_pypacker.py

Результаты теста производительности:

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

ЧаВО

Если остались вопросы, пожалуйста, создайте ошибку (будет помечена как "вопрос").

В: Насколько быстр Pypacker?

О: Смотрите результаты выше. Для подробных результатов на вашей машине выполните тесты: python tests/test_pypacker.py PerfTestCase

В: Какие протоколы поддерживаются?

О: В настоящее время минимально поддерживаемые протоколы: 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

В: Планируется ли поддержка [чего-то]?

О: Новые возможности добавляются в Pypacker по мере необходимости или по вкладу сообщества — нет формальных планов по добавлению поддержки конкретных функций в будущие релизы. Общие рекомендации по вкладу можно найти в файле HACKING.

В: Как я могу внести вклад в этот проект?

О: Пожалуйста, используйте трекер ошибок Gitlab для сообщений об ошибках/запросах функций. Перед созданием нового запроса ознакомьтесь с уже известными проблемами. Патчи можно отправлять через pull request.

В: Возникла проблема xyz с Pypacker на Windows 3.11/XP/7/8/mobile и т.д. Можете это исправить?

О: Базовые функции должны работать на любой ОС. Опциональные могут вызывать проблемы (например, interceptor).

В: Под какой лицензией выпущен Pypacker?

О: Лицензия GPLv2 (см. файл LICENSE для получения дополнительной информации).

В: Вызов copy.deepcopy(some_packet) вызывает исключение "TypeError: can't pickle Struct objects".

О: Попробуйте следующий обходной путь для возможности сериализации объектов Struct:

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

copyreg.pickle(struct.Struct, pickle_struct)

Советы по использованию

Производительность

  • Для максимальной производительности начинайте обращаться к атрибутам на самом низком уровне с помощью следующей индексной нотации. Это будет лениво парсить только нужные слои за кулисами:
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
]
...
  • Избегайте преобразования пакетов с помощью форматов "%s" или "%r", так как это запускает парсинг за кулисами:
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# This parses ALL layers
packet_print = "%s" % pkt
  • Избегайте поиска слоя с помощью одноэлементной индексной нотации через pkt[L], так как это парсит все слои до тех пор, пока не будет найден L или не будет достигнут верхний слой:
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]
  • Используйте PyPy (~в 3 раза быстрее CPython при полном парсинге пакетов)

  • Для ещё большей производительности отключите автообновление полей (влияет на вызов 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)
  • Увеличьте буферы приёма/передачи для максимальной производительности. Это можно сделать с помощью следующих команд (взято из: 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

Разное

  • Сборку TCP/UDP потоков можно выполнять с помощью tshark, используя каналы с "-i -" и "-z follow,prot,mode,filter[,range]"
  • Выбор правильного "самого нижнего слоя" при чтении файлов захвата: Откройте файл, например, в Wireshark и посмотрите на детали пакета для канального уровня. В большинстве случаев это, вероятно, будет Ethernet II, который можно распарсить с помощью layer12.ethernet.Ethernet. При захвате, например, через опцию wireshark/tshark "-i any", это приведёт к формату Linux cooked capture, представленному layer12.linuxcc.LinuxCC.
Скачать инструмент