整数数组作为Scapy自定义字段

2024-10-02 02:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我要伪造的包裹是这样的:

p = IP()/TCP()/Unique()

其中Unique是一个新层:

^{pr2}$

我不知道如何定义包含整数数组的字段。 有办法吗? 我希望有一个包含三个整数的字段,而不是三个字段“a”、“b”和“c”。在

因为3是一个可变数,我可以使用另一种可能的方法是使用nIntField,其中n是可变的,但我也不知道如何做到这一点,我将非常感谢任何帮助。在


Tags: 方法ip定义整数数组tcpunique变数
2条回答

我想FieldListField是你所要寻找的东西的关键所在。它定义了同一类型的任意数量字段的数组/列表。在

class Unique(Packet):
    name = "Unique"
    fields_desc=[FieldListField("my_array", None, IntField("bla",0))]

>>> Unique(my_array=[1,2,3,4,5]).show()
###[ Unique ]###
  my_array= ['1', '2', '3', '4', '5']
>>> hexdump(Unique(my_array=[1,2,3,4,5]))
0000   00 00 00 01 00 00 00 02  00 00 00 03 00 00 00 04   ................
0010   00 00 00 05                                        ....
class Unique(Packet):
name = "Unique"
fields_desc=[ IntField("a", 0),
         IntField("b", 0),
         FieldLenField("num_records", None),
         FieldListField("c", None, IntField("number", 0), count_from=lambda pkt: pkt.num_records)
]

您需要包括FieldListField和FieldLenField。 有关详细信息,请参阅此文档。 http://www.dirk-loss.de/scapy-doc/build_dissect.html#the-variable-length-field

相关问题 更多 >

    热门问题