用Scapy逐步剖析有效载荷的每个部分

时间:2012-05-16 13:22:24

标签: python scapy

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

1 个答案:

答案 0 :(得分: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

如果你有一个关于如何剖析某些领域的更具体的问题,我可以尝试回答它,但是现在这是我能为你的一般问题提供的最佳建议。希望它有所帮助。