How can I find the size of a particular field that Scapy support. For example what is the size of LongField (in bytes)? I checked the scapy documentation, but couldn't find it (http://www.secdev.org/projects/scapy/doc/build_dissect.html#fields) . Is there any function to check it, or any documentation which shares this info.
答案 0 :(得分:2)
看看源代码。 Scapys built-int字段使用struct.pack()
将整数转换为各种长度的Big-和Little-Endian表示。 LongField特别是Field的实现将序列化为fmt=Q
,根据struct的python文档,其大小为Q unsigned long long integer 8
(另见struct.calcsize
)
请注意,Fields可以高度特定于一个协议。但是,对于基于class Field
的字段,您可以尝试访问实例fmt
属性。但是,这可能不准确,因为您的字段可能具有重写的序列化方法。一个更通用的解决方案将生成Field的一个实例,将其序列化并在其上调用len()
。
(注意:链接到一个非官方的github镜像)