Scapy-计算数据包中的层数。

时间:2018-07-28 07:49:52

标签: python scapy 802.11

我正在尝试计算信标帧中的元素层数。我想遍历所有图层,直到到达最后一层。假设我已将此数据包存储在变量pkt中:

>>> pkt.summary()
    "RadioTap / 802.11 Management 8L 34:bf:90:4a:bb:57 > ff:ff:ff:ff:ff:ff / Dot11Beacon / SSID='unknown' / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt"

数据包中有13个Dot11Elt层。为了从所有这些层中提取信息,我需要遍历所有这些层。我为实现这一目标所做的尝试:

eltlayers = pkt.getlayer(Dot11Elt)
for layer in len(eltlayers):  # problem lies here
    print layer[layer].ID     # This is field in Elt Layer 

但是len给了我Raw负载的长度,而不是层数。问题是如何在数据包层之间循环,还是有其他方法获取层数?

1 个答案:

答案 0 :(得分:0)

您可以像这样提取Dot11Elt层:

pkt_elt = pkt[Dot11Elt]
while isinstance(pkt_elt, Dot11Elt):
    print "tag id = %d" % pkt_elt.ID
    pkt_elt = pkt_elt.payload