我试图伪造的数据包是这样的:

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


其中“唯一”是一个新层:

class Unique(Packet):
name = "Unique"
fields_desc=[ IntField("a", 0),
         IntField("b", 0),
         IntField("c", 0)]


我不知道如何定义一个包含整数数组的字段。
有没有办法做到这一点?
我不想有三个字段“ a”,“ b”和“ c”,而是希望有一个包含三个整数的字段。

由于3是一个可变数字,我可以使用的另一种可能的方法是让n个IntField,其中n是可变的,但是我也不知道该怎么做,我将不胜感激。

最佳答案

我猜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                                        ....

关于python - 作为Scapy自定义字段的整数数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35393493/

10-12 20:05