在 scapy 中对数据包 header 使用方括号
Using square brackets for packet header in scapy
我有一个关于在 scapy 中使用方括号时得到的数据的问题。
参考代码:
#!/usr/bin/python3
from scapy.all import *
def spoof_pkt(pkt):
a = pkt[IP]
pkt = sniff(filter='tcp',prn=spoof_pkt)
以上代码尝试嗅探 tcp 数据包。我的问题是,当我在 scapy 中使用 pkt[IP]
之类的语法时,我是只获得 IP header,还是从 IP header 开始获得整个数据包?
您将获得整个数据包,包括并遵循 IP header:
>>> a = Ether()/IP()/ICMP()
>>> a[IP]
<IP frag=0 proto=icmp |<ICMP |>>
如果您只需要 IP 层,则必须删除其负载:
>>> c = a.copy()[IP]
>>> c.remove_payload()
>>> c
<IP |>
请注意,数据包及其所有子字段都是可变的
我有一个关于在 scapy 中使用方括号时得到的数据的问题。
参考代码:
#!/usr/bin/python3
from scapy.all import *
def spoof_pkt(pkt):
a = pkt[IP]
pkt = sniff(filter='tcp',prn=spoof_pkt)
以上代码尝试嗅探 tcp 数据包。我的问题是,当我在 scapy 中使用 pkt[IP]
之类的语法时,我是只获得 IP header,还是从 IP header 开始获得整个数据包?
您将获得整个数据包,包括并遵循 IP header:
>>> a = Ether()/IP()/ICMP()
>>> a[IP]
<IP frag=0 proto=icmp |<ICMP |>>
如果您只需要 IP 层,则必须删除其负载:
>>> c = a.copy()[IP]
>>> c.remove_payload()
>>> c
<IP |>
请注意,数据包及其所有子字段都是可变的