создание однорангового запроса для торрента - PullRequest
0 голосов
/ 28 ноября 2018

Я создал торрент-трекер в python, который возвращает список всех адресов заполнения и портов, на которых они отправляются

Я хотел бы создать с ними рукопожатие, чтобы я мог начать получать фрагменты и создаватьблоки (загрузка файла)

до сих пор, мое рукопожатие было отклонено со следующей ошибкой, так как сообщение, которое я посылаю одноранговому узлу, является неправильным.

ConnectionRefusedError: [Errno 111] Connection refused

пока у меня естьследующий код для создания рукопожатия

 25 def genhand(t : torrent):
 26   temp = b'\x13'
 27   temp += b'BitTorrent protocol'
 28   temp += b'\x00'*8
 29   temp += torrent.info_hash
 30   temp += t.peer_id.encode('utf8')
 31   return temp

в виде шестнадцатеричного дампа это:

00000000: 13 42 69 74 54 6F 72 72  65 6E 74 20 70 72 6F 74  .BitTorrent prot
00000010: 6F 63 6F 6C 00 00 00 00  00 00 00 00 55 8C F1 4F  ocol........U..O
00000020: 80 A2 D0 BC A6 FB 90 8C  62 90 76 55 F1 84 A6 59  ........b.vU...Y
00000030: 2D 50 59 30 30 30 31 2D  38 38 39 34 31 38 30 32  -PY0001-88941802
00000040: 33 31 38 30                                       3180

формат для создания рукопожатия может быть найден здесь в разделе 6.2.насколько я вижу, мой формат для рукопожатия правильный.что я делаю не так?

спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

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

пример:

sent
00000000: 13 42 69 74 54 6F 72 72  65 6E 74 20 70 72 6F 74  .BitTorrent prot
00000010: 6F 63 6F 6C 00 00 00 00  00 00 00 00 55 8C F1 4F  ocol........U..O
00000020: 80 A2 D0 BC A6 FB 90 8C  62 90 76 55 F1 84 A6 59  ........b.vU...Y
00000030: 2D 50 59 30 30 30 31 2D  30 35 30 36 30 34 34 34  -PY0001-05060444
00000040: 30 38 32 38                                       0828


back
00000000: 13 42 69 74 54 6F 72 72  65 6E 74 20 70 72 6F 74  .BitTorrent prot
00000010: 6F 63 6F 6C 00 00 00 00  00 18 00 05 55 8C F1 4F  ocol........U..O
00000020: 80 A2 D0 BC A6 FB 90 8C  62 90 76 55 F1 84 A6 59  ........b.vU...Y
00000030: 2D 46 57 36 37 33 46 2D  56 78 57 35 56 76 5F 30  -FW673F-VxW5Vv_0
00000040: 28 54 49 7E                                       (TI~

я все еще работаю над получением битового поляполезная нагрузка, такая как в этой статье , так что я действительно могу найти, какие части у них есть

...