1

我想知道如何使用 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 添加了一个新协议,但最后一部分管理起来非常复杂,所以这就是为什么我选择/尝试以这种方式剖析有效负载的最后一部分(上图)。

4

1 回答 1

2

在 Scapy 中剖析复杂协议的最佳方法是了解所有可用字段(鉴于其糟糕的文档,这可能很困难)。

Scapy 支持的字段列表:http: //trac.secdev.org/scapy/wiki/Fields

特别看一下ConditionalField:

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)

此外,了解在 Scapy 解剖期间如何使用guess_payload_class() 来选择不同的层。如果您想在小部分(2 字节/4 字节等)中剖析它,请考虑为每个部分创建一个层并使用guess_payload_class()。http://trac.secdev.org/scapy/wiki/BuildAndDissect

如果您对如何剖析某些领域有更具体的问题,我可以尝试回答,但目前这是我可以为您的一般性问题提供的最佳建议。希望能帮助到你。

于 2012-05-17T15:26:24.457 回答