Как изменить TTL на андроид
Как изменить TTL на андроид
Краткое описание:
Программа позволяет обходить ограничения оператора на тетеринг. Бывшее название: Yota Tether TTL.
Программа позволяет в один клик изменить стандартный TTL для Вашего устройства на нужный, чтобы обойти ограничения на тетеринг.
Приложение работает (должно работать) со всеми операторами, ограничивающими раздачу интернета по TTL (в том числе Билайн, Мегафон, МТС, Yota, Tele2 и др.)
Присутствует функция автозапуска для автоматизации процесса смены после включения телефона.
Подробнее об обходе ограничений для оператора Yota: Обход ограничений Yota
Если Вы хотите помочь в развитии приложения, то присоединяйтесь к нам на GitHub, делайте fork нашего приложения и дорабатывайте его — ваши полезные наработки несомненно попадут в релиз следующей версии и в основной репозиторий.
Ошибки и сбои в работе вполне возможны благодаря тому, что на всех прошивках ядра отличаются и реагируют на команды приложения по-разному. Прошу обо всем писать в тему. Об успешном пользовании опыт тоже не будет лишним.
Также очень ценятся предложения по развитию приложения и добавлению новых функций.
Без рута TTL меняться не будет. Реализовать смену TTL на телефоне без root-прав каким-либо методом, к сожалению, невозможно.
Ввиду введения оператором МТС новых ограничений, не рекомендуется использовать приложение с этим оператором в случае отсутствия поддержки вашим телефоном iptables! Это может привести к снятию средств со счета
Требуется Android: 4.0+ (начиная с 2.0.2, до этого было 2.2+)
Русский интерфейс: Да
версия: 2.0.2 ®TTL Master (Yota Tether TTL) (Пост fuldaros #72604613)
версия: 1.0.0 YotaTetherTTL.apk ( 881,93 КБ )
версия: 1.0.1 YotaTetherTTL.apk ( 881,87 КБ )
версия: 1.0.2 YotaTetherTTL.apk ( 881,89 КБ )
версия: 1.1.0 YotaTetherTTL.apk ( 882,19 КБ )
версия: 2.0.0 YotaTetherTTL.apk ( 921,29 КБ )
версия: 2.0.1 YotaTetherTTL.apk ( 983,13 КБ )
версия: 3.0.0 YotaTetherTTL.apk ( 1,05 МБ )
версия: 3.0.1 YotaTetherTTL.apk ( 1,05 МБ )
версия: 4.0.1 DEV (бета) ®Yota Tether TTL (Пост falred #49039431)
версия: TTL Master 2.0.1 TTLMaster.apk ( 1,59 МБ )
Сообщение отредактировал iMiKED – 28.08.19, 20:15
/4te.me
Столкнулся с проблемой раздачи интернета с Android-телефона на другие устройства, через мобильную точку доступа, у некоторых операторов. Оператор или вообще запрещает раздавать интернет, или берет за это деньги. Однако есть способы обойти этот запрет. Здесь расскажу, что у меня получилось.
Как оператор узнает, что интернет раздается
Оператор на своей стороне смотрит на значение TTL в заголовках IP-пакетов, приходящих от клиента. Схематично выглядит так:
Если на телефоне открывать в браузере какую-нибудь страничку, то провайдеру от телефона будут приходить пакеты с TTL 64. Такие пакеты он пропускает.
Но если включить мобильную точку доступа, подключиться к ней, например, с планшета, и на планшете открыть страницу, то, проходя через мобильную точку доступа на телефоне TTL будет уменьшаться на 1 и провайдеру будут уходить пакеты с TTL 63, которые он будет отбрасывать. Уменьшение TTL при прохождении через роутер – это стандартизированное поведение роутера, такое поведение предусмотрено стандартом RFC791.
В этой ситуации выхода два – либо на планшете выставлять TTL 65, чтобы, проходя через телефон, провайдеру приходили пакеты с TTL 64, либо на самом телефоне делать так, чтобы он не уменьшал TTL.
Если wi-fi клиент – дектоп-машина с Windows или MacOS, то выставить TTL 65 можно одной командой.
Windows
Создать в реестре ключ
типа REG_QWORD со значением 65 (в десятичной системе)
MacOS
Команда в консоле:
Но если клиент планшет на iOS или другое устройство, где нельзя просто так выставить TTL, то придется воспользоваться вторым способом – заставить телефон не уменьшать TTL для проходящих через него пакетов. Это может быть не совсем просто.
Учим телефон не уменьшать TTL
Этот способ потребует root-права (инструкция) на android-телефоне или jailbreak на iOS. Т.к. я делал это на Android, то опишу как делать для него. Про iOS здесь инструкции не будет.
Для разных устройств, процедура будет отличаться, я постараюсь рассказать в чем будут заключаться эти отличия. В данном примере я использую OnePlus 3 и Android 8.0 Oreo
Итак, у нас есть Android телефон с root-правами. Узнаем, умеет ли ядро системы работать с TTL. Для этого смотрим содержимое двух файлов на телефоне (например с помощью приложения ES Проводник, оно умеет смотреть системные файлы):
В обеих должно быть упоминание TTL. В моем случае в ip_tables_targets упоминания ttl не было. Это значит, что ядро не умеет изменять TTL. Чтобы его научить этому, нам понадобится из исходников собрать модуль ядра и загрузить его в телефон.
Как собрать модуль ядра
- ОС – Linux или MacOS (можно собрать и на Windows – см.ниже)
- исходники ядра для конкретного устройства
- toolchain определенной версии и опредленной архитектуры
Я собирал модуль на Windows, но используя, Ubuntu-подсистему в Windows 10. Как ее включить я писал здесь. Если у вас не Win10, то придется ставить Ubuntu на VirtualBox-машину.
Для своего OnePlus 3 я брал исходники ядра здесь – https://github.com/OnePlusOSS/android_kernel_oneplus_msm8996 (msm8996 – это модель процессора Qualcomm Snapdragon 820 MSM8996). Исходники для Android 8.0 Oreo в ветке QC8996_O_8.0.0
Для других Oneplus-ов можно взять их рядом – https://github.com/OnePlusOSS. Для других моделей телефонов надо искать исходики где-то в интернете или на сайте производителя.
Toolchain – это утилиты для сборки кода под опредленную платформу. Узнать какая именно нужна для вашего телефона можно так:
В моем случае это aarch64 . Из этого вывода также понадобится версия gcc: 4.9 и версия ядра: 3.18.66-perf+
Далее идем сюда – https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/ и скачиваем нужный тулчейн. Версии для MacOS можно найти также по этой ссылке. В моем случае я скачал aarch64-linux-android-4.9 , здесь aarch64 и 4.9 совпадает с теми версиями которые мы узнали выше.
Теперь идем в консоль и готовимся к компиляции. Установим необходимые тулзы и склонируем репы с тулчейном и исходниками ядра в домашнюю папку:
В исходниках ядра смотрим в папку arch и подбираем нужную архитектуру. В моем случае в этой папке, нет aarch64 , но есть arm64 . Это то же самое, просто называется по другому. Буду использовать эту архитектуру. Указываем ее и путь до бинарей тулчейна в переменных окружения:
Теперь надо создать конфиг для будущей сборки. Возможные варианты конфигов в моем случае лежат в папке с исходниками ядра в arch/arm64/configs (вместо arm64 может быть ваша архитектура). Вспоминая версию ядра, которая установлена в телефоне, выбираю конфиг msm-perf_defconfig :
После того как конфиг создан, нам надо внести в него изменения, чтобы нужный нам модуль для фиксации TTL скомпилировался. Для этого выполняем:
Появится интерактиваная утилита, в которой нужно найти нужный модуль.
Переходя по дереву внутрь, и, найдя TTL Target support , нажать M, чтобы указать, что нужно скомпилировать этот модуль.
Сохраняем конфиг, выходим и собираем ядро с модулями:
Если ошибок не было, то в папке с исходниками должен появится файл net/netfilter/xt_HL.ko
Вот мой скомпилированный файл для OnePlus 3, Android 8.0.0 – xt_HL.ko. Можно сразу взять его, если совпадает модель телефона и версия системы.
Копируем его на телефон, и через adb shell пытаемся включить его (чтобы в adb shell работал su, надо в /system/build.prop добавить строку ro.debuggable=1 , например с помощью ES Проводника):
Если модуль загрузился, можно пробовать зафиксировать TTL:
И наконец, добавляем в автозагрузку телефона скрипт, который будет включать фиксацию TTL:
Такой скрипт я положил в /sdcard/fixttl.sh , и с помощью приложения ScriptManager, добавил в автозагрузку.
Всё! Теперь с этого телефона можно раздавать интернет!
Что такое TTL и как его изменить
TTL — это время жизни пакета данных в IP-протоколе. Данный показатель используется операторами мобильной связи для определения несанкционированных подключений к общей сети.
У большинства устройств на базе Android базовый TTL равен 64. Когда вы используете смартфон в качестве точки доступа и раздаете с него Wi-Fi, то время жизни пакета данных меняет свое значение с каждым новым подключенным к нему девайсом.
В результате провайдер получает уже два разных значения, которые приходят с одного устройства: собственный TTL и TTL принимающего Wi-Fi гаджета. В таком случае мобильный оператор может заблокировать доступ к сети Интернет, ограничить скорость или предложить перейти на новый тариф.
Чтобы свободно раздавать интернет со своего устройства, не переключаясь на новый тарифный план, может потребоваться смена значений TTL. Поэтому далее мы расскажем, как изменить TTL на андроид.
Внимание: для смены и фиксации TTL необходимо получить права суперпользователя — root. Только после этого вы сможете изменять ограничения, установленные провайдером или производителем.
Как изменить TTL
Если у вас есть root-права (суперпользователя), то вы без особых проблем сможете изменить TTL при помощи специального софта. В данном примере мы будем использовать утилиту TTL Master. Инструкция:
Шаг 1. Скачайте и установите приложение TTL Master через Play Маркет.
Шаг 2. Отключите все проводные и беспроводные соединения. Для этого активируйте «Режим полета» и только потом запустите TTL Master.
Шаг 3. Откроется главная страница, где в самом центре будет указан текущий TTL.
Шаг 4. Найдите поле «Введите TTL», укажите здесь необходимое значение (127 для Windows, 63 для устройств с другой ОС) и нажмите кнопку «Применить».
Шаг 5. Перезагрузите устройство и отключите «Режим полета», чтобы смена TTL вступила в силу.
Чтобы узнать, изменился ли TTL, еще раз запустите приложение. Новое значение отобразится на главном экране. Если сменить TTL не получилось, то у вас нет root-прав. Получите их, а затем повторите описанные выше действия.
Фиксация TTL
Если ядро вашего смартфона поддерживает фиксацию TTL, то вы также сможете обойти ограничение на раздачу интернета. Проверить наличие этой возможности можно с помощью любого бесплатного менеджера файлов. Например, Root Explorer. Инструкция:
Шаг 1. Через любой менеджер файлов перейдите по адресу по адресу «/proc/net/ip_tables_targets». Здесь найдите и запустите «ip_tables_targets».
Шаг 2. Убедитесь, что в файле есть строка TTL. Если ее нет, то ядро не поддерживает фиксацию TTL.
Если вы не можете открыть директорию «proc», «net» и найти файл «ip_tables_targets», то скорее всего у вас нет root-прав. Если файл удалось найти и в нем есть строка TTL, то фиксация TTL на андроид возможна.
Для фиксации TTL потребуется извлечь с телефона файл «boot.img», изменить его при помощи AndImgTool, найти и отредактировать код файла «init.rc» через Notepad++ (или любой другой аналогичный софт), а затем перепрошить полученный img-файл.
Так как для обычных пользователей способ считается слишком сложным и трудоемким (с массой технических нюансов), то для снятия ограничений на раздачу Wi-Fi достаточно будет просто изменить значение TTL при помощи любой бесплатной утилиты.
Источники:
https://4pda.ru/forum/index.php?showtopic=647126
https://4te.me/post/android-ttl-fix/
https://setphone.ru/rukovodstva/chto-takoe-ttl-i-kak-ego-izmenit/