你的位置:
首页
>
IT圈
>
Torrent 文件格式详解
2024年4月21日发(作者:堂坤)
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================
Torrent文件格式分析
首先,我在网上找一个最近比较流行的大片《环太平洋》的torrent文件。通过用UE
把它打开,我们来看一下此torrent文件的内容:
d8:announce39::8077/announce13:announce-listll39:
:8077/announceel30:/announceee8:codepagei936e13:creation datei13
81766089e4:infod5:filesld6:lengthi202e4:pathl40:本片简介,海报,截图等,双击进入查看.urle10:
-8l58:鏈墖绠€浠嬶紝娴锋姤锛屾埅鍥剧瓑锛屽弻鍑昏繘鍏ユ煡鐪?urleed6:lengthi275e4:pa
thl37:飞鸟网-和浪子一起来开心农场偷菜吧.urle10:-8l53:椋為笩缃?鍜屾氮瀛愪竴璧锋潵寮€
蹇冨啘鍦哄伔鑿滃惂.urleed6:lengthi266e4:pathl45:飞鸟娱乐-边看电影边学英语,娱乐学习两不误.ur
le10:-8l65:椋為笩濞变箰-杈圭湅鐢靛奖杈瑰鑻辫锛屽ū涔愬涔犱袱涓嶈.urleed6:leng
thi2640e4:pathl37:飞鸟娱乐论坛-超多最新爆爽资源下载.rtfe10:-8l53:椋為笩濞变箰璁哄潧-
瓒呭鏈€鏂扮垎鐖借祫婧愪笅杞?rtfeed6:lengthi288e4:pathl45:飞鸟娱乐原创IMDB TOP250 经典大片
一网打尽.urle10:-8l59:椋為笩濞变箰鍘熷垱IMDB TOP250 缁忓吀澶х墖 涓€缃戞墦灏?urlee
d6:lengthi2195501970e4:pathl55:环太平洋 4e10:pa
-8l59:鐜お骞虫磱 4eed6:lengthi266e4:pat
嫳瀛楀箷鐢靛奖hl35:老调网-下载中英字幕电影的好地方.urle10:-8l50:鑰佽皟缃?涓嬭浇涓
55:鐜
鐨勫ソ鍦版柟.urleee4:name51:环太平洋 -LZHD10:-8
お骞虫磱 -LZHD12:piece lengthi2097152e6:pieces20
940:(此处省略20940个字节的hash值,每个piece的hash值占用20个字节,即20940/20=1047个piece。)
9:
publisher8:飞鸟娱乐13:publisher-url21:19:-821:b
15:-812:椋為笩濞变箰e5:nodesll21:6881eel20:r
53eeee
下面我们开始详细讲解一下torrent文件格式:
B编码
为了在torrent文件中存储bt下载所需信息,需要一定规范记录这些信息,
在这里torrent文件使用的是BEncode格式规范,和JSON一样,本质都是用来
交换和存储信息。BEncode有四种存储类型:(字符串型、数值型、列表型、字
典型)
1、 字符串[string]
字符串表示方式为:数字前缀:字符串,例如super表示为:5:super
数字前缀以十进制数字指出字符串的长度。例如:
0:””
4:大庆
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================================
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================
6:daqing
15:
2、 数值[integers]
数值的表示方式为:以小写字母”i”开始,以小写字母”e”结尾,ie
中间放置十进制数值。例如:
i0e
i-3e
i7e
表示数字0(零)
表示数字-3
表示数字7
3、 列表[list]
列表类型允许嵌套,列表中的可以存储列表,列表的表示方式:以小写字母”l”开始,
以小写字母”e”结尾,le中间放置存储的内容。例如:
l7:figo’s4:blog3:url23:
该list的内容为[‘super’s’ , ’blog’ , ’url’ , ’’]
l4:yeari2013ee
该list的内容为[‘year’,2013]
4、 字典[dictionary]
字典是为了让一个具体的名字[name]与一个具体的数据类型表示的数据关联,上面三
种类型(字符串、整数、列表)的数据只是单纯的表示数据本身,并未有变量名来指出该
数据名称。字典类似C语言变量的定义,例如定义一个名为strName的字符串如下:
Char *strName=NULL;
当strName指向字符串”Figo”时,那么当我们说strName时也即在说”Figo”。
BEncode中字典类型的存在,就是为了让数据与名称关联配对,也即dictionary后的数
据要两两配对。这里需要注意的是,名称必须为string类型。
Dictionary可允许嵌套使用,表示方式:以小写字母’d’开始,以小写字母’e’结尾,de
中间放置要存储的内容。如下:
d4:Name:4:Figo5:Hobbyl8:football5:sleep8:thinkingee
该dictionary内容为{
‘name’ = ‘Figo’,
’Hobby’ = [‘football’,’sleep’,’thinking’] }
d8:Name-dicd5:First4:Figo6:Second3:Tomee
该dictionary内容为{
‘Name-dic’= {
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================================
2024年4月21日发(作者:堂坤)
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================
Torrent文件格式分析
首先,我在网上找一个最近比较流行的大片《环太平洋》的torrent文件。通过用UE
把它打开,我们来看一下此torrent文件的内容:
d8:announce39::8077/announce13:announce-listll39:
:8077/announceel30:/announceee8:codepagei936e13:creation datei13
81766089e4:infod5:filesld6:lengthi202e4:pathl40:本片简介,海报,截图等,双击进入查看.urle10:
-8l58:鏈墖绠€浠嬶紝娴锋姤锛屾埅鍥剧瓑锛屽弻鍑昏繘鍏ユ煡鐪?urleed6:lengthi275e4:pa
thl37:飞鸟网-和浪子一起来开心农场偷菜吧.urle10:-8l53:椋為笩缃?鍜屾氮瀛愪竴璧锋潵寮€
蹇冨啘鍦哄伔鑿滃惂.urleed6:lengthi266e4:pathl45:飞鸟娱乐-边看电影边学英语,娱乐学习两不误.ur
le10:-8l65:椋為笩濞变箰-杈圭湅鐢靛奖杈瑰鑻辫锛屽ū涔愬涔犱袱涓嶈.urleed6:leng
thi2640e4:pathl37:飞鸟娱乐论坛-超多最新爆爽资源下载.rtfe10:-8l53:椋為笩濞变箰璁哄潧-
瓒呭鏈€鏂扮垎鐖借祫婧愪笅杞?rtfeed6:lengthi288e4:pathl45:飞鸟娱乐原创IMDB TOP250 经典大片
一网打尽.urle10:-8l59:椋為笩濞变箰鍘熷垱IMDB TOP250 缁忓吀澶х墖 涓€缃戞墦灏?urlee
d6:lengthi2195501970e4:pathl55:环太平洋 4e10:pa
-8l59:鐜お骞虫磱 4eed6:lengthi266e4:pat
嫳瀛楀箷鐢靛奖hl35:老调网-下载中英字幕电影的好地方.urle10:-8l50:鑰佽皟缃?涓嬭浇涓
55:鐜
鐨勫ソ鍦版柟.urleee4:name51:环太平洋 -LZHD10:-8
お骞虫磱 -LZHD12:piece lengthi2097152e6:pieces20
940:(此处省略20940个字节的hash值,每个piece的hash值占用20个字节,即20940/20=1047个piece。)
9:
publisher8:飞鸟娱乐13:publisher-url21:19:-821:b
15:-812:椋為笩濞变箰e5:nodesll21:6881eel20:r
53eeee
下面我们开始详细讲解一下torrent文件格式:
B编码
为了在torrent文件中存储bt下载所需信息,需要一定规范记录这些信息,
在这里torrent文件使用的是BEncode格式规范,和JSON一样,本质都是用来
交换和存储信息。BEncode有四种存储类型:(字符串型、数值型、列表型、字
典型)
1、 字符串[string]
字符串表示方式为:数字前缀:字符串,例如super表示为:5:super
数字前缀以十进制数字指出字符串的长度。例如:
0:””
4:大庆
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================================
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================
6:daqing
15:
2、 数值[integers]
数值的表示方式为:以小写字母”i”开始,以小写字母”e”结尾,ie
中间放置十进制数值。例如:
i0e
i-3e
i7e
表示数字0(零)
表示数字-3
表示数字7
3、 列表[list]
列表类型允许嵌套,列表中的可以存储列表,列表的表示方式:以小写字母”l”开始,
以小写字母”e”结尾,le中间放置存储的内容。例如:
l7:figo’s4:blog3:url23:
该list的内容为[‘super’s’ , ’blog’ , ’url’ , ’’]
l4:yeari2013ee
该list的内容为[‘year’,2013]
4、 字典[dictionary]
字典是为了让一个具体的名字[name]与一个具体的数据类型表示的数据关联,上面三
种类型(字符串、整数、列表)的数据只是单纯的表示数据本身,并未有变量名来指出该
数据名称。字典类似C语言变量的定义,例如定义一个名为strName的字符串如下:
Char *strName=NULL;
当strName指向字符串”Figo”时,那么当我们说strName时也即在说”Figo”。
BEncode中字典类型的存在,就是为了让数据与名称关联配对,也即dictionary后的数
据要两两配对。这里需要注意的是,名称必须为string类型。
Dictionary可允许嵌套使用,表示方式:以小写字母’d’开始,以小写字母’e’结尾,de
中间放置要存储的内容。如下:
d4:Name:4:Figo5:Hobbyl8:football5:sleep8:thinkingee
该dictionary内容为{
‘name’ = ‘Figo’,
’Hobby’ = [‘football’,’sleep’,’thinking’] }
d8:Name-dicd5:First4:Figo6:Second3:Tomee
该dictionary内容为{
‘Name-dic’= {
--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改---------------------------
==========================================================================