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

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

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

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

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

Категории

Все категории
Loading categories
pyshark — Обёртка на Python для tshark, позволяющая разбирать пакеты с помощью диссекторов Wireshark. | Kitploit
Инструменты/GitHubGitHub/kiminewt/pyshark
Сниффинг и анализ пакетовАудит Wi-FiИнструменты шифрования/дешифрованияСетевая криминалистикаФорензикаСетевая безопасностьБезопасность беспроводных сетейЦифровая криминалистика
GitHubkiminewt/pyshark

pyshark

Обёртка на Python для tshark, позволяющая разбирать пакеты с помощью диссекторов Wireshark.

Репозиторий
2.5k452246 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

pyshark

Python-обёртка для tshark, позволяющая выполнять разбор пакетов Python с использованием дисекторов Wireshark.

Расширенная документация: http://kiminewt.github.io/pyshark

Ищем контрибьюторов — по разным причинам мне сейчас трудно находить время на поддержку и развитие пакета. Все pull-запросы будут рассмотрены, а если кто-то заинтересован и подходит, я с радостью включу его в проект. Смело пишите мне на dorgreen1 at gmail.

Существует довольно много модулей разбора пакетов Python, но этот отличается тем, что на самом деле не разбирает пакеты, а просто использует способность tshark (утилиты командной строки Wireshark) экспортировать XML для своего разбора.

Этот пакет позволяет выполнять разбор из файла захвата или в реальном времени, используя все установленные дисекторы Wireshark. Протестировано на Windows/Linux.

Установка

Поддержка версий

Поддерживается Python 3.7+. Неподдерживаемая версия Python 2 существует в виде pyshark-legacy.

Поддерживаются все современные версии tshark / wireshark, но некоторые функции могут быть недоступны на старых версиях.

Все платформы

Просто выполните следующую команду для установки последней версии из pypi:

pip install pyshark

Или установите из git-репозитория:

git clone https://github.com/KimiNewt/pyshark.git
cd pyshark/src
python setup.py install

Mac OS X

Возможно, вам потребуется установить libxml, что может быть неожиданным. Если вы получите ошибку от clang или сообщение об ошибке, связанное с libxml, выполните следующее:

xcode-select --install
pip install libxml

Вероятно, вам придётся принять лицензионное соглашение XCode, поэтому будьте готовы нажать кнопку «Принять» в графическом интерфейсе.

Использование

Чтение из файла захвата:

>>> import pyshark
>>> cap = pyshark.FileCapture('/tmp/mycapture.cap')
>>> cap
<FileCapture /tmp/mycapture.cap (589 packets)>
>>> print cap[0]
Packet (Length: 698)
Layer ETH:
        Destination: BLANKED
        Source: BLANKED
        Type: IP (0x0800)
Layer IP:
        Version: 4
        Header Length: 20 bytes
        Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
        Total Length: 684
        Identification: 0x254f (9551)
        Flags: 0x00
        Fragment offset: 0
        Time to live: 1
        Protocol: UDP (17)
        Header checksum: 0xe148 [correct]
        Source: BLANKED
        Destination: BLANKED
  ...

Другие параметры

  • param keep_packets: Сохранять ли пакеты после их чтения через next(). Используется для экономии памяти при чтении больших файлов захвата.
  • param input_file: Путь или файлоподобный объект, содержащий либо файл захвата пакетов (PCAP, PCAP-NG..), либо XML от TShark.
  • param display_filter: Отображаемый (wireshark) фильтр для применения к захвату перед его чтением.
  • param only_summaries: Создавать только сводки пакетов — намного быстрее, но содержит очень мало информации.
  • param disable_protocol: Отключить обнаружение протокола (tshark > версия 2).
  • param decryption_key: Ключ, используемый для шифрования и дешифрования захваченного трафика.
  • param encryption_type: Стандарт шифрования, используемый в захваченном трафике (должен быть 'WEP', 'WPA-PWD' или 'WPA-PWK'. По умолчанию WPA-PWK).
  • param tshark_path: Путь к бинарному файлу tshark.

Чтение с живого интерфейса:

>>> capture = pyshark.LiveCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>

