学习笔记——torrent文件解析

bencoding编码

B编码有4种类型,分别为:

字符串:<字符串长度>:<字符串>,如announce,编码后为8:announce;

整型:i<十进制整型数>e,如9,编码后为i9e;

列表:l<任何合法类型>e;

字典:d<关键字><值>e,其中,关键字是一个经过B编码的字符串,值可以是任何合法的B编码类型。

torrent文件结构

announce:Tracker的主服务器

announce-list:Tracker服务器列表

comment:种子文件的注释

comment.utf-8:种子文件注释的utf-8编码

creation date:种子文件建立的时间,是从1970年1月1日00:00:00到现在的秒数。

encoding:种子文件的默认编码,比如GB2312,Big5,utf-8等

info:所有关于下载的文件的信息都在这个字段里,它包括多个子字段,而且根据下载的是单个文件还是多个文件,子字段的项目会不同,具体介绍在后面。

nodes:最后的一个字段是nodes字段,这个字段包含一系列ip和相应端口的列表,是用于连接DHT初始node。

多文件torrent结构树形图:

Multi-file Torrent
├─announce
├─announce-list
├─comment
├─comment.utf-8
├─creation date
├─encoding
├─info
│ ├─files
│ │ ├─length
│ │ ├─path
│ │ └─path.utf-8
│ ├─name
│ ├─name.utf-8
│ ├─piece length
│ ├─pieces
│ ├─publisher
│ ├─publisher-url
│ ├─publisher-url.utf-8
│ └─publisher.utf-8
└─nodes

单文件结构树形图:

Single-File Torrent
├─announce
├─announce-list
├─comment
├─comment.utf-8
├─creation date
├─encoding
├─info
│ ├─length
│ ├─name
│ ├─name.utf-8
│ ├─piece length
│ ├─pieces
│ ├─publisher
│ ├─publisher-url
│ ├─publisher-url.utf-8
│ └─publisher.utf-8
└─nodes

区别在于multi-file的info字段内包括files字段,其中:

lenghth:文件的大小,用byte计算;

path:文件的名字,在下载时不可更改;

path.utf-8:文件名的UTF-8编码。

info中其他字段含义如下:

name:推荐的文件夹名,此项可于下载时更改;

name.utf-8:推荐的文件夹名的utf-8编码;

piece length:每个文件块的大小,用Byte计算;

publisher:文件发布者的名字;

publisher.utf-8:文件发布者的名字的utf-8编码;

publisher-url:文件发布者的网址;

publisher-url.utf-8:文件发布者网址的utf-8编码。

注:

info_hash的计算从info字段开始(不包括info)到nodes字段前(包括nodes);

编辑器打开torrent文件,pieces字段的SHA1杂凑值乱码(暂有疑问);

参考:

Torrent文件结构解析

BEncode编码方式以及torrent文件的一些内容

Torrent 文件图文解析

torrent文件编码

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值