Обход ограничения раздачи интернета
Сегодня немного отойду от темы автоматизации и расскажу о том, как обойти ограничения на раздачу интернета:) Думаю тема актуальная, так как в интервью с управляющими компаний операторов они обмолвились, что основная прибыль у них идёт за счёт интернет трафика.
Задача:
Обойти ограничение раздачи интернета с телефона и подключить к интернету свой ПК на 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.
Далее в открывшемся окне надо перейти по следующему пути в левом окне: HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
В правом окне кликаем правой кнопкой по области и выбираем - > Создать -> Новый параметр DWORD (32 бита) -> Называем его “DefaultTTL” . Кликаем правой кнопкой по новому параметру -> Изменить -> На системе исчисления ставим точку “Десятичная” , в поле значение прописываем (ТТL 65).
Нажимаем “ОК” и перезагружаемся. После перезагрузки включаем на телефоне хотспот (раздаем wifi). Подключаемся к нему через свой ПК и всё. Если будет интересно, настроить свой телефон так, чтобы к нему могли подключаться все устройства с TTL 64, то пишите в комментариях - напишу об этом позже.
Изменяем TTL на MAC OS X с автозапуском
Напоминаю еще раз, все, что описано в этой статье требует root прав.
-
Идем в
/Library/StartupItems
. Открываем терминал и прописываем:cd /Library/StartupItems/
-
Создаем там папку (например, это будет autottl). В терминале пишем:
sudo mkdir autottl
-
Идем туда. В терминал вставляем:
cd autottl/
-
Создаем там скрипт (он должен называться так же как и папка), который хотим выполнять. Для создания скрипта в терминал вбиваем:
sudo vim autottl
И тут откроется редактор Vim! Сюда копируем сам скрипт:#!/bin/sh sudo sysctl -w net.inet.ip.ttl=65
И закрываем Vim с сохранением результата, вводим в виме (редакторе):
:w! autottl
-
Создаем файл параметров StartupParameters.plist.
sudo vim StartupParameters.plist
И тут опять откроется редактор Vim! Сюда копируем содержание файла параметров:
{ Description = 'Add static routing tables'; Provides = ('autottl'); Requires = ('Network'); OrderPreference = 'None'; }
И опять закрываем Vim с сохранением результата, для этого вводим:
:w! StartupParameters.plist
-
Выставляем права на выполнение нашему скрипту.
sudo chmod 755 autottl
-
Смотрим, что получилось в итоге:
ls -la
-
А сейчас, мы не будем перезагружать комп, а просто стартанем скрипт, чтобы убедиться в его работоспособности:
sudo SystemStarter start autottl
-
Лезем в браузер, проверяем и получаем профит!
Изменяем 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 (сохраняем).
- Открываем файл: