Перевод: Анализ пакетов Wireshark с помощью Python

Перевод: Анализ пакетов Wireshark с помощью Python

@Ent_TranslateIB

В этой статье я расскажу об анализе пакетов wireshark с помощью языка программирования python. Для анализа пакета Wireshark с помощью Python можно использовать библиотеку scapy. scapy - это мощный инструмент для работы с пакетами, который может декодировать, подделывать, отправлять и сниффить пакеты.

Scapy

Вот пример того, как можно использовать scapy для анализа файла захвата пакетов Wireshark (PCAP):

from scapy.all import *

# Чтение PCAP файла
packets = rdpcap('capture.pcap')

# Выполнение итерации по пакетам
for packet in packets:
    # Вывод сводки пакета
    print(packet.summary())
    
    # Вывод сведений о пакете
    packet.show()

Вот несколько дополнительных примеров кода для анализа файла захвата пакетов Wireshark (PCAP) с помощью библиотеки scapy:

# Фильтрация пакета по протоколу
filtered_packets = [pkt for pkt in packets if TCP in pkt]

# Извлечение данных из пакета
data = [pkt[TCP].data for pkt in filtered_packets]

# Вывод данных
for d in data:
    print(d)

Вы также можете использовать встроенные функции scapy для извлечения определенной информации из пакетов. Например:

# Извлечение исходных IP-адресов
src_ips = [pkt[IP].src for pkt in packets]

# Извлечение портов назначения
dst_ports = [pkt[TCP].dport for pkt in packets]

# Вывод информации
for src, dst in zip(src_ips, dst_ports):
    print(f'Source IP: {src} Destination Port: {dst}')

Вы также можете использовать scapy для изменения и сохранения измененных пакетов в новый PCAP-файл:

# Изменение пакетов
modified_packets = [pkt/'modified' for pkt in packets]

# Сохранить измененный пакет в новый PCAP файл
wrpcap('modified.pcap', modified_packets)

Dpkt

Вы также можете использовать библиотеку dpkt для разбора PCAP-файла. Вот пример того, как это сделать:

import dpkt

# Открытие файла PCAP
with open('capture.pcap', 'rb') as f:
    # Read the PCAP file
    pcap = dpkt.pcap.Reader(f)
    
    # Выполнение итерации по пакетам
    for ts, buf in pcap:
        # Распаковка Ethernet фрейма
        eth = dpkt.ethernet.Ethernet(buf)
        
        # Вывод сведений о пакете
        print(eth)

Ниже приведены дополнительные примеры кода для анализа файла захвата пакетов Wireshark (PCAP) с помощью библиотеки dpkt:

# Извлечение IP пакетов
ip_packets = [eth.data for eth in eth_packets if isinstance(eth.data, dpkt.ip.IP)]

# Извлечение TCP пакетов
tcp_packets = [ip.data for ip in ip_packets if isinstance(ip.data, dpkt.tcp.TCP)]

# Извлечение даннных из TCP пакетов
data = [tcp.data for tcp in tcp_packets]

# Вывод данных
for d in data:
    print(d)

Вы также можете использовать функции dpkt для извлечения определенной информации из пакетов. Например:

# Извлечение исходных IP адресов
src_ips = [ip.src for ip in ip_packets]

# Извлечение портов назначения
dst_ports = [tcp.dport for tcp in tcp_packets]

# Вывод информации
for src, dst in zip(src_ips, dst_ports):
    print(f'Source IP: {src} Destination Port: {dst}')

Вы также можете использовать dpkt для изменения и сохранения измененных пакетов в новый PCAP-файл:

# Изменение TCP пакетов
modified_tcp_packets = [dpkt.tcp.TCP(data='modified') for tcp in tcp_packets]

# Изменение IP пакетов
modified_ip_packets = [dpkt.ip.IP(data=tcp) for ip, tcp in zip(ip_packets, modified_tcp_packets)]

# Изменение Ethernet пакетов
modified_eth_packets = [dpkt.ethernet.Ethernet(data=ip) for eth, ip in zip(eth_packets, modified_ip_packets)]

# Сохранение измененного пакета в новый PCAP файл
with open('modified.pcap', 'wb') as f:
    pcap = dpkt.pcap.Writer(f)
    for eth in modified_eth_packets:
        pcap.writepkt(eth)

Pyshark

Вы также можете использовать библиотеку pyshark, которая представляет собой обертку вокруг инструмента командной строки tshark. pyshark позволяет использовать тот же синтаксис фильтрации, что и tshark, что упрощает анализ пакетов.

import pyshark

# Чтение PCAP файла
capture = pyshark.FileCapture('capture.pcap')

# Выполнение итерации по пакетам
for packet in capture:
    # Вывод сводки пакета
    print(packet)
    
    # Вывод сведений о пакете
    packet.show()

Вот несколько дополнительных примеров кода для анализа файла захвата пакетов Wireshark (PCAP) с помощью библиотеки pyshark:

# Фильтрация пакетов по протоколу
filtered_capture = capture.filter('tcp')

# Извлечение данных из пакетов
data = [packet.data for packet in filtered_capture]

# Вывод данных
for d in data:
    print(d)

Вы также можете использовать функции pyshark для извлечения определенной информации из пакетов. Например:

# Извлечение исходных IP адресов
src_ips = [packet.ip.src for packet in capture]

# Извлечение портов назначения
dst_ports = [packet.tcp.dstport for packet in capture]

# Вывод информации
for src, dst in zip(src_ips, dst_ports):
    print(f'Source IP: {src} Destination Port: {dst}')

Вы также можете использовать pyshark для изменения и сохранения измененных пакетов в новый PCAP-файл:

# Изменение пакетов
modified_capture = [packet/'modified' for packet in capture]

# Сохранение измененного пакета в новый PCAP файл
modified_capture.apply_on_packets(lambda pkt: pkt.data = 'modified')
modified_capture.save('modified.pcap')

В этой статье я рассказывал об анализе пакетов wireshark с помощью языка программирования python. Удачи вам и до встречи в моей следующей статье.

Оригинал статьи - здесь.
Поддержите автора хлопками на Medium.


Перевод статьи был выполнен проектом перевод энтузиаста:

  • 📚 @Ent_TranslateIB - Телеграмм канал с тематикой информационной безопасности
  • 🔥 @Ent_Translate - Инстаграм проекта

Report Page