首页 文章

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

提问于
浏览
1

我在pcap文件中捕获了多路径TCP流量,其中包含支持MPTCP的修改内核 . 带有 Scapy 的流量中的数据包的第2层报头给出了类似下面的内容,我不像以太网报头那样 .

>>> 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的一些建议 .

1 回答

  • 0

    使用的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')]
    

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

相关问题