Scapy无法对IPv6数据包进行分片
我现在正在做一个关于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
有一个东西叫做scapy6:
http://www.secdev.org/conf/scapy-IPv6_HITB06.pdf
可以看看第128页及之后的内容,看看能不能让它工作,它应该支持IPv6。
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.
当然,你需要把scrIP
和dstIP
替换成真实的IPv6地址,记得用字符串的形式表示。