首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python icmpv6客户端

Python icmpv6客户端
EN

Stack Overflow用户
提问于 2011-06-15 00:50:29
回答 1查看 635关注 0票数 2

我在一个简单的icmpv6客户端上工作,我在校验和方面遇到了一些问题。这是代码,wireshark显示校验和设置不正确,回溯显示一个类似pcs.FieldBoundsError: 'Value must be between 0 and 65535'的错误

代码语言:javascript
复制
import pcs, sys
from socket import *
from pcs.packets.ethernet import *
from pcs.packets.ipv6 import *
from pcs.packets.icmpv6 import *

class packet:
    def __init__(self, src, dst, mac):
        self.src = src
        self.dst = dst
        self.mac = mac

    def construct(self):
        e               = ethernet()
        e.src           = ether_atob("de:de:de:de:de:de")
        e.dst           = ether_atob(self.mac)
        e.type          = ETHERTYPE_IPV6

        ip6               = ipv6()
        ip6.version       = 6
        ip6.traffic_class = 0
        ip6.flow          = 0  
        ip6.length        = 8              # icmpv6 packet length
        ip6.next_header   = IPPROTO_ICMPV6
        ip6.hop           = 255
        ip6.src           = inet_pton(AF_INET6, self.src)
        ip6.dst           = inet_pton(AF_INET6, self.dst)

        icmp6           = icmpv6(ICMP6_ECHO_REQUEST)
        icmp6.code      = 0
        icmp6.id        = 0xf0
        icmp6.seq       = 1
        icmp6.mtu       = 1280
        icmp6.checksum  = 0

        ip6.length      = len(icmp6.getbytes())
        ip6.flow        = len(ip6.getbytes()) + ip6.length

        icmp6.checksum  = icmp6.cksum(ip6)
        pkt = pcs.Chain([e, ip6, icmp6])

        s = pcs.PcapConnector('eth0')
        s.write(pkt.bytes, len(pkt.bytes))

if __name__=='__main__':
    p = packet(sys.argv[1], sys.argv[2], sys.argv[3])
    p.construct()                     
EN

回答 1

Stack Overflow用户

发布于 2011-06-15 01:49:45

这似乎与python-pcs中的bug导致不正确的校验和计算有关。裁剪errornous位应该可以工作:

代码语言:javascript
复制
cs = icmp6.cksum(ip6) & 0xffff
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6347115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档