форум вебмастеро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( 
)), str(self.amount_left())))



где вместо (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г, однако ее до недавнего момента использовали достаточно топорно, поэтому и отследить было несложно. Предложенная схема сильно затрудняет поимку читеров и доказательство того, что они читеры.
Лично мне это как честному сидеру и администратору трекера обидно

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:27169, gzipped size:9651

Mp3 Download || Webs Studio™ || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]