Dies ist die seltsame comportement:Hinzufügen von neuem Paket scapy: seltsame Fehler mit zufälliger Position Felder
ReturnCodeEnum = {
0x1: "vardiag",
0x2: "gambit"
}
TransportSizeEnum = {
0x10: "No error",
0x11: "Error: ressource not find",
0x21: "Error: busy"
}
class UNSPECIFIED(Packet):
name = "UNSPECIFIED"
fields_desc = {
ByteEnumField("returncode", 0x00, ReturnCodeEnum),
ByteEnumField("transportsize", 0x0, TransportSizeEnum),
FieldLenField("len", None, length_of="datapart"),
StrLenField("datapart", "", length_from=lambda pkt: pkt.len)
}
In [21]: a = UNSPECIFIED()
In [24]: a.show()
###[ UNSPECIFIED ]###
len = None
returncode= 0
datapart = ''
transportsize= 0
In [25]: # Reloading the file
In [26]: a = UNSPECIFIED()
In [27]: a.show()
###[ UNSPECIFIED ]###
datapart = ''
transportsize= 0
len = None
returncode= 0
In [28]: a.show2()
###[ UNSPECIFIED ]###
datapart = '\x00\x00\x00\x00'
transportsize= 0
len = 0
returncode= 0
In [29]:
In [30]: a = UNSPECIFIED()
In [33]: a.show()
###[ UNSPECIFIED ]###
len = None
returncode= 0
datapart = ''
transportsize= 0
In [34]: a.show2()
###[ UNSPECIFIED ]###
len = 0
returncode= 0
datapart = ''
transportsize= 0
Paketfelder Position nicht eingehalten werden. Jedes Mal, wenn ich diese Quelle neu lade, ändern sich die Positionen des Feldes. Ich baue eine Menge scapy packet, aber es ist das erste Mal, dass dieser Bug mir passiert. Vielleicht verwende ich nicht korrekt die Verbindung FieldLenField/StrLenField?
Oh ja, du hast Recht. Ich muss eine Liste anstelle eines Diktats verwenden. Danke für dein kleines Mooc. –