gpt4 book ai didi

python - 在 scapy 中创建新协议(protocol),其中字段取决于数据包总长度

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:14 30 4
gpt4 key购买 nike

我正在尝试定义一个协议(protocol),该协议(protocol)使用的字段大小是根据数据包总长度计算的。我的目标是剖析另一个脚本中的数据包。

我的第一个想法是重载 __init__ Packet 类函数,以便能够传输变量,但它可能存在另一个变量定义字段时获取此值的简单方法?

我梦想着这样的事情:

class NewProtocol(Packet):
frameSize = foo
name = "myNewAwesomeProto"
fields_desc=[
BitField("startingField", None, 8),
BitField("payload", None, (frameSize - (8+2))*8),
BitField("endingField", None, 2*8)
]

提前致谢!

最佳答案

我终于按照我的第一个想法实现了这一点:我重载了 __init__ Packet 类函数,并使用仅在使用我的数据包字符串作为参数调用构造函数时定义的全局变量:

class NewProtocol(Packet):
def __init__(self, _pkt="", post_transform=None, _internal=0, _underlayer=None, **fields):
self.name = "myNewAwesomeProto"
if _pkt != "":
global frameSize
frameSize = len(_pkt)
fields_desc=[
BitField("startingField", None, 8),
BitField("payload", None, (frameSize - (8+2))*8),
BitField("endingField", None, 2*8)
]
super(NewProtocol, self).__init__(_pkt, post_transform, _internal, _underlayer)

关于python - 在 scapy 中创建新协议(protocol),其中字段取决于数据包总长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004991/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com