我想知道如何使用 Scapy 根据不同的字段类型/长度来剖析有效负载。
例如,我有这个=>
|###[ Raw ]###
| | load='\x00!\x92(\x00!\x92(\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x01\x00\x00\xc0\xa8\x03\x01\xc0\xa8\x03\x02\x01\xc0\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\x18\x18\x10\x00\x00\x00\x00\x00'
我想逐步划分每个部分:第一部分为 2 个字节/第二部分为 4 个字节等...
实际上,我使用 Scapy 添加了一个新协议(protocol),但最后一部分管理起来非常复杂,所以这就是为什么我选择/尝试以这种方式剖析有效负载的最后部分(如上所述)。
最佳答案
在 Scapy 中剖析复杂协议(protocol)的最佳方法是了解所有可用字段(由于其文档质量较差,这可能很困难)。
Scapy 支持的字段列表:http://trac.secdev.org/scapy/wiki/Fields
特别看看 ConditionalField:
ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)
此外,了解如何使用guess_payload_class() 在 Scapy 解剖过程中选择不同的层。如果您想将其分解为小部分(2 字节/4 字节等),请考虑为每个部分创建一个层并使用guess_payload_class()。 http://trac.secdev.org/scapy/wiki/BuildAndDissect
如果您对如何剖析某些字段有更具体的问题,我可以尝试回答它,但目前这是我可以针对您的一般问题提供的最佳建议。希望对您有所帮助。
关于python - 使用 Scapy 逐步剖析有效负载的每个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10619481/