解码种子哈希的种子跟踪刮


Decode Torrent Hash of Torrent tracker scrape?

我正在使用BEncoded PHP库来解码来自Bittorrent跟踪器的BEncoded响应。

Tracker的响应为:

d5:filesd20:¼€™rÄ2ÞÊþVA  .]á^¦d8:completei285e10:downloadedi22911e10:incompletei9eeee

解码后使用下面的代码:

require 'bencoded.php';
$be = new BEncoded;
//Response saved in scrape.txt
$data =file_get_contents('scrape.txt');
print_r($be->Decode($data));

输出为:

Array ( [files] => Array ( [¼€™rÄ2ÞÊþVA  .]á^¦] => Array ( [complete] => 285 [downloaded] => 22911 [incomplete] => 9 [isDct] => 1 ) [isDct] => 1 ) [isDct] => 1 )

我的问题在上面的输出中,我的问题是如何解码输出中的这些神秘字母。

user3690414发布的链接:http://wiki.vuze.com/w/Scrape很好地解释了不同的键代表什么。

解释原始编码字符串:

d5:filesd20:¼€™rÄ2ÞÊþVA  .]á^¦d8:completei285e10:downloadedi22911e10:incompletei9eeee

你需要了解编码是如何工作的:https://wiki.theory.org/BitTorrentSpecification#Bencoding

这里需要知道的最重要的一点是,编码字典中的每个条目都是Key,Value对。
其中Key字节字符串
Value下列类型之一:字节字符串整型列表字典

考虑到这一点,原始字符串可以这样分解:

d               // The first d indicates the start of the Root dictionary
 5:files            // that has a Key with a 5 byte string name 'files',
  d                     // the value of the 'files'-key is a second dictionary
   20:¼€™rÄ2ÞÊþVA  .]á^¦    // that has a Key 20 byte = 160 bit big endian SHA1 info-hash
    d                       // the value of that key is a third dictionary
     8:complete                 // that has a Key with a 8 byte string name 'complete',
      i285e                         // the value of that key is a Integer=285
     10:downloaded              // that has a Key with a 10 byte string name 'downloaded',
      i22911e                       // the value of that key is a Integer=22911
     10:incomplete              // that has a Key with a 10 byte string name 'incomplete',
      i9e                           // the value of that key is a Integer=9
    e                       // this e indicates the end of the third dictionary
  e                     // this e indicates the end of the second dictionary
e               // this e indicates the end of the Root dictionary

希望这有助于理解'bencode .php'的输出。


编辑。如果你想让160位的大端SHA1信息哈希[¼€™rÄ2ÞÊþVA .] ^…]
我建议您将其输出为40字节十六进制编码的字符串:
0xBC801B9D9972C432DECAFE56410F092E5DE15EA6

如果你指的是files数组的打乱键,那么它是原始的infohash -查看规范:

  • https://wiki.theory.org/BitTorrentSpecification Tracker_.27scrape.27_Convention
  • http://wiki.vuze.com/w/Scrape