Итак, следующий запрос:
torrent.ubuntu.com:6969/announce?info_hash=%02%21%CA%F9j%A3%CB%94%F0%F5%8DE%8Ex%B0%FC4J%D8%BF&peer_id=ABCDEFGHIJKLMNOPQRST&port=6881&uploaded=0&downloaded=0&left=3353370624&compact=0
приводит к тому, что файл Announce обслуживается. После того, как этот файл будет декодирован, вы получите:
{'peers': '\xb9\x15\xd9\x08\xd8\x05[\xbd_\x15\x1b!', 'interval': 1800, 'complete': 5, 'incomplete': 1}
Я в значительной степени застрял в
'\xb9\x15\xd9\x08\xd8\x05[\xbd_\x15\x1b!'
с compact=1 вы получаете:
'\xbd_\x15\x1b\n\xb9\x15\xd9\x08\xd8\x05'
Если это сетевой порядок (с прямым порядком байтов)?
Из здесь я прочитал:
Обратите внимание, если вы получаете одноранговые узлы в двоичной модели, последние два байта вместе кодируют номер порта (т. е. ‘\x1a\xe1’ = 26 * 256 + 225 = 6881).
Так что, возможно, '\xd8\x05' составляет порт: 216 * 256 + 5 = 55301, а может и нет.
Может кто-нибудь объяснить мне, как разобрать эти шестнадцатеричные числа в адреса ip:port?
Некоторое время гуглил это, не нашел много, поэтому любая помощь будет оценена по достоинству.