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