0

dpkt ライブラリを使用して、pcap ファイルのリストから 5 タプルの情報を取得しようとしています。VLAN タグを使用して PPPoE パケットを解析するには、次のようなコードを記述します (テストのみ)。

import dpkt
import socket

def decode(pc):
    for ts, pkt in pc:
        eth = dpkt.ethernet.Ethernet(pkt)
        pppoe = dpkt.pppoe.PPPoE(eth.data)
        ip = pppoe.data
        if ip.p == dpkt.ip.IP_PROTO_UDP:
            udp = ip.data
            yield(ip.src, udp.sport, ip.dst, udp.dport, ip.v)
        else: pass

def test():
    pc = dpkt.pcap.Reader(open('epon.pcap','rb'))
    for src, sport, dst, dport, ip_version in decode(pc):
        print "from", socket.inet_ntoa(src),":",sport, " to ",socket.inet_ntoa(dst),":",dport

test()

解析が間違っていることを意味するエラーが発生します。

AttributeError: 'str' object has no attribute 'p'

では、正しいコードはどのようなものであるべきでしょうか? 私は Python の初心者で、dpkt のソース コードには本当に困惑しています...

4

1 に答える 1