for packet in capture.sniff_continuously(packet_count=5):
    print('Just arrived:', packet)

Другие параметры

  • param interface: Имя интерфейса для прослушивания. Если не задано, берётся первый доступный.
  • param bpf_filter: BPF-фильтр для применения к пакетам.
  • param display_filter: Отображаемый (wireshark) фильтр для использования.
  • param only_summaries: Создавать только сводки пакетов — намного быстрее, но содержит очень мало информации.
  • param disable_protocol: Отключить обнаружение протокола (tshark > версия 2).
  • param decryption_key: Ключ, используемый для шифрования и дешифрования захваченного трафика.
  • param encryption_type: Стандарт шифрования, используемый в захваченном трафике (должен быть 'WEP', 'WPA-PWD' или 'WPA-PWK'. По умолчанию WPA-PWK).
  • param tshark_path: Путь к бинарному файлу tshark.
  • param output_file: Дополнительно сохранять захваченные пакеты в этот файл.

Чтение с живого интерфейса с использованием кольцевого буфера

>>> capture = pyshark.LiveRingCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>

for packet in capture.sniff_continuously(packet_count=5):
    print('Just arrived:', packet)

Другие параметры

  • param ring_file_size: Размер кольцевого файла в кБ, по умолчанию 1024.
  • param num_ring_files: Количество сохраняемых кольцевых файлов, по умолчанию 1.
  • param ring_file_name: Имя кольцевого файла, по умолчанию /tmp/pyshark.pcap.
  • param interface: Имя интерфейса для прослушивания. Если не задано, берётся первый доступный.
  • param bpf_filter: BPF-фильтр для применения к пакетам.
  • param display_filter: Отображаемый (wireshark) фильтр для использования.
  • param only_summaries: Создавать только сводки пакетов — намного быстрее, но содержит очень мало информации.
  • param disable_protocol: Отключить обнаружение протокола (tshark > версия 2).
  • param decryption_key: Ключ, используемый для шифрования и дешифрования захваченного трафика.
  • param encryption_type: Стандарт шифрования, используемый в захваченном трафике (должен быть 'WEP', 'WPA-PWD' или 'WPA-PWK'. По умолчанию WPA-PWK).
  • param tshark_path: Путь к бинарному файлу tshark.
  • param output_file: Дополнительно сохранять захваченные пакеты в этот файл.

Чтение с удалённого живого интерфейса:

>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture

Другие параметры

  • param remote_host: Удалённый хост для захвата (IP или имя хоста). На нём должен быть запущен rpcapd.
  • param remote_interface: Удалённый интерфейс на удалённой машине для захвата. Обратите внимание, что в Windows это не отображаемое имя устройства, а настоящее имя интерфейса (т.е. \Device\NPF_..).
  • param remote_port: Удалённый порт, на котором работает служба rpcapd.
  • param bpf_filter: BPF-фильтр (tcpdump) для применения к захвату перед чтением.
  • param only_summaries: Создавать только сводки пакетов — намного быстрее, но содержит очень мало информации.
  • param disable_protocol: Отключить обнаружение протокола (tshark > версия 2).
  • param decryption_key: Ключ, используемый для шифрования и дешифрования захваченного трафика.
  • param encryption_type: Стандарт шифрования, используемый в захваченном трафике (должен быть 'WEP', 'WPA-PWD' или 'WPA-PWK'. По умолчанию WPA-PWK).
  • param tshark_path: Путь к бинарному файлу tshark.

Доступ к данным пакета:

Данные можно получить несколькими способами. Пакеты разделены на уровни: сначала нужно добраться до соответствующего уровня, а затем выбрать поле.

Всё следующее работает:

>>> packet['ip'].dst
192.168.0.1
>>> packet.ip.src
192.168.0.100
>>> packet[2].src
192.168.0.100

Чтобы проверить, присутствует ли уровень в пакете, можно использовать его имя:

>>> 'IP' in packet
True

Чтобы увидеть все возможные имена полей, используйте атрибут packet.layer.field_names (т.е. packet.ip.field_names) или автодополнение в вашем интерпретаторе.

Вы также можете получить исходные двоичные данные поля или его читаемое описание:

Скачать инструмент