Python 读取pyshark IEEE802.1AD层剖析器值时出现问题

Python 读取pyshark IEEE802.1AD层剖析器值时出现问题,python,wireshark,wireshark-dissector,Python,Wireshark,Wireshark Dissector,背景: 我试图使用pyshark模块来解析包含三重802.1AD标签的数据包。打印包层时,存在两个IEEE8021AD层 [<ETH Layer>, <IEEE8021AD Layer>, <IEEE8021AD Layer>, <IP Layer>, <DATA Layer>] 代码输出: ----------------- Packet 1 -------------------- [<ETH Layer>, <

背景:
我试图使用
pyshark
模块来解析包含
三重802.1AD标签的数据包。打印包层时,存在两个IEEE8021AD层

 [<ETH Layer>, <IEEE8021AD Layer>, <IEEE8021AD Layer>, <IP Layer>, <DATA Layer>]
代码输出:

----------------- Packet 1 --------------------
[<ETH Layer>, <IEEE8021AD Layer>, <IEEE8021AD Layer>, <IP Layer>, <DATA Layer>]
Layer IEEE8021AD:
    101. .... .... .... = Priority: 5
    ...1 .... .... .... = DEI: 1
    .... 0000 0000 1000 = ID: 8
    Type: 802.1ad Provider Bridge (Q-in-Q) (0x88a8)
    .... 0000 0000 1001 = ID: 9
    100. .... .... .... = Priority: 4
    ...0 .... .... .... = DEI: 0

    dei      = 1   # Drop Eligibility Indicator for VLAN #2
    priority = 5   # Priority for VLAN #2
    cvid     = 8   # ID for VLAN #2
    svid     = 9   # ID for VLAN #1
--------------数据包1--------------------
[, , ]
层IEEE8021AD:
101. .... .... .... = 优先次序:5
...1 .... .... .... = DEI:1
.... 0000 0000 1000=ID:8
类型:802.1ad提供程序网桥(Q-in-Q)(0x88a8)
.... 0000 0000 1001=ID:9
100. .... .... .... = 优先次序:4
...0 .... .... .... = DEI:0
dei=1#删除VLAN的合格指标#2
优先级=5#VLAN优先级#2
cvid=8#VLAN的ID#2
svid=9#VLAN的ID#1
问题#1:第二个IEEE8021AD标记可以通过层列表使用数字索引值进行访问:
pkt.layers[2]。优先级
#!/usr/bin/python

from __future__ import print_function
import pyshark
import pprint

cap = pyshark.FileCapture(filename)

pp = pprint.PrettyPrinter(indent=4)

for i, pkt in enumerate(cap):

    print("----------------- Packet %d --------------------" % i)
    print(pkt.layers)

    print(pkt.ieee8021ad)

    print("        dei      = %s" % pkt.ieee8021ad.dei)
    print("        priority = %s" % pkt.ieee8021ad.priority)
    print("        cvid     = %s" % pkt.ieee8021ad.cvid)
    print("        svid     = %s" % pkt.ieee8021ad.svid)
    #print("        type     = %s" % pkt.ieee8021ad.type)  # 'type'     doesn't exist>
----------------- Packet 1 --------------------
[<ETH Layer>, <IEEE8021AD Layer>, <IEEE8021AD Layer>, <IP Layer>, <DATA Layer>]
Layer IEEE8021AD:
    101. .... .... .... = Priority: 5
    ...1 .... .... .... = DEI: 1
    .... 0000 0000 1000 = ID: 8
    Type: 802.1ad Provider Bridge (Q-in-Q) (0x88a8)
    .... 0000 0000 1001 = ID: 9
    100. .... .... .... = Priority: 4
    ...0 .... .... .... = DEI: 0

    dei      = 1   # Drop Eligibility Indicator for VLAN #2
    priority = 5   # Priority for VLAN #2
    cvid     = 8   # ID for VLAN #2
    svid     = 9   # ID for VLAN #1