WireShark基础
什么是WireShark
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。
获取WireShark
wireshark下载地址:https://www.wireshark.org/download/
点击下一步即可。
抓取聊天记录数据包
在两台的电脑(笔记本电脑win10 主机与ubuntu虚拟机。网卡选择桥接模式,可得到两个子网IPv4地址)上运行 “疯狂聊天室”程序,通过wireshark抓包。
环境准备
抓包过程
分析源代码:
def send (self):
msg = self.m_msg.GetValue().strip()
if not msg:
return
self.m_msg.SetValue(u'')
msg = jc.toutf8(self.myname)+":"+jc.toutf8(msg)
self.udp.sendto(msg,('255.255.255.255,1))
打开Wireshark,输入筛选ip.dst255.255.255.255。
搜索发现存在ip.dst255.255.255.255的包,同时证明了是基于UDP协议进行发送,而且是发送到广播地址255.255.255.255。这样处于同一个房间即处在同一个端口号的所有人都可以接受到消息。
可以发现端口号为5005,通过源码可以看出,端口号为房间号+5000
继续抓包聊天内容:
可以看出抓包信息与聊天内容一致。
总结
软件使用的协议是UDP协议,这种协议能不需要建立连接,讲数据和目的封装成数据包中,每个数据报的大小限制在64k内。通过搜索资料可以发现,我们常用的社交软件QQ使用的OICQ协议封装在UDP协议中,因此它也是一种UDP协议,这种协议不需要连接,因此是不可靠协议,但是速度快。
参考文章链接:https://blog.csdn.net/qq_45659777/article/details/121421044