2014-10-30 209 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