如何检查 scapy 数据包中是否存在特定层?例如,我需要检查 IP header 的 src/dst 字段,我如何知道特定数据包实际上具有 IP header (例如与 IPv6 相对)。
我的问题是,当我去检查 IP 报头字段时,我收到一条错误消息,指出 IP 层不存在。这个特定的数据包没有 IP header ,而是具有 IPv6。
pkt = Ether(packet_string)
if pkt[IP].dst == something:
# do this
当我尝试引用 IP 层时出现错误。在尝试操作之前如何检查该层是否存在?
谢谢!
最佳答案
您应该尝试使用 in
运算符。它返回 True
或 False
,具体取决于该层是否存在于 Packet
中。
root@u1010:~/scapy# scapy
Welcome to Scapy (2.2.0-dev)
>>> load_contrib("ospf")
>>> pkts=rdpcap("rogue_ospf_hello.pcap")
>>> p=pkts[0]
>>> IP in p
True
>>> UDP in p
False
>>>
root@u1010:~/scapy#
关于python - 如何检查 scapy 数据包中是否存在层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540571/