使用 scapy 在 IP 示例中制作 IP

Craft an IP in IP example with scapy

我正在尝试使用 scapy 在 IP 数据包中发送 IP,但我似乎遗漏或误解了某些内容。这是我的尝试:

from scapy.all import *

payload = "HelloWorld" 
inner = IP(dst="192.168.1.2")
inner.add_payload(payload)
outer = IP(dst="192.168.1.2")
send(outer/inner)

我在目的地用 wireshark 观察了数据包,它显示数据包格式错误:

Expert Info (Error/Protocol): IPv6 Hop-by-Hop extension header must appear immediately after IPv6 header

目的地随后发回类型 3(目的地无法到达)和代码 2(协议无法到达)的 ICMP 数据包。

我已经尝试在外部和内部数据包上设置几个协议(协议 4 IPv4 封装感觉不错)但是到目前为止它们都发回一个“协议无法访问”的 ICMP 数据包。

如果有所不同,我的意图是将内部数据包发送到与外部数据包不同的目的地。我只是想我应该做一个最简单的例子来开始。一旦弄清楚为什么我收到协议无法访问的消息,我将更改内部数据包目标 IP。

建议?

如果您想在 IP 数据包中发送一个 IP(外部 IP header、内部 IP header、IP 负载),例如:

from scapy.all import *

payload = "TEST"
send(IP(dst="192.168.1.2")/IP(dst="192.168.1.2")/UDP(dport=4444)/payload)