Как разобрать раздел leecchers / seeders ответного сообщения UDP-трекера? - PullRequest
0 голосов
/ 22 января 2019

Я запутался в ответном сообщении трекера udp. Что означает "20 + 6 * n", "24 + 6 * n" или "20 + 6 * N"? Я пытаюсь думать о 20 + 6 * n, поскольку есть число (индекс от 16 до 20) = n сидеров и байтов с индексами от 20 до 20 + 6 * n, которые указывают конкретную информацию о сеялках, 6 байтов = 4 байта для ip и 2 байтов от порта, но это оказывается неправильно.

Offset      Size            Name            Value
0           32-bit integer  action          1 // announce
4           32-bit integer  transaction_id
8           32-bit integer  interval
12          32-bit integer  leechers
16          32-bit integer  seeders
20 + 6 * n  32-bit integer  IP address
24 + 6 * n  16-bit integer  TCP port
20 + 6 * N  

Вот пример ответов трекера udp, которые я получил: 0,0,0,1,28,120,62,218,0,0,12,0,0,7,182,0,0,0,1,0,0,0,0,77,73,68,7,156,0, 0,0,1,0,210,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,223,112,27,34,0,39,15,0,0,0,0,0,0 ... (всего 0)

1 Ответ

0 голосов
/ 25 января 2019

Если формат пакета был выражен как структура C, то последним членом структуры был бы гибкий элемент массива с элементами массива, представляющими пары IP: порт.

Другими словами, хвост пакета состоит из N * 6 байтов. 20 - это смещение байта в начале этого хвоста.

...