【发布时间】:2020-04-23 04:20:44
【问题描述】:
我想要一个 1 字节的 FieldLenField 以允许对应的 FieldListField 中只有 256 个项目,我该怎么做?
from scapy import *
class Foo(Packet):
name = "Foo"
fields_desc = [
ShortField("id", random.getrandbits(16)),
FieldLenField("len", None, count_of="pld"),
FieldListField("pld", None, IPField("", "0.0.0.0"), count_from=lambda pkt: pkt.len)
]
感谢您的帮助。
【问题讨论】:
-
为什么不在构建/读取此数据包时添加超过 255 个项目的检查?如果有意外数量的项目,您可能会引发错误。请记住,当 Wireshark 在意外位置看到字节(或将其标记为“格式错误的响应”)时,它也会引发错误。
-
@RossJacobs 这将有助于控制 varfield
pld的长度,但不能控制 lenfieldlen的大小,所以它并不能真正解决我的问题。如果我最多有 255 个值,我不想要 2 个字节的 lenfield,因为只有 1 个字节就足够了。
标签: python scapy network-protocols