whatsapp协议分析报告
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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请求包传递的。
综上所述: 无法通过是解密语音数据包来实现对语音的监听的!!!
以上是关于whatsapp协议分析报告的主要内容,如果未能解决你的问题,请参考以下文章