is_thinking
2015-06-07 08:26
采纳率: 86%
浏览 4.3k

python用socket解析数据包的问题

用python做个抓包工具,下面有写代码不明白,请老师指点一下.

 while True: 
    packet = s.recvfrom(65565) 
    packet = packet[0]  
    ip_header = packet[0:20] 
    iph = unpack('!BBHHHBBH4s4s' , ip_header) 

    version_ihl = iph[0] 
    version = version_ihl >> 4 
    ihl = version_ihl & 0xF 
    iph_length = ihl * 4 
    ttl = iph[5] 
    protocol = iph[6] 
    s_addr = socket.inet_ntoa(iph[8]); 
    d_addr = socket.inet_ntoa(iph[9]); 

问题1:这里面的iph = unpack('!BBHHHBBH4s4s' , ip_header)是什么意思,必须是BBHHHBBH4s4s吗?

问题2:version = version_ihl >> 4是什么意思? '>>'是什么符号?

问题3:ihl = version_ihl & 0xF是什么意思?

问题4:s_addr = socket.inet_ntoa(iph[8])是转换ip的吗?
本人初学python,没有分数,请各位老师不吝赐教,万分感激.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • oyljerry 2015-06-07 13:14
    已采纳

    unpack是按包格式协议来解析对我。

    是移位操作。
    &是取最后四位
    获取转换IP地址

    点赞 打赏 评论

相关推荐 更多相似问题