移动飞信android行为简单分析.docx
《移动飞信android行为简单分析.docx》由会员分享,可在线阅读,更多相关《移动飞信android行为简单分析.docx(11页珍藏版)》请在冰豆网上搜索。
![移动飞信android行为简单分析.docx](https://file1.bdocx.com/fileroot1/2023-2/8/80878789-fb4c-4419-9d4d-bea552b4e025/80878789-fb4c-4419-9d4d-bea552b4e0251.gif)
移动飞信android行为简单分析
手机飞信行为简单分析
谌侃20120827
一、实验环境
1.Android4.0.3
2.FetionforAndroidV4.0.0
3.Wireshark
二、基本理论:
1.飞信初始化先向服务器221.176.31.140的http服务器进行post,获取系统设置信息。
系统将返回各自服务的服务器地址及端口。
2.飞信的数据包都为TCP包,使用8000端口,所有数据在一条连接上。
3.因为是TCP包,因此会产生ACK包,即每次发送接收都为2个包,同时丢弃包的策略不在可行,或许可以尝试修改包的欺骗方式。
4.手机飞信的每个包出事两个字节,都是表示数据包字节数。
5.数据结构
以分隔符开始,分隔符结束,通常以00开始,00结束,分隔符包括
00,01,14,13,1a,19
前两个字节表示包长度。
分隔符1A后面跟随用户id如飞信id或手机号
分隔符0015表示发送0095表示响应+目的地
分隔符09后面跟随相应的参数如091FDigest***091A+用户id
分隔符0013表示包序号?
待定
其余待定
如
00000000005e0015060901133100091a3c313539.^......1...<159
0000001030313530353437323e3b69642d74797001505472>;id-typ
00000020653d6d6f62696c650015300026747970e=mobile..0.&typ
00000030653d22416e64726f6964222c76657273e="Android",vers
00000040696f6e3d22342e302e30220027323931ion="4.0.0".'291
0000005035333332373239353833001433005332729583..3.
包结构应该是
005e数据大小为94字节
00150615表示发送
0901
1331
00
091a3c31353930313530353437323e3b69….30手机号,idtype..
001530
0026747990….Type…
0027323931….随机数
001433
00结束符
三、具体行为分析:
(所有数字均为16进制,即71为0x71)
1.登陆
a)post/mnav/getnetSystemconfig.aspx获取到各个服务器信息主要221.176.31.144:
8000
b)接下来的所有消息都是在上面ip和端口下进行
c)登陆是通过HTTPDigestauthentication进行
登陆行为第一个包是移动端向服务器请求认证,(0015),提供用户的id(id跟在十六进制1a之后,手机号的格式,前后加<>,飞信号则直接使用号码),type(飞信所在系统版本,android或iphone),version(飞信版本号),随机数。
服务器接收请求后,会想移动端发出认证响应(0095),提供用户的id(id跟在十六进制1a之后,手机号的格式,前后加<>,飞信号则直接使用号码),Digestalgorithm,nonce以及时间。
移动端,继续向服务器进行请求(0015),可能包含用户id,但是一定包含认证相关信息,Digest,response。
同时提交用户相关的信息,如combinezlib,飞信版本号,手机信息,imsi,imei等信息。
并传递v4default等信息,请求获取用户列表等信息。
认证通过后,服务器进行相应(0095),包含SyncUserInfo。
之后,服务器向移动端发送相关用户信息(加密)。
服务器返回包
2.主动聊天(发出)
a)通过SIP协议
b)在移动客户端中限制字符个数最多400字(中英文字符均400)同时,发送一条消息不会跨包传输,一条消息,在一个TCP包内完成传输。
i.主动向服务器发出包(0015)标识发送消息(0606)目的地,数据类型text/plain发送者id,目的地sip:
****@;p=703(未分析)SaveHistory+发送内容如(helloworld)并以00结束
ii.服务器进行相应(0095),响应(android是0400c8iphone是0300c8)目的地(不一定有),发送者id,响应包(android是00143430iphone是001435)包序号(001339)结束符06
c)包如图
i.
d)群聊天,特征包相同,
i.发送包,只是目的地更改为sip:
群号码@
e)发送图片
i.00150606开始,uri类型text/html-fragment发送方id,目的id,SaveHistory,[….]
f)发送语音
i.0015050b开始,连续两次发送发送方id,字符串中带有amr
ii.之后的发送包无明显特征,但是响应包有如下特征:
1.以00950300c81a开始,加入发送方id并以000b结束
3.被动聊天(接收)
a)单人聊天
i.服务器发出标识包(01789c15)内容加密
ii.移动端发出响应(0095)android相应带上自己的id,iphone相应带上SaveHistory
iii.包如图
b)群聊天
i.服务器发出标识包(01789c13)内容加密
ii.移动端发出相应(0095)
iii.包如图
4.自己状态改变(隐身,忙碌)
i.一发一收
ii.移动端发出(0015)状态改变命令(android040b,iphone050b)自己的id,状态改变标记00c0c2c380+状态(343030在线,30隐身)以00e3e2e0结束
iii.
iv.服务器端发出响应(0095)(0400)用户id,相应状态改变(0037c1c2c380+状态)以00e3e2e1结束
v.如果是隐身,则还会响应,(0403)+用户id+00c2c380+PresenceChanged并以00e6e5e4e3e2结束
vi.包如图所示
5.用户下线
●一发一收
i.移动端发出(0015)下线指令(04090119)
ii.包的第2至第8字节是001504090114
6.心跳
●一发一收
i.包的第3至第8字节是:
001504090114