Как вы расшифровываете информацию info_hash из запроса объявления трекера? - PullRequest
3 голосов
/ 12 апреля 2011

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

"info_hash=%92%c345%c0%28%15%e4rr%b1y%17%b7%cbs%0a%ef%9a%fc&peer_id=-UT2210-%2abP%b2%c23~NaN7-%7c%0f%1f&port=56541&uploaded=0&downloaded=0&left=461680&corrupt=0&key=6AD19369&event=started&numwant=200&compact=1&no_peer_id=1"

, и я хотел бы декодировать поля info_hash и peer_id в JavaScript.Я пробовал функции unescape(), decodeURI() и decodeURIComponent(), но они не дали ожидаемых результатов.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Информационный хеш, присутствующий в HTTP-запросе GET к трекеру, может быть декодирован следующим образом:

Если есть символ '%', то следующие 2 символа являются частью оригинального 40-символьного SHA-1 хеш.

так что вы можете разбить закодированный info_hash следующим образом:

% 92% c3 4 5% c0% 28% 15% e4 rr% b1 y% 17% b7% cbs% 0a% ef% 9a% fc

Все 2 группы символов с префиксом «%» принадлежат исходному хешу.

Теперь для остальных символов.Нам нужно найти соответствующее значение Hex из них.Вы можете использовать asciitable для справки.

Например, 4 в базе 10 - это 34 в шестнадцатеричном формате.

Объединяя все вместе таким образом, мы получаем:

92c33435c02815e47272b17917b7cb730aef9afc -> SHA-1 хеш торрент-файла.

peer_id даст нам информацию об имени и версии клиента.В этом случае:

-UT2210-% 2abP% b2% c23 ~ NaN7-% 7c% 0f% 1f

Это в формате Azureus.

UT соответствует µTorrentи 2210 дает нам версию.

Процесс декодирования может быть легко автоматизирован с помощью Perl Script.

0 голосов
/ 12 апреля 2011

метод, который вы используете для «декодирования», зависит от того, как он был «закодирован».

При выборе метода кодирования:

escape () не будет кодировать: @*/+

encodeURI () не будет кодировать: ~!@#$&*()=:/,;?+'

encodeURIComponent () не будет кодировать: ~!*()'

Возможно, вы смотрите на некоторую форму двойного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...