Finding field size in byte for the fields Scapy support

时间:2015-10-29 15:48:45

标签: python size field byte scapy

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.

1 个答案:

答案 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镜像)