2014-10-30 169 views
1

我目前正在開發一個關於IPv6安全性的項目。我試圖複製這個文件中找到的結果在這裏找到:https://www.tno.nl/downloads/testing_the_security_of_IPv6_implementations.pdfScapy無法分割IPv6數據包

向下滾動到第4.4節,第29頁。

我想要測試是否創造了無限的擴展頭部的分組實際上將能夠系統崩潰。我運行一遍又一遍的問題是,基於文檔運行該腳本時,我不斷收到錯誤:

File "/usr/lib/python2.7/dist-packages/scapy/packet.py", line 787, in fragment 
    return Scapy_Exception("cannot fragment this packet") 
scapy.error.Scapy_Exception: cannot fragment this packet 

,我需要進行分片數據包。否則,我將無法創建這種層出不窮的擴展頭。我正在Debian 7 Wheezy系統上測試這個,並使用Python 2.7。

這裏是我運行腳本:

from scapy.all import * 

packet = IPv6(src="scrIP",dst="dstIP") 
for x in range (0,100): 
    packet = packet/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop() 

    send(packet) 

我一直在尋找周圍,但我不能找到同樣的錯誤任何東西。我希望有人能幫幫忙。

+0

只是猜測,但IPv6中的片段與IPv4不同。有一個片段頭需要。也許你必須手動添加它。 – 2014-10-30 10:23:13

+0

感謝您的答案克勞斯D.我試圖添加「IPv6ExtHdrFragment」選項的數據包。仍然不起作用。同樣的錯誤。 – Ade 2014-10-30 11:04:11

回答

0

你應該檢查scapy的版本。代碼在我的系統上工作(Ubuntu 14.04,scapy 2.2.0)。也可以嘗試運行在Scapy的外殼代碼爲根:

$ sudo scapy 
Welcome to Scapy (2.2.0) 
>>> p = IPv6(src='::1', dst='::1') 
>>> for x in range(100): p = p/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop() 
... 
>>> send(p) 
. 
Sent 1 packets. 

和原因你有真正的IPv6作爲不會忽略字符串替換scrIPdstIP

+0

感謝您再次回答。我使用scapy 2.2.0,我也以root身份運行它。我只是試着複製你的結果,並且在將數據包發送到localhost(:: 1)時它會工作,因爲它不需要對數據包進行分段。當發送到網絡上的其他設備時,我得到和以前一樣的錯誤。 – Ade 2014-10-30 12:06:22