BT種子檔案 bencoding編碼詳細解析

2021-04-27 18:39:35 字數 1757 閱讀 3563

bt種子檔案使用了一種叫bencoding的編碼方法來儲存資料。

bencoding現有四種型別的資料:srings(字串),integers(整數),lists(列表),dictionaries(字典)

編碼規則如下:

strings(字串)編碼為:《字串長度》:《字串》

例如: 4:test 表示為字串」test」

4:例子 表示為字串「例子」

字串長度單位為位元組

沒開始或結束標記

integers(整數)編碼為:i《整數》e

開始標記i,結束標記為e

例如: i1234e 表示為整數1234

i-1234e 表示為整數-1234

整數沒有大小限制

i0e 表示為整數0

i-0e 為非法

以0開頭的為非法如: i01234e 為非法

lists(列表)編碼為:ldictionaries(字典)編碼為d具體檔案結構如下:

全部內容必須都為bencoding編碼型別。

整個檔案為乙個字典結構,包含如下關鍵字

announce:tracker伺服器的url(字串)

announce-list(可選):備用tracker伺服器列表(列表)

creation date(可選):種子建立的時間,unix標準時間格式,從1970 1月1日 00:00:00到建立時間的秒數(整數)

comment(可選):備註(字串)

created by(可選):建立人或建立程式的資訊(字串)

info:乙個字典結構,包含檔案的主要資訊,為分二種情況:單檔案結構或多檔案結構

單檔案結構如下:

length:檔案長度,單位位元組(整數)

md5sum(可選):長32個字元的檔案的md5校驗和,bt不使用這個值,只是為了相容一些程式所保留!(字串)

name:檔名(字串)

piece length:每個塊的大小,單位位元組(整數)

pieces:每個塊的20個位元組的sha1 hash的值(二進位制格式)

多檔案結構如下:

files:乙個字典結構

length:檔案長度,單位位元組(整數)

md5sum(可選):同單檔案結構中相同

path:檔案的路徑和名字,是乙個列表結構,如/test/test.txt 列表為l4:test8test.txte

name:最上層的目錄名字(字串)

piece length:同單檔案結構中相同

pieces:同單檔案結構中相同

例項:用記事本開啟乙個.torrent可以看來類似如下內容

d8:announce35:http://www.manfen.net:7802/announce13:creation datei1076675108e4:infod6:lengthi17799e4:name62:microsoft.windows.2000.and.nt4.source.code-sceneleader.torrent12:piece lengthi32768e6:pieces20:?w ?躐?緕排t酆ee

很容易看出

creation date=1076675108秒(02/13/04 20:25:08)

檔名=microsoft.windows.2000.and.nt4.source.code-sceneleader.torrent

檔案大小=17799位元組

檔案塊大小=32768位元組

BT種子檔案 bencoding編碼

bt種子檔案使用了一種叫bencoding的編碼方法來儲存資料。bencoding有四種型別的資料 srings 字串 integers 整數 lists 列表 dictionaries 字典 編碼規則如下 1 strings 字串 編碼為 字串長度 字串 例如 4 test 表示為字串 test ...

BT種子檔案 bencoding編碼詳細解析

bt種子檔案 bencoding編碼詳細解析 bt種子檔案使用了一種叫bencoding的編碼方法來儲存資料。bencoding現有四種型別的資料 srings 字串 integers 整數 lists 列表 dictionaries 字典 編碼規則如下 strings 字串 編碼為 字串長度 字串...

BT種子檔案 bencoding編碼詳細解析

bt種子檔案使用了一種叫bencoding的編碼方法來儲存資料。bencoding現有四種型別的資料 srings 字串 integers 整數 lists 列表 dictionaries 字典 編碼規則如下 strings 字串 編碼為 字串長度 字串 例如 4 test 表示為字串 test 4...