首页 > 代码库 > whatsapp协议分析报告

whatsapp协议分析报告

WhatsApp协议分析报告

0、分析结论:

1.whatsapp音视频通信,必须在对方同意通信的基础上,才能够获取对方的外网IP地址, 经过对whatsapp 通信的流程分析,发现要想在对方不知情的情况下获取对IP地址,是无法实现的。具体详见下面的分析过程。

2.whatsapp语音通话是经过加密处理的,密钥在通话开始前经过XMPP协议传送给对方的, 所以通信过程音视频通信包是无法监听聊天内容的。具体详见下面的分析过程。



1、语音通信之获取对端外网IP 分析过程:

情景: ClientA 给 ClientB 发起语音通话请求, ClientB同意电话请求,   最终由CLientB终止电话请求!!

一、ClientA 给 ClientB 发起语音通话请求, ClientA端调用startCall 函数, 

 1.调用 generateE2EKeys 生成一个E2E的callkey, callkey用于通话的数据的加解密
 技术分享
 2.发送一个calloffer请求给ClientB, 请求包中含有callkey
 技术分享
 3.ClientB收到calloffer请求后, 读取出callkey,用于通话的数据的加解密,  技术分享 
4.然后回复一个PreAccept一个回复包给ClientA。包中含有音视频的一些属性信息,用于ClientA初始化OpenSLSE 的Player的参数
 技术分享

 4.ClientA 收到PreAccept请求包信息,初始化,为通话做准备工作。  然后等待ClientB的选择:同意通话,还是拒绝通话。


二、ClientB:同意通话请求 --- Client端调用acceptCall  
 1.调用audioStream启动ClientB的通信从操作,SRTP的操作,OPENSL音频方面操作

 2.发送Accept回复包给ClientA, Accept包含,ClientB的外网IP地址--endpoints,  音视频的编码格式--encoding, 音频的样本采集率:rate 
 技术分享
 
3.ClientA 收到Accept包,调用nativeHandleCallOfferAccept 函数,收到对端的外网IP地址,然后建立P2P连接,连接成功开始通话
技术分享
 

综上分析: 必须需要ClientB同意通话,才能拿到用户ClientB的外网IP地址,所以要实现静默方式获取对端的IP地址是不可能是事情。




2、语音通信之语音信息加解密   分析过程:
1.WhatsApp的语音通信使用的是SRTP协议进行传输的,如下图所示:
技术分享

2.WhatsApp语音数据在网络传输前经过两次加密, 一次是WhatsApp语音数据的加密, 二是SRTP传输协议内部加密。 两次加密使用都是对称加密算法, 两次加密的密钥都来源于一个32位随机变量Callkey。而callkey 根据上文分析师在通话前Call-Offer请求包传递的。
技术分享


综上所述: 无法通过是解密语音数据包来实现对语音的监听的!!!




 
 


 


null


whatsapp协议分析报告