Обход ограничения раздачи интернета

Сегодня немного отойду от темы автоматизации и расскажу о том, как обойти ограничения на раздачу интернета:) Думаю тема актуальная, так как в интервью с управляющими компаний операторов они обмолвились, что основная прибыль у них идёт за счёт интернет трафика.

Задача:

Обойти ограничение раздачи интернета с телефона и подключить к интернету свой ПК на Windows и на Mac OS X. При этом не устанавливая root на свой телефон и других примочек.

Теория:

Пропустите этот пункт, если вам не интересно как это работает, и хочется приступить к делу.

Итак, в передаче данных существует такое понятие как TTL (Time To Live). TTL — это предельный период времени или число итераций или переходов, за который набор данных (пакет) может существовать до своего исчезновения [https://ru.wikipedia.org/wiki/Time_to_live]. Грубо говоря, это численный параметр пакета исходящих данных, который характеризует, сколько раз ваш пакет данных может пройти через маршрутизаторы/сервера. По умолчанию эта величина в ОС Windows = 128 , а в остальных системах 64 (*nix, android, iOS).

Когда вы отправляете запрос на какой-либо сервер, к примеру вводите адрес сайта google.ru, то от вас посылается пакет данных, с вашим IP, в начале которого прописан TTL=128 (если вы на ПК под Winndows). Первый сервер, через который пройдет ваш пакет — это сервер вашего провайдера (если с телефона,то оператора). Он перенаправляет ваш пакет на следующий сервер и снижает TTL пакета на единицу. Если он так и не доходит до нужного сервера пакет данных «погибает».

А теперь представим, что вы с телефона. Провайдер получает от вас пакеты с TTL= 64 и уходят они от него уже с TTL=63.

обход ограничения раздачи интернета

Предположим, что вы подключились к своему телефону через ПК. В таком случае ваш телефон работает, как маршрутизатор и тоже снижает TTL ваших пакетов на единицу. И внезапно оператор получает пакет с TTL не 64 (с вашего телефона), а с TTL = 63 , так как вы уже прошли через один маршрутизатор (телефон). Тут он понимает, что вы играете не по «тарифу», и убивает пакет ваших данных, отправляя вам сообщение о том, что 1 час раздачи интернета равен 50 рублям, а целый день 150 рублям.

обход ограничения раздачи интернета

Вот так это и работает. Более подробное описание здесь. Картинки взяты оттуда же.

Как вы уже, возможно, догадались, изменив TTL на одном из устройств можно скрыть разницу между ними. К примеру, если в исходящих пакетах подключенного к телефону ПК будет прописан TTL = 65, то проходя через мобильный, TTL снизится до 64, и будет таким же как и у пакетов мобильного. Поэтому оператор не сможет отличить ваш телефон и ПК.

Так и сделаем!

Изменяем TTL на ПК под WINDOWs:

Прежде всего нам потребуется зайти в пуск и найти утилиту «Выполнить» (пропишите в строке поиска). Открываем и в появившейся строке введём команду regedit.

команда regedit

Далее в открывшемся окне надо перейти по следующему пути в левом окне:  HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

путь к нужной папке

В правом окне кликаем правой кнопкой по области и выбираем — > Создать -> Новый параметр DWORD (32 бита) -> Называем его «DefaultTTL» .
Кликаем правой кнопкой по новому параметру -> Изменить -> На системе исчисления ставим точку «Десятичная» , в поле значение прописываем (ТТL 65).

Параметр DWORD

Нажимаем «ОК» и перезагружаемся. После перезагрузки включаем на телефоне хотспот (раздаем wifi). Подключаемся к нему через свой ПК и всё. Если будет интересно, настроить свой телефон так, чтобы к нему могли подключаться все устройства с TTL 64, то пишите в комментариях — напишу об этом позже.

Изменяем TTL на MAC OS X с автозапуском

Напоминаю еще раз, все, что описано в этой статье требует root прав.

1) Идем в /Library/StartupItems. Открываем терминал и прописываем:

cd /Library/StartupItems/

2) Создаем там папку (например, это будет autottl). В терминале пишем:

sudo mkdir autottl

3) Идем туда. В терминал вставляем: cd autottl/

4) Создаем там скрипт (он должен называться так же как и папка), который хотим выполнять.
Для создания скрипта в терминал вбиваем:
sudo vim autottl
И тут откроется редактор Vim! Сюда копируем сам скрипт:

#!/bin/sh
sudo sysctl -w net.inet.ip.ttl=65

И закрываем Vim с сохранением результата, вводим в виме (редакторе): :w! autottl

5) Создаем файл параметров StartupParameters.plist.
 sudo vim StartupParameters.plist

И тут опять откроется редактор Vim! Сюда копируем содержание файла параметров:
{
Description = 'Add static routing tables';
Provides = ('autottl');
Requires = ('Network');
OrderPreference = 'None';
}

И опять закрываем Vim с сохранением результата, для этого вводим: :w! StartupParameters.plist

6) Выставляем права на выполнение нашему скрипту.
sudo chmod 755 autottl

7) Смотрим, что получилось в итоге:

 ll

9) А сейчас, мы не будем перезагружать комп, а просто стартанем скрипт, чтобы убедиться в его работоспособности:
 sudo SystemStarter start autottl

10) Лезем в браузер, проверяем и получаем профит!