qq_43412960
2019-11-22 12:54
采纳率: 79.1%
浏览 261
已采纳

这是一个关于PYTHO的socket -raw问题

import   struct,array
import  socket,time
service=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)
service.settimeout(3)
head=struct.pack('bbHHh',8,0,0,1,1)
data=struct.pack('h',4)
bao=head+data
def jiaoyan(bao):
    sum=0
    if len(bao)&1:
        bao=bao+b'\0'
    words=array.array('h',bao)
    for  word in words:
        sum+=word
        word=word>>16+word&0xffff
        word = word >> 16 + word & 0xffff
        return  ~sum&0xffff

hhhhhhh=jiaoyan(bao)

head=struct.pack('bbHHh',8,0,hhhhhhh,1,1)
bao=head+data
service.sendto(bao,('127.0.0.1',2000))
data,add=service.recvfrom(100)

print(data)

service.close()

这是我写的完美的icmp包,然后ping主机的代码,但是运行后数据包超时。。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2019-11-22 13:38
    已采纳

    先找一个现成的程序跑一下,排除下环境的问题,再对照下你的程序,icmp的程序大量都是

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题