【发布时间】:2015-10-29 15:48:44
【问题描述】:
如何找到 Scapy 支持的特定字段的大小。例如 LongField 的大小(以字节为单位)是多少?我检查了 scapy 文档,但找不到 (http://www.secdev.org/projects/scapy/doc/build_dissect.html#fields) 。 是否有任何功能可以检查它,或任何共享此信息的文档。
【问题讨论】:
标签: python size field byte scapy
如何找到 Scapy 支持的特定字段的大小。例如 LongField 的大小(以字节为单位)是多少?我检查了 scapy 文档,但找不到 (http://www.secdev.org/projects/scapy/doc/build_dissect.html#fields) 。 是否有任何功能可以检查它,或任何共享此信息的文档。
【问题讨论】:
标签: python size field byte scapy
看看源代码。 Scapys 内置的 int 字段使用 struct.pack() 将整数转换为各种长度的 Big- 和 Little-Endian 表示。 LongField 是 Field 的实现,特别是将序列化为 fmt=Q,根据 struct 的 python 文档,其大小为 Q unsigned long long integer 8(另请参阅 struct.calcsize)
请始终注意,字段可以高度特定于一种协议。但是,对于基于 class Field 的字段,您可以尝试访问实例 fmt 属性。但是,这可能不准确,因为您的字段可能具有覆盖的序列化方法。 更通用的解决方案是生成一个 Field 的实例,对其进行序列化并调用 len()。
(注:链接非官方github镜像)
【讨论】: