问题描述
- 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,没有分数,请各位老师不吝赐教,万分感激.
解决方案
unpack是按包格式协议来解析对我。
是移位操作。
&是取最后四位
获取转换IP地址
时间: 2024-12-28 23:22:31