import time
import array
def jiaoyan(pack):
if len(pack)%2==1:
pack+=b'\0'
words=array.array('h',pack)
sum=0
for word in words:
sum += word
sum = (sum >> 16) + (sum & 0xffff)
sum = (sum >> 16) + (sum & 0xffff)
return (~sum) & 0xffff
icmp=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)
icmp.settimeout(3)
header = struct.pack('bbHHh', 8,0,0,1234, 1)
data=struct.pack('5s',b'haasd')
print(jiaoyan(header+data))
icmp.sendto(jiaoyan(header+data), ('127.0.0.1', 1))
这是我写的一个python程序,我想完成icmp的封装,发出去,接回来,但是我写的代码最后一行出了错。我不清楚错在哪里。。
看下面的就行 ,下面的是我新更新的!
按理说 不应该出现问题的,校验的返回类型应该是二进制的,最后一条代码应该没问题