Scapy无法对IPv6数据包进行分片

1 投票
2 回答
2804 浏览
提问于 2025-04-30 14:04

我现在正在做一个关于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.

当然,你需要把scrIPdstIP替换成真实的IPv6地址,记得用字符串的形式表示。

撰写回答