Перевод: Анализ пакетов 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 - Инстаграм проекта