gpt4 book ai didi

python - 无法使用 Scapy sendp() 发送 MPTCP 数据包

转载 作者:可可西里 更新时间:2023-11-01 02:54:26 27 4
gpt4 key购买 nike

我使用支持 MPTCP 的修改内核在 pcap 文件中捕获了多路径 TCP 流量。该流量中带有 Scapy 的数据包的第 2 层 header 给出了类似下面的内容,我无法理解,因为它不像以太网 header 。

>>> p = sniff(offline="my.pcap", count=1)[0]
>>> p.show()
###[ cooked linux ]###
pkttype = sent-by-us
lladdrtype= 0x1
lladdrlen = 6
src = '4@\xb5\x8e\x15\x92'
proto = IPv4
###[ IP ]###
version = 4L
ihl = 5L
...
...
...

当我尝试使用 sendp() 发送上述数据包时,我无法在转储中看到任何内容(tcpdump 和 Wireshark)。我想,由于没有目标mac地址,sendp()是无法发送的。但是目标IP地址在那里。当我尝试使用 send() 发送时,它显示警告:"WARNING: Mac address to reach destination not found. Using broadcast."

但是,既然我已经使用 tcpdump 从实时流量中捕获了该数据包,那么它是如何仅使用目标 IP 地址发送的呢?在 Scapy/Python 中有解决方法吗?

我还想要一些关于在 Python 中使用 MPTCP 的建议。

最佳答案

使用的 pcap 文件包含不正确的数据包。使用启用了 MPTCP 的内核启动并进行了全新测试。这是我从包含有效以太网地址的 MPTCP 数据包中得到的。

>>> ack_pkt = sniff(offline="../mptcp/mptcpdemo.pcap", count=14)[0]
>>> ack_pkt.show()
###[ Ethernet ]###
dst = 00:**:**:**:**:44
src = 34:**:**:**:**:92
type = IPv4
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 72
...
...
...
###[ TCP ]###
...
...
...
options = [('MSS', 1460), ('SAckOK', ''), ('Timestamp', (523099492, 0)),
('NOP', None), ('WScale', 7), (30, '\x00\x81\x8bxb\xdfZ\xbdS\t')]

Options 的最后一部分包含 Kind=30,表示这是一个 MPTCP 数据包。

关于python - 无法使用 Scapy sendp() 发送 MPTCP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27120703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com