裸奔的支付X聊天,你还敢用吗?

 一直想在社交领域突破的某付宝,却自始至终对社交功能如此的不用心,让用户的数据在网络中裸奔,使用户不寒而栗。


没错,这篇文章要说的就是BAT中A家的支付X,那个千方百计做社交的支付工具。


如果你使用了它的聊天窗口内的部分功能,请记住,你的隐私正在互联网裸奔。


支付X,在社交上,你干不过微信,就凭你如此不上心地明文传输聊天相关的数据,赶紧回家补洞去smiley_13.png


庆幸的是,各巨头的当家软件中裸奔的信息,还原得轻松,打得响名头,是我们协议分析还原工作者的心头肉


当然,裸奔的信息,不仅仅存在于A家的支付X,BT两家的软件也存在,还有待于各位去发掘。


支付X的聊天窗口包括很多子功能,有哪些是明文的呢?后文将进行分析。


01

语音消息


使用HTTP明文传输,没有任何加密措施,使用域名为up-mayi.django.t.taobao.com,从报文中可以看出,语音消息是以文件形式在网络中传输的,下图为一次语音的发送传输过程,接收过程与此类似。


640?wx_fmt=png


语音编码为amr格式,语音内容部分可看到明显的字符串“#!SILK_V3”,和微信、QQ等的语音文件采用的编码是一致的。如果有需要可在本公众号聊天窗口发送“SILK”获取原始解码库。


02


图片


图片同样使用HTTP明文传输,没有任何加密措施,但是域名为mugw.alipay.com:443,使用的是一个支付宝主域名,并且使用的是443端口,却偏偏使用明文进行传输,多么的漫不经心。下图为一次图片的发送传输过程,接收过程与此类似。


640?wx_fmt=png


图片文件一般比较大,因此可能会分段进行传输,在上图的图片内容部分可看到明显的图片关键字“JFIF”,如果使用16进制则可看到图片的起始为“FF D8”,可使用Wireshark导出图片


03


视频


视频和图片类似,当然也是HTTP明文,域名为mugw.alipay.com:443,不过视频的发送之前,会多了一个视频缩略图的传输过程,与图片传输相同,在此直接忽略了。下图为一次视频的发送传输过程,接收过程与此类似。


640?wx_fmt=png


支付X自己拍摄的视频为MP4格式,传输流中可看到MP4的标记“ftypmp42”、“isommp42”等,可使用Wireshark导出MP4。



04


悄悄话


悄悄话是支付X在2017年中推出的一项阅后即焚的聊天功能,可以进行图片,文字,语音,视频四类数据的收发,按正常逻辑,悄悄话应该安全性比其它数据要高,并且不能让第三方的人知晓呀,但是,支付X重新定义了悄悄话,它只是一个名字,实际功能是阅读后记录在界面上被删除,其它包括域名,逻辑,编码等,均与非悄悄话一致。下图为一次悄悄话的语音发送传输过程,接收过程与此类似。


640?wx_fmt=png


明文,明文,全都是明文,没有任何隐秘的意思。


05


其它


其它例如位置信息等,在此省略,留给大家去分析了,当然,聊天的文本信息是SSL传输的,与红包等资金相关的数据安全性类似。


为防止裸奔,请远离支付X聊天功能,否则,它会突然给你意想不到的惊喜。


专业的人,做专业的事,马道长,还是应该去找王大仙。


如果你有任何需要和大家分享的,请联系我进行分享。

640?wx_fmt=jpeg

长按进行关注。





封装了开源工程, mp4v2, mpeg4ip代码, /******************************************/ /* Name:Mp4Interface.h /* Mark:mp4封装解析接口 /* author: machh /* date:2012.5.12. /******************************************/ #ifndef _MP4_INTERFACE_ #define _MP4_INTERFACE_ #include "MP4Writer.h" #include "MP4Reader.h" typedef struct _tagPACKET_HEADER_ { _tagPACKET_HEADER_() { nType = 0; nLen = 0; nTime = 0; } unsigned long nTime; // 不依赖于I帧的参考时间 int nLen; // 不包括该头结构本身大小 int nType; }PACKET_HEADER; enum FILE_OPEN_MODEL { OPEN_MODEL_W, // 写文件 OPEN_MODEL_R // 读文件 r+b }; class Mp4Interface { public: Mp4Interface(void); ~Mp4Interface(void); public: /* * @mark 打开文件 * @param[in] nModel文件打开方式,如果nModel为OPEN_MODEL_W 则创建文件 * @param[in] nMediaType 值为 MP4_VIDEOTYPE_H264/MP4_VIDEOTYPE_MPEG4 * @return 操作结果 */ int OpenFile(const char* strPath, FILE_OPEN_MODEL nModel, int nMediaType ); /* * @Name:Close * @mark: 读写操作结束之后,必须调用此函数 */ int Close(); public: //写操作 /* * @mark: 添加视频轨道 * @param[out] nTrackId 轨道ID * @param[in] nWidth,nHeight 画面宽高 * @param[out] fps 帧率 */ int AddVideoTrack (int& nTrackId, const int nWidth, const int nHeight, const double fps ); /* * @mark: 写一帧数据 * @param[in] lpData 要写入的数据 * @param[in] nSize 要写入的数据大小 * @param[in] nTimestamp 时间戳 */ BOOL WriteFrame( const int nTrackId, const uint8_t* const lpData, const int nSize, const MP4Timestamp nTimestamp, const MP4Duration nDuration = -1 ); /* * @mark: 添加音频轨道 aac * @param[out] nTrackId * @param[in] nSamplePerSec (timescale) */ int AddAudioTrack( int& nTrackId, const int nSamplePerSec, const int nSamplePerFrame = -1 ); public: //读操作 /* * @mark : 全局函数,读取整个MP4文件结构信息, * 函数内部会fopen/fclose,该函数应当在OpenFile之前调用 * @param[in] strFile 文件路径 * @param[out] lsTrackInfo 输出文件信息结构 */ bool static GetMP4FileInfo( const char* strFile, MP4_TRACKINFO_LIST& lsTrackInfo ); /* * @mark:SetReadTrackId设置轨道ID, */ int SetReadTrackId( int nTrackID ); /* * @mark:获取轨道信息,该函数必须在OpenFile(……)之后调用才有效 */ int GetTrackInfo( MP4_TRACK_INFO* pstTrackInfo ); /* * @mark: 读取一帧数据 */ int ReadFrameData( DWORD nSampleId, BYTE** ppFrame, DWORD* pnBufSize,int& nFrameType ); protected: int m_nOpenModel; int m_nMediaType; CMP4Writer * m_pMp4Writer; CMP4Reader * m_pMp4Reader; }; #endif// end
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值