python - 如何检查 scapy 数据包中是否存在层?

标签 python scapy

如何检查 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 运算符。它返回 TrueFalse,具体取决于该层是否存在于 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/

相关文章:

python - libpython2.7.so.1.0 : cannot open shared object file: No such file or directory

python - sr*() 方法不在 scapy 中剖析回答的数据包

python - Pickle 转储和时间戳与预期不符

python - 在 Python 脚本末尾生成 pcap 文件

python - 从矩阵转换为决策树的数值数据?

python - 同步客户端如何连接到twisted服务器

scapy - 如何将UDP数据包发送到scapy中的特定UDP dst端口?

python - 使用 scapy 生成 LACP 流量

python - Pyramid 和 Cassandra 无法正常工作

python - Jupyter 中 Pandas 自动补全的问题