python - 使用 Scapy 逐步剖析有效负载的每个部分

标签 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 添加了一个新协议(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/

相关文章:

python - 使用发送命令时,“L3PacketSocket”对象没有属性 'ins'

scapy - 如何验证Scapy中的数据包是否具有TCP层

Python导入lib类似 "import * from XXX"

javascript - 我可以将 Node.js 包与 Django 一起使用吗?

python - 脚本中的 Scapy

python - 当代码放入函数中时,a 是未定义的

python - HDF5 添加 numpy 数组速度慢

python - 如何解决操作系统错误 : [Errno 22] Invalid argument:

赋值运算符左侧的Python多个变量