簡體   English   中英

如何檢查 scapy 數據包中是否存在層?

[英]How to check for presence of a layer in a scapy packet?

如何檢查 scapy 數據包中是否存在特定層? 例如,我需要檢查 IP 標頭的 src/dst 字段,我如何知道特定數據包實際上具有 IP 標頭(例如,與 IPv6 相對)。

我的問題是,當我檢查 IP 標頭字段時,我收到一條錯誤消息,指出 IP 層不存在。 這個特定的數據包沒有 IP 標頭,而是使用 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#

為了完成,我想我還會提到haslayer方法。

>>> pkts=rdpcap("rogue_ospf_hello.pcap") 
>>> p=pkts[0]
>>> p.haslayer(UDP)
0
>>> p.haslayer(IP)
1

希望這也有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM