Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 整数数组作为Scapy自定义字段_Python_Python 2.7_Scapy - Fatal编程技术网

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

Python 整数数组作为Scapy自定义字段,python,python-2.7,scapy,Python,Python 2.7,Scapy,我试图伪造的数据包是这样的: p = IP()/TCP()/Unique() 其中“唯一”是一个新图层: class Unique(Packet): name = "Unique" fields_desc=[ IntField("a", 0), IntField("b", 0), IntField("c", 0)] 我不知道如何定义包含整数数组的字段。 有办法吗? 我希望有一个包含三个整数的字段,而不是三个字段“a”、“b”和“c” 因为3是一个可变的数字

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

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                                        ....
您需要包括FieldListField和FieldLenField。 有关更多信息,请参阅本文档。

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)
]