现在的位置: 首页 > 综合 > 正文

torrent 文件分析

2013年01月11日 ⁄ 综合 ⁄ 共 1925字 ⁄ 字号 评论关闭

BT协议中大部分信息传递是用的Bencoding过的数据, 同样, torrent 文件也不例外

Bencoding 支持四种格式

  • 字符串
  • 数字
  • 列表
  • 字典

对于字符串,首先是一个字符串的长度,然后是冒号,后面跟着实际的字符串,例如: 4:spam,就是" spam"

整数编码如下,以 'i' 开始,然后10进制的整数值,最后以'e'结尾。例如,i3e表示3,I-3e表示-3。整数没有大小限制。I-0e是无效的。除了 i0e外,所以以0起始的整数都无效。I0e当然表示0。

列表编码如下,以'l'开始,接下来是列表值的编码(也采用bencoded编码),最后以'e'结束。例如:l4:spam4:eggse 表示 ['spam', 'eggs']。

字典编码如下,以'd'开始,接下来是可选的keys和它对应的值,最户以'e'结束。例如:d3:cow3:moo4:spam4:eggse,表示{'cow':'moo','spam':'eggs'},而d4:spaml1:al:bee 表示 {'spam':['a','b']}。键值必须是字符串,而且已经排序(并非是按照字母顺序排序,而是根据原始的字符串进行排序)。

torrent 文件是一个字典结构,包括以下几个关键字

  • info 字典结构,里面描述了文件的一些信息, 包括两种情况,一是单个文件,再一个就是包括目录的多个文件
  • announce string 结构,tracker 的发布地址
  • announce-list 列表, 多个tracker 地址
  • creation date 数字(可选) 发布时间
  • comment string 注释
  • created by string, 发布者

Info 的结构

下面部分在单个文件与多个文件中都存在

  • piece length 整数,每块的大小
  • pieces 整数, 块数
  • private 整数,如果设置为1,客户端必要从 metafile 文件中的tracker 得到种子, 如果没有设置或,设置为零,则可从任何途径获得种子

描述单个文件

  • name 字符串,文件名
  • length 整数,文件大小
  • md5sum 可选,文件的md5值, 32个字符

描述多个文件

  • name 文件夹的名字
  • files 一个字典组成的列表, 每一项有以下关键字
    • lenght 整数, 文件大小
    • md5sum, 字符串, 可选
    • path 路径,文件夹和文件名的 bencode 编码的列表

下面是一个 torrent 文件常见的信息:

encoding GBK
creation date 1181982346
announce-list [['http://btfans.3322.org:6969/announce'], ['http://tracker.cnxp.com:8080/announce']]
created by BitComet/0.70
announce http://btfans.3322.org:6969/announce

nodes [['125.224.249.240', 27381], ['83.248.132.94', 17200], ['85.186.126.127',12781], ['205.246.154.159', 9801], ['89.38.47.85', 10642], ['202.103.25.35', 22941], ['84.121.43.81', 12988], ['84.36.5.107', 14395], ['193.230.202.197', 14571], ['216.55.147.120', 16612]]

info
files
----path ['The Scorpion King 2002.txt']
----length 2495
----path.utf-8 ['The Scorpion King 2002.txt']

publisher 影视帝国
piece length 262144
piece "...." 是每块的sha1值
name [2007.06.16]蝎子王[盗墓迷城前传](帝国出品)
publisher.utf-8 影视帝国
name.utf-8 [2007.06.16]蝎子王[盗墓迷城前传](帝国出品)publisher-url.utf-8 http://www.cnxp.com
publisher-url http://www.cnxp.com

下面是一个python解析 Bencoding 的完整代码

https://develop.participatoryculture.org/trac/democracy/browser/trunk/tv/portable/BitTorrent/bencode.py?rev=4

Technorati : ,
blog.csdn : , , , ,

抱歉!评论已关闭.