2014-11-25 70 views
1

我使用支持MPTCP的修改後的內核在pcap文件中捕獲了多路徑TCP流量。該流量中的數據包的第2層報頭與Scapy給出了下面的內容,我無法理解,因爲它不像以太網報頭。無法使用Scapy sendp發送MPTCP數據包()

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

當我嘗試發送使用sendp()上面的包,我無法看到我的垃圾(包括tcpdump和Wireshark的)東西。我認爲,由於沒有目的地mac地址,sendp()無法發送。但是目的地址在那裏。當我嘗試使用發送發送(),它顯示了一個警告:"WARNING: Mac address to reach destination not found. Using broadcast."

但既然,我已經捕捉到了從使用tcpdump一個實時的交通,怎麼還有它僅與目標IP地址發送的數據包? Scapy/Python中是否有任何解決方法?

我還想在Python中使用MPTCP的一些建議。

回答

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包。