Разбор PCAP в Python 2.6 - PullRequest
       6

Разбор PCAP в Python 2.6

2 голосов
/ 17 февраля 2012

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

import dpkt
import sys

f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data


f.close()

Я получаю следующую ошибку: Файл «inspe.py», строка 15, в tcp = ip.data

AttributeError: у объекта 'str' нет атрибута'

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 17 мая 2012

Вызов dpkt.ethernet.Ethernet(buf) вернул строку, поскольку классу Ethernet не удалось распаковать buf.Вероятной причиной этого является то, что ваш файл pcap не имеет Ethernet в качестве протокола уровня 2.Вы можете загрузить pcap в Wireshark, чтобы подтвердить это.

Следующий скрипт пытается проверить поле datalink файла pcap и использовать соответствующий класс dpkt уровня 2 для декодирования кадра:

import dpkt
import sys

f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
    if pcap.datalink() == dpkt.pcap.DLT_LINUX_SLL:
        l2 = dpkt.sll.SLL(raw_pkt)
    else:
        l2 = dpkt.ethernet.Ethernet(buf)
    ip = l2.data
    tcp = ip.data
0 голосов
/ 20 сентября 2016

Что я сделал, чтобы решить эту проблему:

        if ip.p == 6:
           tcp = dpkt.tcp.TCP(ip.data)
...