форум вебмастероff на AlfaSpace.NET |
Ubuntu и Linux
|реактивный бесплатный хостинг
| Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга
|
правила форума
| Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ ° |
| Форум вебмастеров на AlfaSpace.NET / The Matrix Has You / О практическом применении уязвимости торрент-протокола |
| Автор | Сообщение |
| Константин TorrentMaster 3449 |
# Дата: 3 Май 2007 15:13 Навеяно моей долгой и безуспешной борьбой с читерами, которые накручивают себе ратио на моем трекере. Ниже представлена практически идеальная схема, которая будучи использована читером, делает его практически незаметным
А ведь уязвимость, на которой она основана, известна еще с 2005 года
Нам потребуется: 1. Bittorrent / BitTornado клиент - в исходниках. 2. Python 3. Прямые руки 4. Совесть (чтобы не начать эксплуатировать эту уязвимость сразу же самому, нарушая процесс файлообмена) Для примера будем модифицировать клиент битторнадо 0.3.17, написанный на питоне и работающей под никсами (в моем случае под гигтег 7.0.4). Сразу оговорюсь, что можно использовать и стандартный битторрент - он тоже написан на питоне. Более того, если изменить тот участок кода, где клиент отсылает свое название и версию, то для окружающих вы его превратите хоть в utorrent, хоть в azureus или во что вам нравится. Начнем: Наша цель - подделать свой рейтинг (ратио) на трекере, чтобы получить больше возможностей по скачиванию (убрать ожидание перед скачиванием, увеличить количество одновременно скачиваемых торрентов, получить возможность раздавать инвайты, если трекер закрытый...) 1. Заходим в директорию с исходниками BitTornado 2. Находим там файл Rerequester.pyo и удаляем его (он есть, если мы хоть 1 раз запускали до этого клиент) 3. Находим файл Rerequester.py и модифицируем в нем всего пару строк: вставляем вначале среди других импортов строку from random import random находим строку else:
s = ('%s&uploaded=%s&downloaded=%s&left=%s' %
(self.url, str(и правим ее так, чтобы стало else:
s = ('%s&uploaded=%s&downloaded=%s&left=%s' %
(self.url, str(round(self.up()+self.down()*(0.32+random()*0.1))), str(self.down( где вместо (0.32+random()*0.1) пишем свой коэффициент, который подбирается так: Если х - реальный максимальный даунлоад, который предоставляет вам провайдер на вашем тарифе, у - максимальный аплоад, который предоставляет провайдер на самом лучшем и быстром тарифе, z - максимальный аплоад, который вы реально будете выставлять в своем торрент клиенте (для честной отдачи), то Фейковый (накрученный) аплоад, который можно передать трекеру в статистике будет y-z, что означает коэффициент: (y-z)/x итого в выражении (0.32+random()*0.1) вместо 0.32 и 0.1 пишем такие коэффициенты, чтобы его максимум был (y-z)/x (заметим, что random() дает число от 0 до 1) При этом коэффициент при рандоме должен быть хотя бы 0.1, чтобы не передавать всегда одинаковый коэффициент и не вызывать подозрений
4. Сохраняем Rerequester.py и наш клиент готов к работе Единственное ограничение для него теперь - не качать раздачи, на которых нет личеров, впрочем путем вставки несложной проверки на количество личеров и это можно преодолеть (однако такие подробности я уже писать не буду) Такой вариант накрутки невозможно отследить существующими средствами. Заставить клиентов передавать, кому они сколько передали и от кого сколько получили невозможно. Поисх торрентов, на которых не сходится аплоад и даунлоад не даст эффекта - он может не сходиться из-за DHT, а также из-за того, чт окиенты отсылают статистику в разное время. Проверка максимальной скорости закачки тоже не даст эффекта - она будет не выше, чем предоставляет наш провайдер на максимальном тарифе и доказать, что у нас тариф не максимальный или мы реально ничего не отдали невозможно
Банить конкретный клиент, из-за того, что его код можно модифицировать тоже бессмысленно - во первых - сам по себе он один и лучших, а во вторых путем внесения еще одного изменения мы моем заставить трекер и других пиров думать, что используется совершенно другой клиент Вот такие вот грустные мысли ![]() |
| admin powered by admin 7192 |
# Дата: 4 Май 2007 05:45 Константин ты мне мозг взорвал своим откровением ![]() |
| persei Участник 475 |
# Дата: 4 Май 2007 06:28 убить читеров! по сути это баг самого протокола. |
| Михаил Я знаю людей... 2552 |
# Дата: 4 Май 2007 06:52 » Константин 1. Bittorrent / BitTornado клиента BitComet не пойдет? я его привык использовать. А отвыкать от любимой программы... Вообщем сам понимаешь. ![]() |
| Константин TorrentMaster 3449 |
# Дата: 4 Май 2007 07:59 Михаил Я привел пример, как это делается на том клиенте, который сам использую. Любой клиент, сырцы которого доступны можно модифицировать. Не забывай про 4й пункт из "нам потребуется" - он самый важный
admin Сам факт наличия этой уязвимости известен, как я сказал с 2005г, однако ее до недавнего момента использовали достаточно топорно, поэтому и отследить было несложно. Предложенная схема сильно затрудняет поимку читеров и доказательство того, что они читеры. Лично мне это как честному сидеру и администратору трекера обидно ![]() |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:27169, gzipped size:9651 |