3.1.torrent文件的结构
图4是下载中使用的.torrent文件的一段主要内容,采用了B编码。B编码是一种简洁的数据组织方式,支持4种数据类型:bytestrings、integers、lists和dictionaries。integers、lists和dictionaries类型分别以字母i、l、d作为首定界符,以字母e作为尾定界符。bytestrings类型不使用首/尾定界符,其格式为<十进制表示的字符串长度>:<字符串>,如4:spam表示字符串“spam”。这4种数据类型嵌套使用构成了.torrent文件的内容。其中,用*号代替空格以便于分析。
图4.torrent文件的内容
其中的一些主要成份如下:
●announce:tracker服务器的URL,本例中为http://tracker.cnXP.com:8080/announce。
●announce-list:可选。备用tracker服务器的URL列表,本例中为http://tracker.cnxp.com:8080/announce,http://btfans.3322.org:6969/announce等。
●creationdate:可选。.torrent文件的创建日期,使用标准的UNIX时间,本例中为1152105243。
●comment:可选。.torrent文件制作者添加的任意格式的说明。
●createdby:可选。制作.torrent文件的工具,本例中使用的制作工具是BitComet/0.67。
●encoding:可选。发布的资源使用的编码方式,在本例中使用的是GBK。
●info:发布的文件的信息。有两种格式,单文件格式和多文件格式。单文件格式包括length、md5sum(可选)、name、piecelength、pieces;多文件格式包括files、name、piecelength、pieces,其中files包括length、path、md5sum(可选),每一个文件都有单独的length、path、md5sum(可选)。本例使用多文件格式,共有两个文件,分别是“LoveUndercover Ⅲ.txt”和“影视帝国(bbs.cnxp.com).新扎师妹
3.国语DVDSCR中字.rmvhe”,piece长度为262144byte.piece个数为34780。
.torrent文件中还包括其他一些可选项,只要它们遵循B编码方式就能够被客户机识别,这里不再累述。
3.2trackerHTTP/HTTPS协议
BT客户机依次向.torrent中的tracker服务器发送连接请求,以获得正在下载该文件的对等方列表(主要是IP地址和监听端口)。如果连接成功获得列表,就关闭连接,尝试与列表中的对等方建立连接;如果不成功,尝试下一个tracker服务器。
服务器tracker.cnxp.com的IP地址为61.129.77.239,btfans.3322.org的IP地址为61.129.78.114,BT客户机与BT服务器的交互过程如图5所示。
图5 BT客户机与BT服务器的交互过程
分析这些分组,易知分组702、748(分组702的重传)、750、752是建立TCP连接的三次握手。BT客户机通过753号分组向tracker服务器发出获取对等方列表的请求,754号、755号分组为应答。757-760号分组为关闭连接的交互过程。下面重点分析753号、754号和755号分组。
753号分组中的HTTP部分内容如图6所示,使用*号代替空格以便于分析。
图6 753号分组中的HTTP部分内容
其中一些成分的含义如下:
●info_hash:.torrent文件中的info部分的Shal校验码,共20byte。tracker服务器通过它在发布列表中找到对应的记录。
●peer_id:BT客户机的惟一性标志,在客户机启动时产生,共20bit。在BTV1.0中没有规定产生peer_id的算法,只要求能够保证惟一性即可。
●port:提供上传的端口号,亦即常说的监控端口,这里是6641(可自行设定)。
●key:可选。一个扩展的惟一性标志,即使改变了IP地址,也可以使用该字段标志该BT客户机。
●uploaded/downloaded:上传/下载的字节数(从客户机向tracker服务器发送“started”开始计算),服务器可以用它来做流量分析。
●left:还需要下载的字节数。
●compact:压缩标志。如果值为1表示接受压缩格式的对等方列表,即用6byte表示一个对等方(前4byte表示IP地址,后2byte表示端口号);值为0表示不接受。
●event:表明客户机的状态,只能是started、completed、stopped等3种中的一种。
除了上面这些例子中包含的参数外,可选的参数还有:
●ip:可选。IP地址,没有的话服务器会自己找到。
●numwant:可选。客户机希望从tracker服务器得到的对等方的数目。
●trackerid:可选。如果在之前的announce中包含了trackerid,将其值设置在该处。
.分页: [1] [2] [3]
TAG: bittorrent 协议分析 检测