首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scapy: eth_boundary选项返回IndexError:未找到层[14]

Scapy: eth_boundary选项返回IndexError:未找到层[14]
EN

Stack Overflow用户
提问于 2019-10-03 14:49:30
回答 1查看 1.1K关注 0票数 1

我在设置eth_boundary选项时遗漏了一些东西。

代码语言:javascript
复制
>>> eth_boundary=14
>>> pkt=e/i
>>> len(e)
14
>>> len(i)
20
>>>
>>> pkt.show()
###[ Raw ]###
  load= '\x00\xa0\xa1\x12\xc2\xc1\x001H\xcd\xe8\x5c\x08\x00E\x00\x00\x11\x00\x01\x00\x00@\x00P\xe2\x11\x01\x01\x02\x14\x01\x01\x01'

>>> pkt[eth_boundary:]
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 "/home/regress/scapy/scapy/packet.py", line 1171, in __getitem__
    raise IndexError("Layer [%s] not found" % lname)
IndexError: Layer [14] not found
>>>

请帮我解决上面的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-08 02:50:00

问题

这里的问题是,您像访问字节数组一样访问pkt,而实际上它是一个层数组:

代码语言:javascript
复制
>>> pkt=Ether()/IP()
>>> pkt[0]
<Ether  type=0x800 |<IP  |>>
>>> pkt[1]
<IP  |>
>>> pkt[2]
IndexError: Layer [2] not found

错误准确地描述了它所看到的问题:Layer [14] not found

解决方案

改用raw(pkt):

代码语言:javascript
复制
>>> eth_boundary = 14
>>> pkt=Ether()/IP()
>>> raw(pkt)
b'\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x08\x00E\x00\x00\x14\x00\x01\x00\x00@\x00|\xe7\x7f\x00\x00\x01\x7f\x00\x00\x01'
>>> raw(pkt)[14:]
b'E\x00\x00\x14\x00\x01\x00\x00@\x00|\xe7\x7f\x00\x00\x01\x7f\x00\x00\x01'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58213710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档