【问题标题】:How to verify if a packet in Scapy has a TCP layer如何验证 Scapy 中的数据包是否具有 TCP 层
【发布时间】:2014-04-01 09:14:20
【问题描述】:

我想知道如何验证我从 Scapy 中的 sr1() 函数收到的数据包是否包含 TCP 层,以便对 TCP 标志进行一些处理。

【问题讨论】:

    标签: scapy


    【解决方案1】:

    您有两种选择,in 运算符是一种。

    >>> TCP in pkt
    True
    >>> if TCP in pkt:
    ...     # Handle TCP Flags
    

    Scapy 中的数据包对象也有一个名为haslayer() 的函数。

    >>> pkt = IP()/TCP()
    >>> pkt.haslayer(TCP)
    1
    >>> pkt2 = IP()/UDP()
    >>> pkt2.haslayer(TCP)
    0
    >>> Packet.haslayer.__doc__
    'true if self has a layer that is an instance of cls. Superseded by "cls in self" syntax.'
    

    【讨论】:

    • 非常感谢 RyPeck 的回答,问题是我要检查的数据包是 Scapy 中 sr1() 命令的结果,所以很遗憾,这些选项对我不起作用。我收到此错误消息:AttributeError: 'NoneType' object has no attribute 'haslayer'
    • 听起来是因为您实际上并没有从sr1 收到数据包。
    猜你喜欢
    • 2020-12-25
    • 2011-07-29
    • 2014-10-28
    • 1970-01-01
    • 2015-05-21
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多