2012-05-16 38 views
1

解剖有效载荷步骤的每个部分我想知道如何根据型动物解剖有效载荷字段中键入使用Scapy的或以另一种方式与impacket/pcapy周围/长度...通过步骤与Scapy的,impacket或pcapy

例如,我有这样=>

|###[ 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添加了一个新协议,但最后一部分管理起来非常复杂,因此这就是为什么我选择/尝试以这种方式解析有效载荷的最后一部分(上图)。

回答

2

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

在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

如果您对如何解析某些字段有更具体的问题,我可以尝试回答它,但现在,这是我可以为您的一般问题提供的最佳建议。希望能帮助到你。