Что такое info_Hash в торрент файле

Я читаю в последнее время много о хеше с торрентов с магнитными ссылками и т.д.

но есть вопрос, который я не понимаю.

У меня есть хэш файла и infohash торрента, это infohash = хэш файла?

Если да, то если торрент описывает 6 файлов для загрузки?

Если нет, что это значит.

Ответ 1

Так что я наконец понял это.

'Infohash' - это хэш SHA1 над частью торрент файла, который включает в себя:

  1. ПУНКТ: длина (размер) и путь (путь с именем файла)
  2. Имя: имя для поиска
  3. Длина куска: длина (размер) одного куска
  4. Pieces: SHA1 Хэш КАЖДОГО кусочка этого торрента
  5. Личное: флаг для ограниченного доступа

Чтобы показать это немного подробнее, я взял случайный торрент файл и использовал "BEncode Editor" от Ultima, чтобы сделать его более понятным для меня.

BEncode Editor

Как видите, в красном поле отмечена информационная часть торрент файла. В торрент файле содержится не хэш элементов, а хеш каждого элемента.

  • Для item1 с: 1069496548
  • и item2 с: 223
  • Это вместе: 1069496771
  • С размером куска: 524288
  • Есть 2040 штук. (Приблизительно 1069496771/524288 = 2039,9032)
  • Раздел частей включает 40800 байт данных, что составляет 81600 + 2 символа в файле.
  • +2, потому что 0x означает, что это шестнадцатеричное число.
  • Хеш SHA1 имеет 40 0x символов или 20 байт данных, что такое 2040 хешей.

enter image description here

Я сожалею, что эта информация о торренте, который ведет к нелегальному фильму, но я хотел использовать действительно существующий торрент.

Ответ 2

Здесь показано, как получить соответствующий сегмент данных *.torrent для битрорентного "информационного хэша".

Я сделал это для примера.

0000000: 6438 3A61 6E6E 6F75 6E63 6530 3A31 303A  d8:announce0:10:
0000010: 6372 6561 7465 6420 6279 3133 3A6D 6B74  created by13:mkt
0000020: 6F72 7265 6E74 2031 2E30 3133 3A63 7265  orrent 1.013:cre
0000030: 6174 696F 6E20 6461 7465 6931 3537 3037  ation datei15707
0000040: 3530 3238 3565 343A 696E 666F 6436 3A6C  50285e4:infod6:l
0000050: 656E 6774 6869 3230 6534 3A6E 616D 6534  engthi20e4:name4
0000060: 3A70 7269 7631 323A 7069 6563 6520 6C65  :priv12:piece le
0000070: 6E67 7468 6932 3632 3134 3465 363A 7069  ngthi262144e6:pi
0000080: 6563 6573 3230 3AF1 D7EE 4236 3434 D06F  eces20:...B644.o
0000090: 27C4 BBAD 87F0 F089 7A22 2B37 3A70 7269  '.......z"+7:pri
00000a0: 7661 7465 6931 6565 65                   vatei1eee

Содержимое клавиши "информация" находится между (включительно) смещениями 0x4D и 0xA7. Так...

#!/crit/shell/bsh
bbe  \
    -e '
        d 0x0 0x4C ;
        d 0xA8 * ;
      '  \
    ${example}   \
 |
shasum  -a 1  -b

Вы должны увидеть это:

1799a58b9f8ff2b9b9bcecd0d438c5f37f19a31c *-

Вот вывод xxd вместо shasum для более подробного пояснения:

0000000: 6436 3A6C 656E 6774 6869 3230 6534 3A6E  d6:lengthi20e4:n
0000010: 616D 6534 3A70 7269 7631 323A 7069 6563  ame4:priv12:piec
0000020: 6520 6C65 6E67 7468 6932 3632 3134 3465  e lengthi262144e
0000030: 363A 7069 6563 6573 3230 3AF1 D7EE 4236  6:pieces20:...B6
0000040: 3434 D06F 27C4 BBAD 87F0 F089 7A22 2B37  44.o'.......z"+7
0000050: 3A70 7269 7661 7465 6931 6565            :privatei1ee

Вы можете обратиться к спецификации протокола BitTorrent для объяснения, хотя и краткого и довольно грамматически неполного, относительно их номенклатуры и причин, по которым необходимо исключить окончательный 0x65.
Вкратце: все данные заключены в пару US-ASCII ‘d и‘ e; содержимое ключа info или поля также заключено в аналогичную форму. Требуется все, что находится между первым 0x64 - ‘d, - который следует за строкой US-ASCII 4:info, и терминалом 0x65 -‘ e, - в паре с вышеупомянутым 0x64.