У меня есть около 10 ГБ данных pcap с трафиком IPv6 для анализа информации, хранящейся в заголовке IPv6 и другом заголовке расширения. Для этого я решил использовать фреймворк Scapy. Я попробовал функцию rdpcap, но для таких больших файлов это не рекомендуется. Он пытается загрузить весь файл в память и в моем случае застревает. Я обнаружил в сети, что в такой ситуации рекомендуется sniff, мой код выглядит так:
def main():
sniff(offline='traffic.pcap', prn=my_method,store=0)
def my_method(packet):
packet.show()
В функции под названием my_method я получаю каждый пакет отдельно и могу анализировать их, но .... Когда я вызываю show strong> с встроенным методом фреймворка. У меня получилось вот так:
При открытии в wirehark я получил правильно выглядящий пакет:
Не могли бы вы рассказать мне, как разобрать эти пакеты в scapy, чтобы получить правильные результаты?
РЕДАКТИРОВАТЬ: Согласно обсуждению в комментариях, я нашел способ проанализировать файл PCAP с помощью Python. На мой взгляд, проще всего использовать фреймворк pyshark:
import pyshark
pcap = pyshark.FileCapture(pcap_path) ### for reading PCAP file
Можно легко перебрать прочитанный файл с помощью цикла for
for pkt in pcap:
#do what you want
Для разбора заголовка IPv6 могут быть полезны следующие методы:
pkt['ipv6'].tclass #Traffic class field
pkt['ipv6'].tclass_dscp #Traffic class DSCP field
pkt['ipv6'].tclass_ecn #Traffic class ECN field
pkt['ipv6'].flow #Flow label field
pkt['ipv6'].plen #Payload length field
pkt['ipv6'].nxt #Next header field
pkt['ipv6'].hlim #Hop limit field
capinfos
иtshark
, но я нечасто их использовал в прошлом. - но я думаю, что их можно использовать для статистического анализа. Вы можете найти их здесь: wiki.wireshark.org/Tools - person coder   schedule 24.03.2017source ips
с помощью команды:tshark -T fields -e ip.src -r your_file.pcap
или, изменивip.src
наip.dst
, вы можете проанализировать dst ips (это очень похоже на scapy). Также можно попробовать много других полей (например, frame.time, dns.qry.name, tcp.port и многие другиеwireshark fields
) - person coder   schedule 24.03.2017import pyshark
,cap = pyshark.FileCapture('v6.pcap')
, а затемfor packet in cap: print packet.ipv6.src
- person coder   schedule 24.03.2017