Вопрос с использованием scapy.sniff для получения 'Ethernet Frame' в файлах pcap - PullRequest
0 голосов
/ 27 мая 2019

Цель: получить время прибытия из файлов pcap. Язык: python3.7 Инструменты: Scapy.sniff

Прежде всего, я хочу получить данные о времени прибытия в .pcap, когда я использую wireshark, я видел данные в кадре Ethernet, но когда я использую # Scapy.sniff (offline = ' .pcap'), я просто получаю Ether, TCP, IP и другие, так как я могу получить эти данные? Большое спасибо!

>>from scapy.all  import *
>>a = sniff(offline = '***.pcap')
>>a[0]

[out]:
<Ether  dst=*:*:*:*:*:* src=*:*:*:*:*:* type=** |<IP  version=4 ihl=5 tos=0x20 len=52 id=14144 flags=DF frag=0 ttl=109 proto=tcp chksum=0x5e3b src=*.*.*.* dst=*.*.*.* |<TCP  sport=gcsp dport=http seq=1619409885 ack=1905830025 dataofs=8 reserved=0 flags=A window=65535 chksum=0xfdb5 urgptr=0 options=[('NOP', None), ('NOP', None), ('SAck', (1905831477, 1905831485))] |>>>
[ ]:

1 Ответ

1 голос
/ 28 мая 2019

Время пакета от pcap доступно в time элементе:

print(a[0].time)

Он хранится в виде значения с плавающей запятой (стандартный формат "timestamp" в python). Чтобы получить его в более понятной форме, вы можете использовать модуль datetime:

>>> from datetime import datetime
>>> dt = datetime.fromtimestamp(a[0].time)
>>> print(dt)
2018-11-12 03:03:00.259780

Документация Scapy не очень хорошая. Может быть очень поучительно использовать интерактивную справочную систему. Например, в переводчике:

$ python
>>> from scapy.all import *
>>> a = sniff(offline='mypcap.pcap')
>>> help(a[0])

Это покажет вам все методы и атрибуты объекта, представленного a[0]. В вашем случае это экземпляр class Ether(scapy.packet.Packet).

...