利用 Wireshark 软件对微信协议的分析
——QPIC
贾冰杰 1120101251
全然 1120101259
王浩峰 1120101261 (组长)
谢青梅 1120101262
闫郡 1120101263
数据通信基础 小组:qpic
目录
一.实验规划 ——03
二.实验内容
步骤 1. 配置虚拟 AP: ——04
步骤 2. 分析微信的登陆认证过程 ——05
步骤 3. 分析微信的普通聊天过程 ——06
步骤 4. 微信-附近的人 ——07
三. 实验结论:关于微信协议
1.微信通过内置浏览器和服务器交互数据。 ——09
2.微信的数据传输未加密 ——09
3.微信不同功能有独立的服务器 ——10
4.关于”微信与运营商大战”的思考 ——11
参考文献 ——12
2
数据通信基础 小组:qpic
一.实验规划:
1.接入手机,通过 wireshark 抓取微信数据包。
2.分析微信的登陆认证过程
3.分析微信的普通聊天过程
3.分析微信的典型应用——附近的人
4.总结:微信的协议
3
数据通信基础 小组:qpic
二.实验内容:
步骤 1、配置虚拟 AP:
由于微信的 pc 网页版本不容易操作,针对本次分析,我们使用 Android 手
机系统下的微信客户端进行操作。通过手机连接至 pc 虚拟的无线网络进行微信
的连接,这样通过 wireshark 软件进行抓包。
win7 系统下可以很容易将无线网卡设置为虚拟 AP,供其他无线设备接入。
配置脚本如下:
#Vitual_Wifi_setup.bat
netsh wlan set hostednetwork mode=allow ssid="HappyBoy" key=******
#在 GUI 界面下,将正在使用的某个网络连接共享给该虚拟 AP.
netsh wlan start hostednetwork
netsh wlan show hostednetwork
将手机接入后,可以看到: Number of clients 为 1.
打开 wireshark,能看到在接口列表中已经有虚拟 AP 了(如图)。手机接入
后,打开微信 app,点击开始抓包,就能抓到微信数据包了。
4
数据通信基础 小组:qpic
步骤 2. 分析微信的登陆认证过程:
打开微信客户端,微信开始登录,可以看到手机分配到的 IP 为 192.168.137.87,
AP 站点的 IP 为 192.168.137.1
第一包数据 是一个域名查询,微信客户端向网络查询微信服务器,域名为
long.weixin.qq.com 的 IP 地址;
第二包数据 是 ARP 地址解析,AP 站点向全网广播,询问 192.168.137.87 对
应的 MAC 地址;
第三包数据 是 ARP 应答,手机告诉 AP 站点自己的 MAC 地址;
第四包数据 是第一包 DNS 查询的应答,将该包数据展开,可以看到:
可以看到,查询到微信域名 long.weixin.qq.com 的多个服务器 IP。 接下来
TCP 的通信过程表明,微信客户端选择了 IP 为 120.204.201.154 的主机进行数据
传送。
5
数据通信基础 小组:qpic
步骤 3. 分析微信的普通聊天过程
先是建立 TCP 连接:第 5 到第 7 包数据是 TCP 的三次握手
首先客户端向服务器发送标志为 SYN 的连接请求,数据包标号 Seq=0;
收到请求后,服务器向客户端发送了带有 SYN 和 ACK 的确认应答,发送序
号 Seq=0,确认序号 ACK=1;接下来,客户端向服务器发送确认应答,Seq=1,
ACK=1. 连接建立完成。
第 8 到第 19 包数据是客户端和服务器之前用 HTTP 协议相互传送了一些数
据。
第 18 包是 HTTP 数据包,它的大小为 314 字节,其中有用数据长度为 248
字节,数据最后一行为空行,表明数据已经传送完毕,如下图所示:
第 20 和 21 包数据是关闭连接。传送完数据后,主机发出带 FIN 的 TCP 报文,
要求关闭连接,客户端发出确认(第 21 包数据),连接关闭。
6
数据通信基础 小组:qpic
超时会重传:
第 39 包:未收到第 38 包数据的确认应答,超时后,开始重传;
第 42 包:第 38 包数据仍未收到应答,又超时,重传一次;
第 43 包:终于收到了第 38 包数据的应答。
步骤 4. 微信-附近的人
用 wireshark 抓包得到如下数据
首先是 DNS 解析,展开第二包数据,可以看到
7
数据通信基础 小组:qpic
DNS 应答返回了域名 mapi.mapabc.com 的 IP:211.151.71.89
mapabc.com 是北京图盟科技有限公司的网站,是一家致力于互联网地图、
手机地图和相关位置服务的互联网软件技术服务公司,它是高德成员企业。(有
个高德地图的 app)
随后的几包数据,是客户端和该服务器之间相互交换信息。
查询该 IP.发现服务器位于北京。
可以看到,微信客户端的地点信息被收集起来存储在服务器中,当客户端发
送附近的人请求时,服务器调用地图信息,通过计算,得到位于附近的用户数据,
将它们传给该客户端。
附近的人---用户头像下载过程
第 134 包: HTTP 的 GET 请求,展开该包:
将请求的地址输入到浏览器,会看到一个用户头像;
第 135 包 是服务器端的 TCP 协议将该头像分段成两段(第 135 包和 136 包),
传送给客户端;
第 136 包 标为 HTTP 包,表示头像传送出去了。
第 137 和 138 包 客户端收到 HTTP 传来的头像后,向服务器发 TCP 确认,
传送完成。
8