【问题标题】:Scapy unable to fragment IPv6 packetScapy 无法对 IPv6 数据包进行分段
【发布时间】:2014-12-26 07:13:15
【问题描述】:

我目前正在从事有关 IPv6 安全性的项目。我正在尝试复制在此处找到的本文档中的结果:https://www.tno.nl/downloads/testing_the_security_of_IPv6_implementations.pdf

向下滚动到第 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)

我一直在四处寻找,但找不到任何具有相同错误的东西。我希望有人可以提供帮助。

【问题讨论】:

  • 只是猜测,但 IPv6 中的片段的工作方式与 IPv4 不同。需要一个片段标头。也许你必须手动添加它。
  • 感谢 Klaus D 的回答。我尝试将“IPv6ExtHdrFragment”选项添加到数据包中。还是不行。同样的错误。

标签: python ipv6 scapy ip-fragmentation


【解决方案1】:

你应该检查 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 地址。

【讨论】:

  • 感谢您再次回复。我正在使用 scapy 2.2.0,并且我也以 root 身份运行它。我刚刚尝试复制您的结果,并且在将数据包发送到 localhost (::1) 时它确实有效,因为它不需要对数据包进行分段。发送到网络上的另一台设备时,我收到与以前相同的错误。
【解决方案2】:

有一个叫scapy6的东西:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多