Scapy - 计算数据包中的层数。
Scapy - Counting the number of layers in a packet.
我正在尝试计算信标框架中元素层的数量。我想遍历所有层,直到到达最后一层。假设我将此数据包存储在变量 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 payload 的长度,而不是层数。问题是如何遍历数据包层或者是否有任何其他方法来获取层数?
您可以像这样提取 Dot11Elt 图层:
pkt_elt = pkt[Dot11Elt]
while isinstance(pkt_elt, Dot11Elt):
print "tag id = %d" % pkt_elt.ID
pkt_elt = pkt_elt.payload
我正在尝试计算信标框架中元素层的数量。我想遍历所有层,直到到达最后一层。假设我将此数据包存储在变量 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 payload 的长度,而不是层数。问题是如何遍历数据包层或者是否有任何其他方法来获取层数?
您可以像这样提取 Dot11Elt 图层:
pkt_elt = pkt[Dot11Elt]
while isinstance(pkt_elt, Dot11Elt):
print "tag id = %d" % pkt_elt.ID
pkt_elt = pkt_elt.payload