续上篇(http://blog.csdn.net/cancanfairy/article/details/53100888),本篇分析搜狐影音的Tracker交互协议,即如何从Tracker处获取对应的对等节点。
分析客户端:搜狐影音 5.0
1. 获取Tracker的地址
搜狐影音首先向p2p.vod.tv.sohu.com发送查询请求,服务器返回Tracker的地址信息。报文如下:
请求报文:
00000000 08 00 2a 3c f8 5e 05 01 ..*<.^..
响应报文:
00000000 5c 00 2a 3c f8 5e 05 01 7b 22 69 73 70 22 3a 31 \.*<.^.. {"isp":1
00000010 2c 22 70 72 6f 76 22 3a 34 30 2c 22 72 74 6d 66 ,"prov": 40,"rtmf
00000020 70 22 3a 22 72 74 6d 66 70 3a 2f 2f 32 32 30 2e p":"rtmf p://220.
00000030 31 38 31 2e 32 2e 33 38 3a 38 30 22 2c 22 74 72 181.2.38 :80","tr
00000040 61 63 6b 65 72 22 3a 22 32 32 30 2e 31 38 31 2e acker":" 220.181.
00000050 39 30 2e 32 30 33 3a 38 30 22 7d 0a 90.203:8 0"}.
从响应报文可以看到,Tracker包含两种,一种是rtmfp的,一种是直接写Tracker信息的。rtmfp是Adobe Flash的,应该是用于搜狐视频网页版Flash插件做P2P用的,这种协议加密,无法分析;第二种,应该就是搜狐自己的Tracker,用于Windows客户端的。
2. 向Tracker发送查询请求
继续抓包,看看搜狐影音客户端与Tracker的交互。
请求报文:
0000 36 00 2a 3c f8 5e 07 80 21 00 00 00 44 ad cf c7
0010 96 e5 b4 07 80 82 46 b1 d4 7c 54 8d 37 1a 47 d4
0020 73 ab 8a 05 e9 ac c0 a8 c7 f2 e9 ac 01 00 dc b5
0030 5a c8 5c 97 8b 9c
上面报文就是向Tracker发送的查询,0x36 00 为报文长度,0x44 ad cf c7 ... 37 1a 47 d4为请求内容的唯一标识,应该和文件内容相关,后面则是客户端地址信息。
响应报文:
0000 30 00 2a 3c f8 5e 07 80 21 00 00 00 44 ad cf c7
0010 96 e5 b4 07 80 82 46 b1 d4 7c 54 8d 37 1a 47 d4
0020 db 8e 99 50 f5 76 c0 a8 00 66 f5 76 7a 8e 77 1c
响应报文中,0x44 ad cf c7 ... 37 1a 47 d4和查询报文匹配,说明确实是文件的唯一标识。紧跟着 0xdb 8e 99 50为Peer节点的IP地址,即219.142.153.80,端口为0xf5 76,即62838;后面的地址应该是该Peer的私网地址和端口。后面还有4个字节,应该是校验,或者某些含义的特征串。
欢迎讨论, email: cancanfairy AT sina.com