Как преобразовать битовый торрент info_hash (полученный из Wireshark) в хеш SHA1 - PullRequest
3 голосов
/ 27 октября 2010

Я использую Snort, который обнаруживает некоторую активность P2P, в частности запрос анонса BitTorrent. Я вижу запрос HTTP GET /announce.php?info_hash=XXX ... и пытаюсь преобразовать этот XXX в правильный хэш SHA1, чтобы попытаться понять, что загружается.

Я читал разные вещи, которые говорят, что это URL-код, и другие, которые говорят, что просто удалите символ% - однако я не могу воспроизвести это.

Кто-нибудь может подсказать, как это сделать?

Ответы [ 3 ]

4 голосов
/ 27 октября 2010

info_hash - это хеш SHA1.Это бинарный хеш, закодированный в URL для включения в URL.

Если вы хотите превратить его в хеш с шестнадцатеричным кодом, вам потребуется извлечь его из URL, декодировать URL и шестнадцатеричный код.закодировать.Например в Python:

>>> '%00%01%02%20%25ABC+XYZabc%7F%80%81%FE%FF'
'%00%01%02%20%25ABC+XYZabc%7F%80%81%FE%FF'
>>> urllib.unquote_plus(_)
'\x00\x01\x02 %ABC XYZabc\x7f\x80\x81\xfe\xff'
>>> _.encode('hex')
'00010220254142432058595a6162637f8081feff'
0 голосов
/ 04 июля 2016

Нет, вы можете,

infohash == sha1(torrentfile["info"])

Но вы можете использовать info_hash в качестве ключа для поиска в сети DHT

0 голосов
/ 21 февраля 2016

Хорошо, знаю, я знаю. info_hash - это хэш SHA1. И пример этого: %5d%97%dbA%d7a%2b%92%f5%c2%ef%dcv%bf%e7%e6%03%24%85%0a. Если вы используете $_GET['info_hash'], он не будет работать из-за % s. Вам нужно использовать $_SERVER['QUERY_STRING']. Пример кода, как получить хэш SHA1 info_hash в PHP:

$arye = $_SERVER['QUERY_STRING'];
$arye = explode('info_hash=', $arye)[1];
$arye = explode('&', $arye)[0];
$arye = explode('%', $arye);
$arp = '';
foreach($arye as $ara) {
    if (strlen($ara) == 2) {
        $arp .= $ara;
    }else{
        $e1 = substr($ara, 0, 2);
        $e2 = substr($ara, 2, 1);
        $e2 = unpack('H*', $e2)[1];
        $arp .= $e1;
        $arp .= $e2;
    }
}

echo $arp; // This will be your SHA1 hash

Хэш:% 5d% 97% dbA% d7a% 2b% 92% f5% c2% ef% dcv% bf% e7% e6% 03% 24% 85% 0a -> 5d97db41d7612b92f5c2efdc76bfe7e60324850a

...