Python 如何在scapy中设置下层的有效负载长度

Python 如何在scapy中设置下层的有效负载长度,python,scapy,Python,Scapy,如何将下层的有效负载长度字段设置为上层的大小 import binascii from scapy.all import * payload_types = {0: "Upper0", 1: "Upper1"}; class Lower(Packet): fields_desc = [ XShortEnumField("payload_type", 0, payload_types), IntField("payload_leng

如何将下层的有效负载长度字段设置为上层的大小

import binascii
from scapy.all import *

payload_types = {0: "Upper0", 1: "Upper1"};

class Lower(Packet):
      fields_desc = [ 
            XShortEnumField("payload_type", 0, payload_types),
            IntField("payload_length", 0) ];

class Upper0(Packet):
      fields_desc = [ 
            IntField("data", 0)
      ]

bind_layers(Lower, Upper0, payload_type=0)

class Upper1(Packet):
      fields_desc = [ 
            IntField("data0", 0),
            IntField("data1", 0)
      ]

bind_layers(Lower, Upper1, payload_type=1)

p0=Lower()/Upper0(data=1)
p1=Lower()/Upper1(data0=1,data1=2)
print(binascii.b2a_hex(bytes(p0)))   # 00000000000000000001
print(binascii.b2a_hex(bytes(p1)))   # 0001000000000000000100000002
此处
bind_layers
重载较低层的
payload_type
,但是如何连接点以同时设置
payload_长度
?p0.payload_长度应为4,而p1.payload_长度应为8。 我可以看一下实现这一点的层示例吗