微信业务原理分析

更新时间:2023-03-18 08:37:01 阅读量: 经管营销 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微信业务原理分析

随着通信技术和移动互联网飞速发展,移动互联网应用也越来越丰富多彩,以微信为代表的IM类应用最为流行。微信作为一款手机聊天软件,通过网络快速发送图片、文字和视频等,支持多人群聊。微信存在多种不同的操作对应着不同的场景,通过捕获微信在移动网络中的用户行为特征,重点开展微信登陆、微信收发图片、文字、视频等重要操作场景的分析,分析微信的操作业务信令过程,指导并制定相应的业务评估指标 ,为运营商优化网络提供参考。

当前使用的IM系统大都组合使用了C/S和P2P模式。在登陆IM进行身份认证阶段是工作在C/S方式,随后如果客户端之间可以直接通信则使用P2P方式工作,否则以C/S方式通过IM服务器通信微信的通信原理如下图:

1、微信登陆

微信登陆用户常用的方式分为二种:一种为不需要输入密码的直接登陆,另外一种是用户输入用户名和密码。通过流程分析,两种登陆方式都有登陆动作特征。打开后台运行的微信,不属于微信登陆过程,因此该过程不计入微信登陆。微信登录使用了TCP 80端口或者TCP 443端口进行通讯。

1.1 微信登陆流程

打开 微信客户端,用户输入用户名和密码,点击登陆,完成登陆过程。IM服务器通过读取用户数据库来验证用户身份,如果验证通过则会进行后续的信息交互,包括获取用户列表、新信息、设备信息更新等。登陆过程基于TCP/IP协议,如下:

微信登陆成功,例如输入正确的密码:(后台运行的登陆再抓包测试)

TCP三次握手过程

微信登陆动作

微信登陆过程都是在一个TCP流里实现,首先客户端发送微信登陆动作标识消息给服务器端,接着客户端接收服务器端回送回登陆动作标识消息,从客户端来看,一次微信登陆过程会有登陆动作的一发一收的完整过程。微信登陆过程重点还需针对TCP流的登陆特征字进行动作分析,识别登陆过程,并判断登陆过程的成功或者失败。

微信登陆失败,例如输入错误的密码:

微信登陆动作

微信登陆失败过程也是在同一个TCP流里实现,失败登陆过程也会有登陆动作的一发一收的完整过程,表面上与成功过程的特征字是一样的,从动作上无法识别出成功或者失败。由于数据是加密的,失败原因无法解析出来,因此从TCP流的登陆消息的数据头中识别出成功和失败的特点。特征码识别详细见下节分析。

1.2 微信登陆动作特征码识别

通过多次抓包测试,包括登陆成功和登陆失败,对特征字的分析提炼,微信登陆特征字的识别只需带有数据段的报文进行分析。对微信登陆业务的流程报文每个字节的值进行统计分析,遍历32个字节,数据段可识别报文发送的方向、报文的长度、报文的动作、对方微信号、本机用户微信号、后续所有payload。总结出以下微信登陆的动作过程识别。

登陆请求识别码为:00 10 00 01 00 00 00 b2 00 00 00 02,如下

登陆确认识别码为:00 10 00 01 3b 9a ca b2 00 00 00 02,如下

登陆成功和失败的区别可以从服务器端回送给客户端的动作识别消息中提取到差异。当微信登陆成功时,服务器会回送给客户端其在服务器端的对应微信号,而当登陆失败时,服务器端则回送给客户端所对应的微信号为0。

1.3 微信登陆建立成功后数据交互

微信登陆建立成功后,客户端会向服务端发起多个HTTP业务请求,请求依据系统及版本的不同有所差异,如下例子,包括有getcontactlabellist、iphonereg、getpackagelist、reportstrategy、getboundharddevices、oplog、mmsnssync等,不同用户不同场景下登陆对HTTP业务请求会稍有不同。而微信登陆失败则不会有后续的客户端会向服务端发起多个HTTP业务请求。

例子中发起了12个HTTP请求,登陆后进行了12对HTTP的交互,以上过程都是在TCP短连接中完成,短连接HOST为szexshort.weixin.qq.com, szshort.weixin.qq.com。

微信的连接包括两类连接:有短连接和长连接,短连接运行在80端口,HTTP BODY是二进制数据,提供用户验证、好友添加、好友获取、用户图像、行为日志上报等,如上的登陆后的交互信息。长连接提供接受\\发送文本消息、接受\\发送语音、接受\\发送图片、接受\\发送视频文件等。

1.4 业务登陆成功率

业务登陆成功率%:用户输入账号、密码点击登陆或者直接点击登陆微信APP(不需登陆密码),登陆进入微信的响应成功比例

? 指标定义:微信业务登陆成功率是指,微信业务下客户端与服务

器成功建立TCP连接的条件下,IM服务器成功响应终端发起的微信业务登陆请求的比例。

? 指标算法:业务登陆成功率%=登陆响应次数/登陆请求次数*100% ? 信令标志:

?

登陆请求次数——微信业务,识别微信登陆动作的请求XDR次数。统计点如下图P1。

?

登陆响应次数——微信业务,识别微信登陆动作的响应,且能成功回送用户微信号的XDR次数。统计点如下图P2。

1.5 业务登陆时延

业务登陆时延:用户输入账号、密码点击登陆或者直接点击登陆微信APP(不需输入密码),用户登陆微信业务的时延 公式:

? 指标定义:微信业务登陆时延是指,微信业务下客户端与服务器

成功建立TCP连接的条件下,IM服务器成功响应终端发起的微信业务登陆请求的时延。

? 指标算法:业务登陆成功时延(ms)=∑(登陆完成时间-登陆请

求时间)/登陆响应次数 ? 信令标志:

?

登陆请求时间——微信业务,识别微信登陆动作的请求时间。统计点如下图P1。

?

登陆完成时间——微信业务,识别微信登陆动作的响应,且能成功回送用户微信号的时间。统计点如下图P2。

本文来源:https://www.bwwdw.com/article/kycd.html

Top