Scapy无法分割IPv6数据包

时间:2014-10-30 09:49:22

标签: python ipv6 scapy ip-fragmentation

我目前正在开展一个有关IPv6安全的项目。我试图复制此文档中的结果:https://www.tno.nl/downloads/testing_the_security_of_IPv6_implementations.pdf

向下滚动到第29页的第4.4节。

我想测试创建具有无限扩展头的数据包是否实际上能够使系统崩溃。我一次又一次地遇到的问题是,当根据文档运行脚本时,我不断收到错误:

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)

我一直在寻找,但我发现任何有同样错误的东西。我希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

你应该检查scapy的版本。代码适用于我的系统(Ubuntu 14.04,scapy 2.2.0)。还尝试以root身份运行scapy shell中的代码:

$ 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.

因为您必须将scrIPdstIP替换为真正的IPv6地址作为字符串。

答案 1 :(得分:0)

有一种叫做scapy6的东西:

http://www.secdev.org/conf/scapy-IPv6_HITB06.pdf

尝试查看第128页并转发以查看是否可以使其工作,它应该支持IPv6。