Свободу DHT ;) Или патчим uTorrent под свои нужды ... |
Здравствуйте, гость ( Вход | Регистрация )
Свободу DHT ;) Или патчим uTorrent под свои нужды ... |
29.3.2012, 23:55
Сообщение
#1
|
|||||
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
uTorrent. DHT-патч Сегодня я расскажу вам о том как сделать DHT патч для uTorrent любой версии своими руками. Сначала о том что это такое и для чего это нужно. © http://ru.wikibooks.org/wiki/Bittorrent/DHT DHT (англ. Distributed hash table распределенная хэш-таблица)— это протокол, позволяющий битторрент-клиентам находить друг друга без использования трекера. Клиенты с поддержкой DHT образуют общую DHT-сеть и помогают друг другу найти участников одних и тех же раздач. Поддержка DHT есть в клиентах Mainline, µTorrent, KTorrent, Deluge, BitSpirit, Transmission и BitComet. В Azureus есть собственная реализация DHT, то есть клиенты Azureus образуют свою собственную отдельную DHT-сеть, а с помощью плагина mainlineDHT присоединяются к стандартной сети DHT, участвуя одновременно в обеих сетях. PEX (Peer exchange) — это расширение протокола для обмена списками участников. PEX реализуется как дополнительные сообщения между клиентами, уже соединёнными между собой для обмена сегментами файла по обычному протоколу BitTorrent. В отличие от трекера и DHT, PEX может быть только вспомогательным средством получения пиров, так как он не может помочь подключиться к раздаче новым пирам. PEX есть в клиентах Transmission, Azureus, BitComet, KTorrent, µTorrent и BitTornado, причем в каждом клиенте он реализован по-своему, поэтому PEX между собой могут пользоваться только одинаковые клиенты. Начиная с 3 версии Azureus (Vuze) может обмениваться PEX с uTorrent и BitTorrent. Функции И DHT и PEX фактически выполняют основную функцию трекера — помогают участникам файлообмена узнать друг о друге. Они могут: 1. Помочь участникам быстрее друг друга найти Например, на раздаче есть пир X с недоступным портом. К раздаче подключается пир Z, который сам начать соединение к X не может, и вынужден ждать, пока Х о нём узнает сам. Х только что обращался к трекеру, и в следующий раз собирается это сделать через час. Но вот пир Y в очередной раз обращается к трекеру и узнаёт про нового пира Z. При этом Y сам давно уже соединен и занимается файлообменом с X, поэтому он через PEX сообщает X адрес этого нового пира. Теперь X может начать соединение к Z. 2. Снизить нагрузку на трекер Некоторые клиенты, например Azureus, получая адреса пиров через DHT или PEX, реже обращаются за списком пиров на трекер. 3. Поддержать участников вместе в периоды недоступности трекера Известно, что если трекер является единственным источником информации о пирах, то при его неработоспособности раздача постепенно останавливается. Клиенты помнят уже известные списки адресов других пиров, но постепенно эти списки устаревают — некоторые пользователи отключаются от раздачи, у некоторых меняется IP адрес, а новые пользователи не могут подключиться к раздаче вообще. PEX позволяет несколько замедлить процесс распадения роя участников, а DHT позволяет полностью заменить трекер, то есть даже подключаться к раздаче новым участникам. 4. DHT позволяет раздавать вообще без трекера Такая раздача называется trackerless. Торрент для нее создается без адреса трекера, и клиенты друг друга находят через DHT сеть. При участии в trackerless раздачах БТ клиенты приобретают определённое сходство с eMule, использующим сеть KAD. Механизм работы DHT Реализация распределеной сети в БТ клиентах основана на варианте DHT, называемом Kademlia. А вообще говоря, DHT (Distributed hash table) означает децентрализованную распределенную систему для объединения большого количества постоянно исчезающих и появляющихся узлов и эффективной передачи сообщений между ними. На основе DHT структур строят разные более сложные системы, такие как P2P файлообмен, кооперативное веб кеширование, DNS сервисы и т. п. DHT использует UDP протокол. БТ клиенты слушают тот же UDP номер порта, который они используют для входящих TCP соединений. Если вы активно используете DHT, то открытие этого UDP порта для доступа снаружи желательнo, но не обязательно — DHT будет работать и так. Каждый подключенный БТ клиент является в DHT сети отдельным узлом. У него есть свой уникальный ID (идентификатор), случайно выбираемый из того же 160-битного пространства, что и infohash’ы торрентов. Каждый узел хранит таблицу маршрутизации, содержащую контактную информацию о многих «ближайших» к нему узлах, и о нескольких более далеких. «Близость» двух узлов вычисляется из «сходства» их ID, и не имеет никакого отношения к их географической близости. Когда узел хочет найти пиров для какой-то раздачи, он сравнивает infohash этой раздачи с ID известных ему узлов, и затем посылает запрос тому узлу, чей ID наиболее похож на этот infohash. Тот узел возвращает ему адрес узла, чей ID ещё ближе к infohash торрента. Тогда наш узел посылает запрос тому новому узлу, и получает от него адрес следующего узла, чей ID ещё более похож на infohash торрента. Таким образом, запросы от клиентов, участвующих в раздаче торрента с определённым infohash, постепенно стекаются к узлам, чьи ID наиболее похожи на этот infohash. Эти узлы помнят предыдущие запросы, и всем следующим запрашивающим узлам вернут адреса предыдущих пиров с той же раздачи. Private key На публичных (открытых) трекерах, где каждый желающий может скачать торрент и участвовать в раздаче, DHT и PEX служат на благо всех участников. Частным (закрытым) трекерам в первую очередь важно, чтобы в раздачах могли участвовать только зарегистрированные пользователи, и чтобы они соблюдали определённые правила. При первом обращении клиента частный трекер имеет возможность не допустить его к раздаче, просто не сообщая ему адреса других клиентов-участников. Поэтому для закрытого трекера важно, чтобы клиенты не получали эти адреса через DHT/PEX. DHT и PEX появились в клиентах Azureus и BitComet примерно летом 2005 года. Администраторы многих частных трекеров были недовольны такой новой функциональностью, и поэтому стали запрещать на трекере эти новые версии клиентов. Тогда разработчики клиентов предложили новый ключ внутри торрент файла: private. Если он равен 1, то клиент обязан для этого торрента автоматически отключать DHT/PEX независимо от желания пользователя. Такой торрент называют Secure Torrent. Практически все современные частные трекеры сами принудительно вставляют private:1 во все торренты, выкладываемые на трекере, а также запрещают несколько устаревших версий клиентов, поддерживающих DHT или PEX, но еще не знающих про private key. Пользователи трекера просто не могут на раздачах использовать DHT/PEX, и проблемы нет. Отметим, что присутствие private key изменяет infohash торрента, поэтому выреза́ть его из торрент файла бесполезно — другие клиенты изменённый торрент всё равно не признают. Пользоваться ли?
Вообще говоря, такая ситуация не может быть признана нормальной, особенно на трекерах с системой passkey. Дело в том, что в клиентах BitComet, BitSpirit и Azureus через DHT пользователи могут узнать passkey других пользователей, и нечестные пользователи могут использовать чужие passkey для скачивания под чужой учетной записью. Поэтому по крайней мере в этих клиентах на таких трекерах рекомендуется DHT выключить. DHT и статистика Этот раздел касается только частных трекеров, на которых private key в торренты принудительно не вставляется, и на некоторых раздачах (в зависимости от того, вставил ли раздающий сам в торрент private key) можно использовать DHT и PEX. Часто встречается мнение, что включенный в клиенте DHT влияет на учет статистики клиента трекером, например «раздавал через DHT, значит статистика шла мимо трекера». Это неверно. Во-первых, DHT/PEX используется только для получения адресов пиров. Ни файлообмена, ни какого-либо учета статистики по ним не ведётся. Клиент рапортует статистику скачанного и отданного только на трекер. То есть «раздавал через DHT» фактически означает «о некоторых (или о всех) пирах получил информацию по DHT, и вероятно некоторые пиры тоже нашли меня через DHT» Во-вторых, хотя клиенты обычно и знают, откуда ими получены адреса пиров, ни один клиент не разделяет трафик на «полученный/отданный DHT пирам» и «полученный/отданный пирам, полученным от трекера». Даже при желании это было бы клиенту сделать затруднительно — некоторые пиры могут быть получены и от трекера и через DHT или PEX, и часто клиент не знает, как его адрес получил пир, сам начинающий к нему соединение. Клиент рапортует трекеру суммарные данные об объемах им скачанного и отданного всем пирам, с которыми он общался, независимо от того, узнал клиент об отдельных пирах через трекер, DHT или PEX, или тот пир вообще начал соединение сам. То есть даже если из-за DHT/PEX на раздаче появятся «левые» пользователи (не обращающиеся к трекеру), клиент все равно сообщит на трекер все, что у них скачал и отдал. Правильный учет статистики зависит только от состояния трекера: работает трекер — статистика учитывается, не работает — не учитывается. Только в случае длительно неработающего трекера DHT/PEX может играть косвенную роль, не давая постепенно затухнуть файлообмену на такой «раздаче без учета статистики». DHT-сеть в BitTorrent-клиентах использует протокол UDP. Так вот ... если вы теоретически просветились ... в этой статье я расскажу о том, как сделать так, чтобы ваш торрент клиент игнорировал установленный в торренте private флаг (!) Что нам понадобится?
Ну собственно займемся ... перво-наперво надо распаковать установленный uTorrent (upx.exe должен уже находиться в папке с установленным uTorrent, обычно это "C:\Program Files\uTorrent\") ... запускаем консоль, переходим в папку uTorrent и распаковываем его: Открываем uTorrent.exe в Hiew, переключаемся в Hex-режим (Enter) и находим (F7) строку "private" ... Далее нажимаем в найденном месте (F6) - DatRef (Data References), чтобы найти места в коде, которые ссылаются на эту строку. После того как вы нажали F6 первый раз - HIEW находит место и автоматически переключается в режим дизассемблирования. Для того чтобы найти следующую ссылку (следующее вхождение) необходимо нажать Shift+F7. Ищем вхождение которое выглядит вот так: Т.е. сверху вхождение "piece length", а снизу "name.utf-8" ... Нас интересует вот это место в коде: Код .0041205F: 56 push esi .00412060: 6898314F00 push 0004F3198;'private' -- 5 .00412065: 8BCF mov ecx,edi .00412067: 898374010000 mov [ebx][000000174],eax .0041206D: E88540FFFF call .0004060F7 -- 3 .00412072: 85C0 test eax,eax .00412074: 7407 jz .00041207D -- 6 Упрощенно, если флаг private равен нулю, то осуществляется переход на адрес .00041207D ... Команда test eax, eax - это проверка условия, а jz - условный переход, в случае если условие выполняется. Так вот нам нужно чтобы этот переход осуществлялся всегда. Т.е. чтобы uTorrent всегда думал что флаг private на раздаче установлен в 0 ... нет ничего проще, достаточно заменить условный переход на безусловный, т.е. jz на jmp или байт 74 на EB, так, как показано на картинке: Сохраняем изменения и выходим из HIEW. Упаковывать клиент обратно - необязательно. Всё, теперь мы можем качать раздачи с установленным флагом Private используя пиров полученных через DHT/PEX. Чем это может быть полезно нам? Заходим на свой любимый популярный трекер, скачиваем торрент, добавляем его в uTorrent. После того как клиент нашел сидов, ставим закачку на паузу, открываем в uTorrent список трекеров для данного торрента и удаляем оттуда все URL трекеров. Теперь закачка пойдет только за счет DHT, даже несмотря на то что у торрента установлен флаг private, а т.к. закачка идет через распределенную сеть, т.е. фактически у торрента нет трекеров, то информацию о количестве скачанного / отданного на трекер отправляться не будет, а следовательно наш рейтинг никак не изменится Это один плюс ... другой плюс заключается в том, что если вам нужно скачать что-то с "закрытого трекера", а вы на нем незарегистрированы - то вам достаточно будет найти .torrent файл с этого трекера, список пиров клиент получит через DHT. -------------------- |
||||
|
|||||
8.4.2012, 21:45
Сообщение
#2
|
|
Newbie Группа: Пользователи Сообщений: 6 Регистрация: 28.3.2009 Из: 29405000000 Пользователь №: 159 |
Как на счет этого? Параметр isp.peer_policy_url - использование списка приоритетных IP адресов ( увеличение скорости загрузки )
Вот нашел в этой теме http://dl.dropbox.com/u/67730860/domolink.xml Нам подходит? -------------------- Темное живет даже в лучших из нас,
В худших из нас - оно не живет, а правит... Д.Кунц |
|
|
14.4.2012, 14:17
Сообщение
#3
|
||
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Увеличение скорости загрузки и отдачи в utorrent и Bittorent Параметр isp.peer_policy_url - использование списка приоритетных IP адресов ( увеличение скорости загрузки ). Всё что ниже будет написано в обязательном порядке прочитать и сделать всем : 1. Кто подключён к интернету через Ethernet ( локальная сеть ) 2. Скорость закачки/раздачи иногда случается гораздо выше чем обычно ( в том числе и ADSL ) 3. Если у вас не анлим , но внутренний трафик тарифицируется по другой цене или бесплатен . Новая настройка в utorrent 3.x и новых Bittorrent isp.peer_policy_url. Эта опция позволяет обращаться к списку IP адресов к которым utorrent будет пытаться подключиться в первую очередь. В пустое поле isp.peer_policy_url вставляется ссылка на xml файл внутри которого записаны диапазоны IP адресов вашего провайдера и его пиринговой зоны. Подходит Наконец-то приоритеты сделали ... только для калужского филиала Домолинк правильный список диапазонов выглядит следующим образом: Код <iprange start="62.148.128.1" end="62.148.159.254" weight="10"/> <iprange start="212.106.32.1" end="212.106.63.254" weight="10"/> <iprange start="94.242.128.1" end="94.242.191.254" weight="10"/> <iprange start="109.225.0.1" end="109.225.63.254" weight="10"/> <iprange start="31.172.192.1" end="31.172.223.254" weight="10"/> Ссылка на файл с учетом этих изменений:
p.s. Для тех кто ничего не понял, еще раз ... скорость скачивания с пиров, принадлежащих диапазону IP адресов калужского филиала не лимитируется, т.е. если у вас тариф 1 Mbit, то скорость закачки с любых ресурсов будет согласно вашего ТП, однако, если вы качаете что-то с ресурса (пира) из калужского региона Домолинк, то скорость скачивания с таких ресурсов (IP) не лимитируется и ограничивается лишь физической пропускной способностью линии. Логично, чтобы при закачке торрентов приоритет отдавался пирам из вашего региона, т.к. с них качать быстрее. Теперь такая возможность есть и достигается она за счет использования параметра isp.peer_policy_url в настройках uTorrent. p.p.s. Тема обсуждения на домолинковском форуме - http://www.domolink.ru/forum/showthread.php?p=395203 -------------------- |
|
|
||
14.4.2012, 16:14
Сообщение
#4
|
|
Newbie Группа: Пользователи Сообщений: 7 Регистрация: 2.9.2010 Пользователь №: 680 |
Прикольненько!
|
|
|
5.7.2012, 6:19
Сообщение
#5
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
uTorrent 3.2 with DHT patch
Эта версия uTorrent будет игнорировать "private" флаг на любых новых открываемых торрентах. Это позволит использовать DHT и Peer Exchange на любой раздаче. "Private" торренты в списке закачек необходимо удалить и добавить заново для разблокирования. Скаченные данные останутся нетронутыми. Примечание: Если вы запустите нормальный uTorrent после модифицированного, он снова заблокирует все "private" торренты. Нужно будет удалить и заново добавить их в свой список. Начиная с версии 3.2 uTorrent не распаковывается штатно UPX'ом, поэтому выкладываю уже распакованную и пропатченную (DHT Patch) 3.2 версию клиента: uTorrent_32_DHT_Patched.7z ( 834,27 килобайт ) Кол-во скачиваний: 4764 p.s. Автоматизированное средство для распаковки "нестандартного" UPX - тут, либо UpxUnpacker_v0.2.rar ( 82,37 килобайт ) Кол-во скачиваний: 773 , автоматический патчер распакованного uTorrent.exe для версий uTorrent > 3.1 - utorrent31_DHT_patch.7z ( 44,37 килобайт ) Кол-во скачиваний: 8245 . -------------------- |
|
|
27.9.2014, 17:32
Сообщение
#6
|
|
Newbie Группа: Пользователи Сообщений: 1 Регистрация: 27.9.2014 Пользователь №: 1970 |
Вот бы так пропатчить ACEStream, было бы шикарно.
Поясню: До версии 2.2.7 DHT по умолчанию был включен, подозреваю что и "поиск локальных пиров" и прочие службы позволяющие находить пиров в обход треккера работали. В более поздних версиях всё отключено, опять таки по умолчанию. Принудительно включить DHT и прочие службы в ACEStream возможности нет. Раньше можно было скачать любой торрент-файл с видео контентом. Затем на ресурсе http://torrenteditor.com/ обработать его (убрать свой паскей и добавить ретреккеры). И спойно запускать уже обработанный этот торрент-файл "Ace Player"-ом. Ace Player тут же находил массу пиров и начинал воспроизведение через несколько секунд (зависит от количества пиров). Теперь же в обход треккера смотреть возможности нет. Можно конечно использовать MediaGet, но Ace Player всё же удобнее. Если кто то займётся данной проблемой было бы супер. ну или хотя бы подскажет где почитать про решение этой проблемы. Заранее спасибо заинтересовавшимся людям. |
|
|
Текстовая версия | Сейчас: 23.11.2024, 6:47 | |