ICMP校验和函数未正确返回

时间:2018-11-12 06:45:38

标签: python-3.x networking icmp

我正在研究老师为我的网络课程提供的程序。假定使用ICMP对服务器执行Ping操作。但是,该程序无法正常工作。我已经用WireShark运行它,它说校验和字节未正确返回。显然,这适用于我的其他同学,但不适用于我。对于那些可能会说“问您的教授”的人,我已经尝试了一段时间了,但是我还无法与他见面。这是实现校验和的功能。

    def checksum(string):
        csum = 0
        countTo = (len(string) // 2) *2
        count = 0 
        while count < countTo:
            thisVal = ord(strin[count+1]) *256 + ord(string[count])
            csum = csum + this Val 
            csum = csum & 0xffffffff
            count = count +2
        if coutnTo < len(string):
            csum = csum = ord(string[len(string) -1])
            csum = csum & 0xffffffff
        csum = (csumm >> 16) + (csum & 0xffff)
        csum = csum + (csum >>16)
        answer = ~csum
        answer = answer & 0xffff
        answer = answer >> 8 | (answer << 8 & 0xff00)
        return answer

我还应该提到,他使用struct.pack来创建字符串参数:

    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST,0,0, ID,1)
    data = struct.pack("d",time.time())
    checksum(str(header+data))

如果重要的话,我也在Kali Vm中运行它。

0 个答案:

没有答案