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

Задача:

Обойти ограничение раздачи интернета с телефона и подключить к интернету свой ПК на 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.

freeshare-1

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

freeshare-ttl-devices

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

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

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

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

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

freeshare-windows-regedit

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

freeshare-windows-ttl-settings

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

freeshare-windows-ttl-default

Нажимаем “ОК” и перезагружаемся. После перезагрузки включаем на телефоне хотспот (раздаем 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. Смотрим, что получилось в итоге: ls -la

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

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

Изменяем TTL на macOS Mojave/Catalina/BigSur с автозапуском

Обход ограничения раздачи интернета для macOS  начиная с Mojave можно сделать через утилиту sysctl:

  • Сменить ttl прямо сейчас: sudo sysctl net.inet.ip.ttl=65
  • Сменить ttl перманентно:
    • Открываем файл: sudo nano /etc/sysctl.conf
    • Добавляем следующую строку в файл и сохраняем: net.inet.ip.ttl=65
    • Нажимаем Ctrl+X, y, Enter (сохраняем).