繁体   English   中英

如何获取Scapy数据包中的最后一个索引?

[英]How can get last index in Scapy packet?

我正在使用Scapy制作和嗅探数据包。 我正在尝试获取嗅探数据包的最后一个有效负载索引。 例如:

p=IPv6()/UDP()/DHCPv6_Solicit()

DHPCv6_Solicit()将是最后一个有效负载,其索引为2

p[2] #print DHCPv6_Solicit() object

我尝试使用-1获取最后一个索引,但Scapy给了我这个错误

Traceback (most recent call last):
   File "/usr/lib/python3.5/code.py", line 91, in runcode
   exec(code, self.locals)
   File "<console>", line 1, in <module>
   File "/usr/local/lib/python3.5/dist-packages/scapy/packet.py", line 966, in __getitem__
   raise IndexError("Layer [%s] not found" % lname)
IndexError: Layer [-1] not found

我试图通过使用获取数组的长度

len(p2)

但是Scapy显示了数据包的长度(以字节为单位),那么如何找到Scapy数据包的最后一个有效载荷索引呢?

我认为您正在寻找packet.lastlayer()

>>> p = IPv6()/UDP()/DHCP6_Solicit()
>>> p.lastlayer()
<DHCP6_Solicit  |>

您还可以使用packet.layers()并按期望的方式使用列表索引:

>>> p.layers()
[<class 'scapy.layers.inet6.IPv6'>, <class 'scapy.layers.inet.UDP'>, <class 'scapy.layers.dhcp6.DHCP6_Solicit'>]
>>> p.layers()[-1]
<class 'scapy.layers.dhcp6.DHCP6_Solicit'>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM