torrent 文件分析

    技术2022-05-11  40

    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 GBKcreation date 1181982346announce-list [['http://btfans.3322.org:6969/announce'], ['http://tracker.cnxp.com:8080/announce']]created by BitComet/0.70announce 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]]

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

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

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

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

    Technorati : bittorrent, python blog.csdn : bittorrent, bt, python, torrent, 协议


    最新回复(0)