Как получить информационный хэш и метаданные торрента с узлов DHT, не зная информационного хеша?

Согласно докладу DefCon Сканирование BitTorrent DHT для развлечения, узлы BitTorrent DHT можно сканировать до создать торрент-сайт за одну ночь с нуля, даже если все остальные торрент-сайты вместе с их резервной копией закрыты злоумышленником.

В kademlia одноранговый узел получает информационный хеш с торрент-сайтов, индексируя магнитные ссылки для каждого торрента. Пир отправляет get_peers запрос на получение списка пиров, которые в данный момент загружают и раздают торрент. Узел dht, идентификатор узла которого находится ближе всего к информационному хешу, возвращает метаданные запрашивающему узлу.

В любом случае мне нужен infohash для запроса пиров. Итак, как можно создать торрент-сайт за одну ночь, если у вас нет информационного хеша? Единственный возможный способ, я думаю, это исчерпывающий поиск ключа. Нужно случайным образом сгенерировать 160-bit infohash и начать запрашивать пиры, но это займет очень много времени.

Существуют ли какие-либо удаленные вызовы процедур в kademlia, такие как get_infohash или get_metadata, которые позволяют узлу dht запрашивать у соседних узлов информационный хеш, потому что это единственный способ узнать информационный хэш непосредственно от узлов dht.


person defalt    schedule 25.12.2017    source источник


Ответы (1)


Это называется Индексирование DHT Infohash. Это предложение по улучшению BitTorrent или BEP находится на рассмотрении для стандартизации. Это расширение позволяет узлам DHT извлекать образец информационных хэшей, которые в настоящее время хранятся в хранилище других узлов.

От автора, BEP 51

Индексирование DHT уже возможно и выполняется на практике путем пассивного наблюдения за запросами get_peers. Но такой подход неэффективен, так как в нем предпочтение отдается индексаторам с большим количеством уникальных IP-адресов. Это также стимулирует плохое поведение, такое как подмена идентификаторов узлов и попытки загрязнить таблицы маршрутизации других узлов.

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

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

Message Format

Request:

{
    "a":
    {
        "id": <20 byte id of sending node (string)>,
        "target": <20 byte ID for nodes>,
    },
    "t": <transaction-id (string)>,
    "y": "q",
    "q": "sample_infohashes"
}

Response:

{
    "r":
    {
        "id": <20 byte id of sending node (string)>,
        "interval": <the subset refresh interval in seconds (integer)>,
        "nodes": <nodes close to 'target'>,
        "num": <number of infohashes in storage (integer)>,
        "samples": <subset of stored infohashes, N × 20 bytes (string)>
    },
    "t": <transaction-id (string)>,
    "y": "r"
}

Как обычно, дополнительные поля могут быть определены другими BEP.

person defalt    schedule 25.12.2017
comment
К вашему сведению, существует очень мало реализаций, реализующих BEP51. github.com/0xcaff/dht-crawler/issues/8 - person 0xcaff; 03.10.2018
comment
@0xcaff Я надеюсь, что ваша реализация будет принята другими торрент-клиентами. 8472 является первоначальным автором BEP51. Я пробовал ваш и его реализация BEP51 для сбора информационных хэшей для децентрализованной поисковой системы и поискового робота, но проблема в том, что почти все dht_nodes игнорируют запрос krpc BEP51, потому что ни один торрент-клиент не реализует это. В последние годы протокол BitTorrent не развивался. - person defalt; 05.11.2018