.torrent файлы кодируются, что представляет собой простую кодировку, описанную в BEP3.
Вот упрощенный пример торрент:
{
'announce': 'http://bt1.archive.org:6969/announce',
'created by': 'ia_make_torrent',
'creation date': 1373568576,
'info': {
'files': [
{ 'length': 12355245, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.txt' ], },
{ 'length': 33979699024, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.zip' ], },
{ 'length': 2821, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10_meta.xml' ], },
{ 'length': 378737, 'path': [ 'amiga_1000_by_macpengin.jpg' ], },
{ 'length': 4877, 'path': [ 'amiga_1000_by_macpengin_thumb.jpg' ], },
],
'name': 'Commodore_Amiga_TOSEC_2012_04_10',
'piece length': 4194304,
'pieces': '9834f2b6e0b8d9071f2d2db...776f9c910b6622f234872e8'
},
'locale': 'en',
'title': 'Commodore_Amiga_TOSEC_2012_04_10',
}
Поле частей было сокращено. Он содержит все шай-1 хэшей частей, конкатенированных (он находится в двоичной форме, но представлен как здесь для возможности печати). Кусок не является прямым пакетом.
Обычно пакет будет ссылаться на IP-пакет (около 1400 байт). В дополнение к IP-адресу в качестве транспортного протокола используется TCP или uTP. Кроме того, у вас есть протокол BitTorrent, который только обменивается блоками (иногда называемыми кусками). Блок равен 16 kiB. Кусок, как правило, даже кратный 16, и даже более вероятно, равная мощность 2. Итак, сначала загружайте несколько блоков, объедините их, чтобы сформировать кусок, а затем проверьте хэш SHA-1 этой части.
Файлы Torrent не содержат _infohash_ (хэш верхнего уровня) явно. Infohash вычисляются клиентским программным обеспечением путем хеширования так называемой _infodict_ части торрент-файла. Но, да, _infodict_ включает в себя _hash list_ (поле _pieces_ информационного словаря), которое обозначает хэш-файл sha1 каждого _piece_ (а не пакета): «фигуры отображаются в строку, длина которой кратная 20. Она должна быть разделена на строки длиной 20, каждый из которых представляет собой SHA1-хэш части с соответствующим индексом ». Источник: [bep3] (http://www.bittorrent.org/beps/bep_0003.html#info-dictionary) –