Передвинул сюда, чтобы не затерялось в анналах обсуждений
Восстановление DHT в клиентах uTorrent
(корректировка начальных DHT-адресов
в теле utorrent.exe)
Ситуация с DHT, благополучно разрешившаяся
20.10.2024, может повториться в любой момент.
Если по какой-либо причине не станет связи (проверяйте командами "
ping" и "
tracert") с входными развёртывающими DHT-узлами
router.bittorrent.com:6881 (67.215.246.10:6881) и
router.utorrent.com:6881 (82.221.103.244:6881), то, помимо способа с изменением файла "hosts"
(
https://rutr.life/forum/viewtopic.php?p=86648403#86648403 ),
можно поменять DHT bootstrap адреса
ПРЯМО В БИНАРНИКЕ utorrent.exe !
Не забывайте делать его
резервные копии !
Файл utorrent.exe надо
сначала распаковать UPXом (Ultimate Packer for eXecutables), так как код внутри экзешника дополнительно сжат этой программой.
Образец команды распаковки: "upx.exe -d C:\utorrent.exe".
Распаковка сохранится в тот же файл: "C:\utorrent.exe".
С распаковкой оригинальных версий uTorrent 3.2+ голый upx.exe не справляется. Необходим специализированный распаковщик или отладчик. См. также раздачу №5 из списка ниже (экзешники в ней уже распакованы).
Затем открыть utorrent.exe в hex- (или файловом) редакторе (например,
WinHex), найти "
router.bittorrent.com" и "
router.utorrent.com" (они подряд идут) и заменить на любые желаемые адреса (или даже повторить один адрес дважды). Нужно не вставлять адреса, увеличивая при этом размер файла, а "затирать" ими имеющиеся символы (в WinHex это Ctrl+B). Остатки прежних адресов (если они были длиннее новых) надо заполнить шестнадцатеричными "00" (в WinHex: выделить кусок кода, затем нажать Ctrl+L).
Альтернативные общедоступные начальные DHT-адреса:
dht.transmissionbt.com:6881 (87.98.162.88:6881),
dht.libtorrent.org:25401 (185.157.221.247:25401) и др.
Можно использовать и доменные имена и "цифровые" IP-адреса (я в своё время поменял на IP, с целью профилактики блокировок бутстреп-серверов по DNS).
Благодаря помощи
Rinat8411 решена и проблема с номером порта начальных DHT-адресов (UDP/6881), если требуется его замена. Вместо "6881" можно поставить, например, "25401" - для dht.libtorrent.org (185.157.221.247). Для этого нужно найти (с помощью hex-редактора) в utorrent.exe, распакованном посредством UPX, шестнадцатеричную последовательность "
E1 1A" (то есть байты 1A E1 (порт 6881) наоборот). И заменить её на шестнадцатеричную "
39 63" (байты 63 39 (порт 25401) наоборот). Это для упомянутого dht.libtorrent.org, естественно.
Самый простой способ получить шестнадцатеричные значения из десятичных (для номера порта и не только) - воспользоваться штатным "
Калькулятором" Windows в расширенном (научном, инженерном) режиме, переключаясь между "Hex" и "Dec" системами счисления.
В utorrent.exe версий 2.0.4 и 2.2.1 последовательность "
E1 1A" встречается по одному разу (далеко от "router.bittorrent.com" и "router.utorrent.com").
В версиях "трёшки" последовательность "
E1 1A" встречается более двух раз, но менять можно только первую из них, то есть всё как у "двушек".
Зато в версии 1.8.2 build 15357 для каждого из двух адресов в коде, оказывается, предусмотрен отдельный указатель порта (последовательность "
E1 1A" встречается по два раза)! То есть в их код можно вставить
по два разных адреса с разными портами! Проверено!
Например, 87.98.162.88:6881 + 185.157.221.247:25401
Обратно UPXом экзешник можно не запаковывать - всё и так работает.
Кстати, рекомендую пропатченные версии uTorrent
(имеется в виду не по данной проблеме, а вообще;
их я ещё дополнительно "бутстрепил" сам):
1) uTorrent 1.8.2 build 15357:
https://rutr.life/forum/viewtopic.php?t=3712426
2) uTorrent 2.0.4 build 22967:
https://rutr.life/forum/viewtopic.php?t=3978860
3) uTorrent 2.2.1 build 25534:
https://rutr.life/forum/viewtopic.php?t=4378847
4) uTorrent 3.2.3 build 28705:
https://rutr.life/forum/viewtopic.php?t=4338936
5) uTorrent 3.5.5 build 46552:
https://rutr.life/forum/viewtopic.php?t=5181383
utorrent.exe из первой раздачи распаковывается UPXом без проблем, экзешники из пятой вообще не запакованы повторно (что правильно!).
А вот для распаковки пропатченных и затем снова упакованных (зачем-то) utorrent.exe из второй, третьей и четвёртой раздач, необходим один из специализированных распаковщиков, типа "PEiD.exe" (с плагином "PEiD Generic Unpacker" (состоящим из файлов ZDRx.dll + GenOEP.dll + ImpREC.dll)) из комплекта "PE tools". Голый upx.exe не справляется. Так что если не хотите искать подходящие распаковщики - то в случае "двушек" берите оригинальные версии, а если нужны "трёшки" - качайте патченные из пятой раздачи (их там целых тринадцать версий).
В общем-то восстановление DHT - это просто для удобства (если стартует пустой клиент). Когда в клиенте много популярных раздач, всё и так моментом подхватывается. Единственное - иногда приходится перестартовывать клиент раз пять-десять, чтобы началось нахождение пиров (но это уже издержки современного интернета с его нестабильностью и перегрузками - несколько лет назад я такого не наблюдал).
Версии uTorrent 3.x.x Рутрекер не особо рекомендует. Да и я тоже. Лучше пользуйтесь старенькими (тем более, что всё это актуально уже только для Windows XP и Windows 7).
===============================
Zimagor писал(а):
86693991Ради интереса, через HEX едитор, пытаюсь прописать в utorrent.exe, адреса:
34.229.89.117 router.utorrent.com
87.98.162.88 router.bittorrent.com
Файл, с помощью UPX, предварительно распакован.
Но после сохранения, экзешник становится нерабочим, и при его запуске, выскакивает: "Ошибка при запуске приложения (0xc0000005)"
Правильно ли я прописываю? Вот скрин, что у меня получается:
У меня так (относительно вашей картинки):
@87.98.162.88
............212.129.33.59
.......d
, где жирные точки (12 и 7 штук) - это символы с шестнадцатеричным значением "00" (как заполнить позиции в файле шестнадцатеричными значениями - см. справку к вашему hex-редактору), а "d" - из d
.h
.t. Всего 46 символов. Вы, очевидно, увеличили размер файла. Размер исполняемого файла всегда должен оставаться тем же, что был (то есть надо не вставлять символы, а записывать поверх существующих). Если новый IP-адрес короче предыдущего - оставшиеся от старого адреса последние символы надо заполнить шестнадцатеричными "00".
Адрес 212.129.33.59 - это дублёр 87.98.162.88,
так как:
Код:
nslookup dht.transmissionbt.com
Non-authoritative answer:
Name: dht.transmissionbt.com
Addresses: 212.129.33.59, 87.98.162.88
Но 212.129.33.59 периодически не работает...
Поэтому можно использовать комбинацию с участием только 87.98.162.88:
@87.98.162.88
............87.98.162.88
........d
, где жирных точек 12 и
8 штук - это символы с шестнадцатеричным значением "00".
Всего 46 символов.
На скриншоте - очевидно, один из билдов uTorrent 2.2.1. Мой комментарий в точности подходит к версиям 2.0.4 и 2.2.1, а к версиям 1.8.2 и "трёшкам" - с небольшими нюансами (в них будет слегка отличаться окружение и общее количество символов).
===============================
Состояние DHT в статус-баре
в первые секунды после старта "чистого" клиента uTorrent 2.0.4 build 22967 (без закачек, без "dht.dat" и "dht.dat.old") имеет следующий вид, в зависимости от используемого публичного бутстреп-сервера:
"
DHT: Waiting to log in" - бутстреп-сервер "отвечает" только по ICMP, но не по UDP/6881 (
router.bittorrent.com (67.215.246.10)*,
dht.libtorrent.org (185.157.221.247)** и bootstrap.jami.net (79.137.71.93, 149.202.80.32)).
"
DHT: 0 nodes (Login)" - бутстреп-сервер не отвечает даже по ICMP (router.utorrent.com (82.221.103.244), dht.aelitis.com (34.229.89.117) = dht.vuze.com (34.229.89.117) и router.bitcomet.com (non-existent domain)).
"
DHT: 1 nodes (Login)" - ответ от бутстреп-сервера пришёл и по ICMP и по UDP/6881 (и даже в случае, если на первый раз зависло на "1 nodes", можно пару раз перезапустить клиент - и оно пойдёт!) (dht.transmissionbt.com (87.98.162.88, 212.129.33.59 - по UDP/6881 отвечает ТОЛЬКО ПЕРВЫЙ из двух IP, а второй - нет; поэтому я рекомендую указывать именно IP, а не доменное имя)).
* В периоды сбоев.
С 20.10.2024 проблем ПОКА не наблюдается (попадает в категорию "DHT: 1 nodes").
** Это с неправильным портом в коде (который по умолчанию "6881"). С исправленным на "25401" - отлично работает (попадает в категорию "DHT: 1 nodes").
===============================
Ещё небольшой эксперимент
Проснифил процесс старта клиента uTorrent 2.0.4 build 22967 без закачек (до момента, когда новые DHT-узлы уже перестают появляться в статус-баре), далее в окне сниффера отсортировал записи по порту, с которого приходят ответы от удалённых узлов; затем отобрал штук десять с UDP-портом №6881 (то есть, у которых именно этот порт гарантированно активен), и у которых одновременно с этим была передача пакетов в мою сторону. И все эти десять штук адресов (пробил по IP - юзеры из разных стран) поочерёдно вставлял в utorrent.exe вместо публичных бутстреп-серверов (способом, описанным выше), сохранял и запускал uTorrent в "чистом" виде. Комп тоже на всякий случай перезагружал, файлы "dht.dat" и "dht.dat.old" каждый раз удалял.
Так вот,
все десять вариантов дали положительный результат (около 250 DHT-узлов в статус-баре)!
Теперь можно набрать резервный список таких IP, и в случае "судного дня" (отказа или блокировки имеющихся бутстреп-серверов) использовать какой-то из этого списка, пока не будут подняты новые публичные бутстреп-сервера. Понятно, что со временем частные компы будут выключаться, и эти узлы "отвалятся", но можно периодически проверять список через длительные интервалы времени (допустим, раз в месяц). Если составить большой список, то какие-то из его IP могут принадлежать и постоянно работающим серверам, и это будет видно в процессе длительных наблюдений.
Мониторю список из 100 узлов с портом UDP/6881
Спустя две недели - четверть сохранённых мной узлов по-прежнему активны!
Часть из них напоминают арендованные VPS.
Спустя почти месяц - четверть сохранённых мной узлов по-прежнему активны!
Почти все они - арендованные VPS (Амазон, Гугл, Хетцнер).
Спустя полтора месяца - четверть сохранённых мной узлов по-прежнему активны!
Все они - арендованные VPS (Амазон - 15 шт., Хетцнер, Оракл и др.).
===============================
На какие UDP-порты из сниффера обратил внимание
("чистый" старт DHT, в общей сложности порядка 600 IP):
6881 -
99 шт. - совершенно разные страны, независимо от начального DHT-сервера из кода uTorrent
6882 -
6 шт. - Франция, США, Ирландия
6889 -
5 шт. - Тайвань, Италия, Германия, Япония
6992 - 3 шт. - США, Ирландия
10240 -
4 шт. - ЕС, США, Румыния, Норвегия
15000 -
7 шт. - разные города Китая и Тайвань
22222 - 1 шт. - Португалия (просто "красивый" номер порта)
25401 - 1 шт. - dht.libtorrent.org (если, конечно, его вставить в код uTorrent) - как ни странно, единственный с таким номером порта
32000 - 3 шт. - Россия
49001 -
9 шт. - Россия (6 шт.), Азербайджан, Болгария, Франция
50321 - 3 шт. - США и Гонконг
51413 -
13 шт. - совершенно разные страны
55555 - 1 шт. - Россия (просто "красивый" номер порта)
Остальные номера портов - в основном уникальные (по 1-2 записи в сниффере).
Ещё обратил внимание, что 67.215.246.10:6881 (после того, как его починили) отрабатывает старт DHT надёжнее (всегда с первого раза), чем 87.98.162.88:6881 или 185.157.221.247:25401 (с ними иногда приходится рестартнуть клиент).