Coder Social home page Coder Social logo

Comments (18)

Baltazar500 avatar Baltazar500 commented on May 16, 2024 1

Да, сайты открылись даже без десктопного сертификата ( рашел не заморачиваться с втыканием и попробовать так - прокатило). Хром правда агрился, что "ваше подключение не защено". В хроме судя по всему помог выставленный флаг --ignore-certificate-errors выставленный для ряда проблемных сайтов а что сработало для curl я хз >_<

UPD: По поводу DPITunnel zhenyolka отписался на 4pda. Вот что написал по поводу переданного комментария касательно SIN :

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

вот что он написал по поводу потребления памяти :

Последнюю я так понимаю, тоже пробовали?
По поводу памяти, не знаю. Я ее прогонял через профайлер, да и сам тестировал некоторое время.

Раньше была утечка памяти из-за jni строк. В последней версии это исправил. К примеру, на одном из сяомявских девайсов DPITunnel работает уже 5 день без остановки сервиса. На данный момент потребление памяти такое же, как и при запуске - 130 МБ. Если использовать рут метод (без tun2http), должно быть раза в два меньше.

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

К сожалению, это не представляется возможным, по крайней мере в текущей реализации.
Для этого необходимо работать с сетью на более низком уровне, но поддержка raw-сокетов в Java отсутствует. Можно, конечно, использовать какую-нибудь низкоуровневую библиотеку с нативными вставками, однако, для этого нужен новый прокси-сервер, а также для доступа к raw сокетам на Android требуются root-права, Единственная проблема: это будет менее безопасно и стабильно, так как нет никаких гарантий что подобные библиотеки не сломаются с выходом новой версии JRE или Android.
Соответственно, если есть root-доступ, весь вопрос заключается лишь, как минимум, в разработке такого прокси-сервера. Также, вместо TunProxy можно было бы использовать iptables.
Я сейчас нашел две библиотеки, которые можно использовать, но обе обновлялись достаточно давно (больше 10 лет назад): jpcap и RockSaw.

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Я сейчас нашел две библиотеки, которые можно использовать, но обе обновлялись достаточно давно (больше 10 лет назад): jpcap и RockSaw.

Понятно. Т.е. рабочего решения нет ? Просто провайдер со своим DPI накуролесил так, что теперь без опции корректировки ttl DPI теперь не обойтись. По факту, как оказалось, достаточно регулировать хедер хоста + ttl и тогда обход без проблем отрабатывает. В GoodbyeDPI это "-r --set-ttl 4". До этого было достаточно модификации хоста, с чем успешно справлялось большинство средств обхода DPI, включая PoweTonnel. Сейчас всё накрылось медным тазом по этой причине и работает только GDPI :/

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Я сейчас нашел две библиотеки, которые можно использовать, но обе обновлялись достаточно давно (больше 10 лет назад): jpcap и RockSaw.

Понятно. Т.е. рабочего решения нет ? Просто провайдер со своим DPI накуролесил так, что теперь без опции корректировки ttl DPI теперь не обойтись. По факту, как оказалось, достаточно регулировать хедер хоста + ttl и тогда обход без проблем отрабатывает. В GoodbyeDPI это "-r --set-ttl 4". До этого было достаточно модификации хоста, с чем успешно справлялось большинство средств обхода DPI, включая PoweTonnel. Сейчас всё накрылось медным тазом по этой причине и работает только GDPI :/

Небольшая надежда на такой подход есть. Пока же под Android больше ничего нет кроме модификации SNI, отправлять фейковые пакеты здесь невозможно (им и должен выставляться низкий TTL) по причинам выше.
Остается надеяться на то, что автор GoodbyeDPI что-нибудь еще придумает, а это уже можно было бы портировать на другие операционные системы. Вторым рабочим остается как раз модификация SNI, я знаю, что ее основная проблема в том, что в Android-версии сейчас отсутствует фильтрация заблокированных/доступных сайтов, и, соотвественно, сертификаты подменяются в том числе там, где не надо, что ломает значительную часть сайтов, поэтому я думаю о том, чтобы добавить поддержку списков блокировок.
Лучше всего, конечно, было бы не решать такие проблемы техническим путем, а совсем избавиться от них, но на это надежды еще меньше.

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Вторым рабочим остается как раз модификация SNI

Я пытался разобраться с этим методом обхода, но он так для меня и не заработал. Сертификат впихнул в ОС/браузер/curl (тестировал и на десктопе), но результатов это не принесло. Возможно надо попробовать это скомбинировать с модификацией хоста, мб тогда прокатит. Я тогда ворох опций при тестах запускал по изменению хоста, а DPI сейчас к хосту очень щепительно стал относиться. В этот раз буду пробовать что-то одно за запрос.

поэтому я думаю о том, чтобы добавить поддержку списков блокировок.

В похожем проекте https://github.com/zhenyolka/DPITunnel такая фича уже есть и его автор тоже пилил обход посредством модификации SNI, но я не его проверял т.к. с PT у меня не прокатило и я не стал дёргаться. Мб ещё потестирую. К слову. Там что-то и про ttl было, но не уровне базового функционала, а как недокументированная фича.

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Я пытался разобраться с этим методом обхода, но он так для меня и не заработал. Сертификат впихнул в ОС/браузер/curl (тестировал и на десктопе), но результатов это не принесло. Возможно надо попробовать это скомбинировать с модификацией хоста, мб тогда прокатит. Я тогда ворох опций при тестах запускал по изменению хоста, а DPI сейчас к хосту очень щепительно стал относиться. В этот раз буду пробовать что-то одно за запрос.

Проверьте название сертификата, если это не PowerTunnel Root CA или выходит ошибка сертификата ("соединение не защищено"), то эта опция настроена неправильно.

Сведения о сертификате в браузере

В похожем проекте https://github.com/zhenyolka/DPITunnel такая фича уже есть и его автор тоже пилил обход посредством модификации SNI, но я не его проверял т.к. с PT у меня не прокатило и я не стал дёргаться. Мб ещё потестирую. К слову. Там что-то и про ttl было, но не уровне базового функционала, а как недокументированная фича.

Я посмотрел это приложение, для реализации подмены SNI предлагается установить готовый корневой сертификат и подписанный автором программы, таким образом автор может вручную расшифровать любой защищенный HTTPS-трафик пропущенный через это приложение, если он захочет и будет располагать этим трафиком (или если его заставят и принесут этот трафик), поэтому я бы крайне не рекомендовал использовать в этом приложении подмену SNI (PowerTunnel генерирует корневой сертификат локально на устройстве и он уникален для каждой установки). У меня это приложение крашится постоянно независимо от версии на нескольких разных устройствах и ест под 500МБ памяти, причем не просто не могу обойти блокировки, а вообще теряю соединение с интернетом. Про TTL ничего не нашел.
Нужно сообщить об этом автору программы, если, конечно, такая реализация не была намеренной (с учетом всех последствий описанных выше).

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Проверьте название сертификата, если это не PowerTunnel Root CA или выходит ошибка сертификата ("соединение не защищено"), то эта опция настроена неправильно.

Погонял десктопный PT, по крайней мере мне теперь мне было более-менее ясно с какими опциями "набегать" на DPI. Отрубил всё под корень кроме "SNI Tricks" и опций "Allow invalid packets", "Allow requests to origin server" и обход при выборе "Fake SNI" таки сработал (остальные трюки не прошли). Но это работает лишь для https. Что делать с http в данном случае я хз. Хост без ttl трогать бесполезно :(

Я посмотрел это приложение, для реализации подмены SNI предлагается установить готовый корневой сертификат и подписанный автором программы, таким образом автор может вручную расшифровать любой защищенный HTTPS-трафик пропущенный через это приложение, если он захочет и будет располагать этим трафиком (или если его заставят и принесут этот трафик), поэтому я бы крайне не рекомендовал использовать в этом приложении подмену SNI (PowerTunnel генерирует корневой сертификат локально на устройстве и он уникален для каждой установки).

Однако. Это полезная информация. Спасибо за информацию и предупреждение.

У меня это приложение крашится постоянно независимо от версии на нескольких разных устройствах и ест под 500МБ памяти, причем не просто не могу обойти блокировки, а вообще теряю соединение с интернетом.

Да оно в принципе не особо стабильное. У меня оно крешилось по велению левой пятки. В последний раз помогло обнуление настроек программы.

Про TTL ничего не нашел.

А, вот https://4pda.ru/forum/index.php?showtopic=981039&view=findpost&p=97979697 нашёл :

DPI Tunnel не предназначена для этого. Но может обойти ограничение на раздачу, так как по факту фиксирует ttl.

Нужно сообщить об этом автору программы, если, конечно, такая реализация не была намеренной (с учетом всех последствий описанных выше).

Нужно сообщить об этом автору программы, если, конечно, такая реализация не была намеренной (с учетом всех последствий описанных выше).

Могу передать ;) Автор в треде на 4pda общается с пользователями.

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Погонял десктопный PT, по крайней мере мне теперь мне было более-менее ясно с какими опциями "набегать" на DPI. Отрубил всё под корень кроме "SNI Tricks" и опций "Allow invalid packets", "Allow requests to origin server" и обход при выборе "Fake SNI" таки сработал (остальные трюки не прошли). Но это работает лишь для https. Что делать с http в данном случае я хз. Хост без ttl трогать бесполезно :(

Я думаю я должен был это задокументировать, но напишу пока здесь: я разделил параметры обхода блокировок на два блока: HTTP (для незашифрованного трафика) и HTTPS (для зашифрованного трафика). В незашифрованном трафике можно прочитать заголовок Host, по которому DPI и осуществляют блокировки - в этом заголовке находится адрес сайта; для фильтрации HTTPS трафика DPI ищут SNI (Server Name Indication), который содержит имя сервера в незашифрованном виде - заголовок Host зашифрован. Таким образом, требуется разделить и логику обхода блокировок - трюки для HTTP не помогут для обхода HTTPS-блокировок и наоборот.
Но здесь можно заметить одну интересную вещь: если поменять заголовок Host в HTTP на фейковый, то обойти блокировку не получится, вернее, сайт не будет работать, но если установить фейковый SNI, сайт не сломается. Таким образом, если включена модификация SNI, остальные опции для обхода HTTPS-блокировок не нужны.
Внимательный пользователь заметит опцию "Применять обход HTTP для HTTPS" - данная функция на данном этапе развития цензуры бесполезна и нужна только для таких экстремальных случаев, когда вам впаривают государственный корневой сертификат, а затем разбирают ваш HTTPS трафик как обычный HTTP. Для того, чтобы эта опция в такой ситуации работала на Android, необходимо либо отключить режим VPN и использовать PowerTunnel как прокси, либо включить модификацию SNI в нагрузку, чтобы приложение смогло расшифровать HTTP заголовки и применить выбранные трюки.

А, вот https://4pda.ru/forum/index.php?showtopic=981039&view=findpost&p=97979697 нашёл :

Про TTL он что-то явно путает, поскольку, если я не ошибаюсь, единственный способ изменить TTL на Android - отредактировать системный файл, и то для этого требуется root-доступ.
На мой взгляд, автор не очень опытен, поэтому и крашится с высокой нагрузкой ЦП - не очень грамотное использование прослойки JNI для вызовов нативного кода на C/C++, да и сам код по-видимому достаточно медленный.
Может у кого-то блокировки и обходит, но у меня нет. Можно грешить на баги фейкового локального DNS-сервера для извлечения доменных имен HTTPS при работе через tun2http (хотя какой в этом смысл, если tun2http и так извлекает SNI), но в режиме обычного прокси он тоже не работает. Хотел как-то прислать Pull Request, но все руки не доходят.
Злого умысла в использовании сертификата я не вижу, но это действительно не очень безопасно. В таком случае я надеюсь, что там нигде случайно в исходном коде пароль от него не записан.

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Сейчас вспомнил, что перепутал некоторые вещи - автор приложения выше не сможет расшифровать попавший к нему в руки трафик пропущенный через приложение (для этого нужен ключ дочернего сертификата используемого для подписи HTTPS-сертификатов, они генерируются на лету),, но может выпустить дочерний сертификат, который можно использовать для успешной MITM-атаки - он автоматически признается доверенным. Для этого даже не нужен ключ от корневого сертификата, так как благодаря этому приложение генерирует сертификаты для каждого сайта на лету.
Опасность такого сценария гораздо выше, поскольку из автора программы не нужно выбивать ключ от сертификата, но вероятность такого сценария чуть ниже, чем описанного ранее уже зачеркнутым текстом (обе вероятности крайне малы).

UPD: нет, я опять все перепутал, трафик расшифровать можно, причем автор загрузил в репозиторий (и в приложение) в том числе и private key, т.е. никакой ключ от него получать не нужно - он уже в публичном доступе. Этот сертификат ни в коем случае нельзя устанавливать. Дополнительные сведения.

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Для того, чтобы эта опция в такой ситуации работала на Android, необходимо либо отключить режим VPN и использовать PowerTunnel как прокси, либо включить модификацию SNI в нагрузку, чтобы приложение смогло расшифровать HTTP заголовки и применить выбранные трюки.

Так у меня ситуация всё-таки другая - с https и обходом через фейковый SNI всё ОК, а вот с http - облом.

К слову. На смартфоне c PT 1.9 и фейковым SNI обход https провернуть не удалось. Вот какой выхлоп даёт curl (curlc в наличии, агент оттуда) при обращениии к рутрекеру через прокси PT :

curl --cacert /data/data/ru.krlvm.powertunnel.android/files/powertunnel-root-ca.pem -svikL -x 'http://127.0.0.1:8085' 'https://rutracer.org'
*   Trying 127.0.0.1:8085...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to rutracer.org:443
> CONNECT rutracer.org:443 HTTP/1.1
> Host: rutracer.org:443
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 502 Bad Gateway
HTTP/1.1 502 Bad Gateway
< Content-Length: 29
Content-Length: 29
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
<

* Received HTTP code 502 from proxy after CONNECT
* CONNECT phase completed!
* Closing connection 0

Причём такой же выхлоп идёт даже при заглушенной вафле.

Хром (прокси задан через /data/local/chrome-command-line) ругается на то, что :

Не удается получить доступ к сайту Веб-страница по адресу https://rutracker.org/, возможно, временно недоступна или постоянно перемещена по новому адресу.
ERR_TUNNEL_CONNECTION_FAILED

Сертификат PT воткнут в ОС (для чистоты эксперимента).

К слову о сертификате. Мб стоит сделать его установку по тому же принципу как это реализовано в AdGuard ? А то поначалу мне нужен был SNI, но не нужна установка сертификата из-за чего PT хоть и запускал прокси, но попап с установкой сертификата не убирал. А если я закрывал попап, то прокси вырубался.

Ещё момент - если удалить сертификат из системы, то при рестарте прокси в PT с включённым SNI аж по 4 раза начинает предлагаться установка сертификата, пока PT не перезапустишь (тогда как и положено предлагается 1 раз).

UPD: нет, я опять все перепутал, трафик расшифровать можно, причем автор загрузил в репозиторий (и в приложение) в том числе и private key, т.е. никакой ключ от него получать не нужно - он уже в публичном доступе. Этот сертификат ни в коем случае нельзя устанавливать.

Так. Я уже тоже запутался :D :D :D Что ему написать ? ))) Пока ничего не писал )))

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Если я не ошибаюсь, то AdGuard без установки сертификата фильтрует рекламный трафик по IP-адресам и доменным именам, с установленным сертификатом он вмешивается в сам HTTPS-трафик и работает как обычное расширение AdBlock в браузере.
Обход через SNI же бесполезен без установки сертификата, поскольку изменить необходимые данные без повторного шифрования нельзя.
С curl я не проверял, я бы рекомендовал удалить сертификат из Android (Настройки - Безопасность - Другие параметры безопасности - 1) Сертификаты пользователя и 2) Сертификаты безопасности (вкладка Пользователь)), а затем очистить данные приложения и включить SNI заново (рекомендуемая опция - Портить SNI), после этого открыть в браузере https:// сайт и проверить сертификат (нажать на замочек в адресной строке для подробностей).

По поводу DPITunnel, я в итоге пришел к выводу, что опция обхода SNI здесь абсолютно дырявая, она позволит без проблем MITMить и расшифровать трафик третьим лицам, поскольку в приложение зашит корневой сертификат с открытым и закрытым ключом - если кому-то не повезло его установить, его необходимо удалить из системы, так как удаления одного только приложения недостаточно. Шансы атаки конечно бесконечно малы, поскольку, естественно, приложение не настолько широко используется, как, например, Google Chrome, но дыру в безопасности оно может создать серьезную, если злоумышленник узнает о том, что этот сертификат был установлен.

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Если я не ошибаюсь, то AdGuard без установки сертификата фильтрует рекламный трафик по IP-адресам и доменным именам, с установленным сертификатом он вмешивается в сам HTTPS-трафик и работает как обычное расширение AdBlock в браузере.

Гм. Я имел ввиду принцип установки и проверки сертификата, как это реализовано в AdGuard, а не принцип фильтрации посредством оного. Т.е. я имел ввиду сделать отдельный раздел или типа того, где есть тумблер для включения SNI. Дёргаешь тумблер - чекается установлен ли сертификат и если да - включается. Нет - предлагаеся установка. Плюс можно сделать такую же "альтернативную" установку в бразеры, которые не зависят от системных сертификатов типа firefox'a или oper'ы classic. Плюс в дополнение можно сделать сохранение сертификата на накопитель. В общем всё по лекалам AdGuard'a ))) т.к. сейчас манипуляции с сертификатом не слишком удобны, о чём я и писал выше :

А то поначалу мне нужен был SNI, но не нужна установка сертификата из-за чего PT хоть и запускал прокси, но попап с установкой сертификата не убирал. А если я закрывал попап, то прокси вырубался.

Обход через SNI же бесполезен без установки сертификата, поскольку изменить необходимые данные без повторного шифрования нельзя.

Это я прекрасно понимаю ;)

С curl я не проверял

Всё-nаки гляньте на досуге, мне кажется там всё видно куда наглядней чем в браузере (дополнительно тестирую на хроме)

я бы рекомендовал удалить сертификат из Android (Настройки - Безопасность - Другие параметры безопасности - 1) Сертификаты пользователя и 2) Сертификаты безопасности (вкладка Пользователь)), а затем очистить данные приложения и включить SNI заново (рекомендуемая опция - Портить SNI), после этого открыть в браузере https:// сайт и проверить сертификат (нажать на замочек в адресной строке для подробностей).

На десктопе у меня работал только трюк "FAKE" поэтому я его на смарте и применял. Тем не менее, я последовал вашим рекомендациям (удалил сертификат а потом сделал "pm clear ru.krlvm.powertunnel.android" и заново настроил приложение с включённой опцией "Портить SNI", установив впоследствии сертификат) и изменений не увидел.

Заблокированные сайты всё так же ловят 502 Bad Gateway, в хроме это ERR_TUNNEL_CONNECTION_FAILED. Разве что стали нормально работать другие https - сайты. До этого они ловили loop :

curl --cacert /data/data/ru.krlvm.powertunnel.android/files/powertunnel-root-ca.pem -svikL -x 'http://127.0.0.1:8085' 'https://ya.ru'|xidel -se '//title' - 2>/dev/null
*   Trying 127.0.0.1:8085...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to ya.ru:443
> CONNECT ya.ru:443 HTTP/1.1
> Host: ya.ru:443
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
< Connection: keep-alive
< Via: 1.1 littleproxy
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /data/data/ru.krlvm.powertunnel.android/files/powertunnel-root-ca.pem
  CApath: /system/etc/security/cacerts
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* CONNECT phase completed!
* CONNECT phase completed!
{ [5 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [89 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [2389 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [205 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=*.xn--d1acpjx3f.xn--p1ai; O=PowerTunnel; OU=PowerTunnel
*  start date: Jan  8 12:56:01 2020 GMT
*  expire date: Jan  8 13:00:57 2021 GMT
*  issuer: CN=PowerTunnel Root CA; O=PowerTunnel; OU=PowerTunnel
*  SSL certificate verify ok.
} [5 bytes data]
> GET / HTTP/1.1
> Host: ya.ru
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br
>
{ [5 bytes data]
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Content-Length: 154
< Content-Type: text/html
< Date: Thu, 07 Jan 2021 13:00:58 GMT
< Location: http://ya.ru/
< X-Content-Type-Options: nosniff
< set-cookie: is_gdpr=0; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:58 GMT
< set-cookie: is_gdpr_b=CIWobhDQFigC; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:58 GMT
<
{ [5 bytes data]
* Ignoring the response-body
{ [154 bytes data]
* Connection #0 to host 127.0.0.1 left intact
* Issue another request to this URL: 'http://ya.ru/'
* Hostname 127.0.0.1 was found in DNS cache
*   Trying 127.0.0.1:8085...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#1)
> GET http://ya.ru/ HTTP/1.1
> Host: ya.ru
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br
> Proxy-Connection: Keep-Alive
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Content-Length: 154
< Content-Type: text/html
< Date: Thu, 07 Jan 2021 13:00:59 GMT
< Location: http://ya.ru/
< X-Content-Type-Options: nosniff
< set-cookie: is_gdpr=0; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
< set-cookie: is_gdpr_b=CIWobhDQFigC; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
<
* Ignoring the response-body
{ [154 bytes data]
* Connection #1 to host 127.0.0.1 left intact
* Issue another request to this URL: 'http://ya.ru/'
* Found bundle for host 127.0.0.1: 0x7fa0e00840 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#1) with proxy 127.0.0.1
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#1)
> GET http://ya.ru/ HTTP/1.1
> Host: ya.ru
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br
> Proxy-Connection: Keep-Alive
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Content-Length: 154
< Content-Type: text/html
< Date: Thu, 07 Jan 2021 13:00:59 GMT
< Location: http://ya.ru/
< X-Content-Type-Options: nosniff
< set-cookie: is_gdpr=0; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
< set-cookie: is_gdpr_b=CIWobhDQFigC; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
<
* Ignoring the response-body
{ [154 bytes data]
* Connection #1 to host 127.0.0.1 left intact
* Issue another request to this URL: 'http://ya.ru/'
* Found bundle for host 127.0.0.1: 0x7fa0e00840 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#1) with proxy 127.0.0.1
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#1)
> GET http://ya.ru/ HTTP/1.1
> Host: ya.ru
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br
> Proxy-Connection: Keep-Alive
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Content-Length: 154
< Content-Type: text/html
< Date: Thu, 07 Jan 2021 13:00:59 GMT
< Location: http://ya.ru/
< X-Content-Type-Options: nosniff
< set-cookie: is_gdpr=0; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
< set-cookie: is_gdpr_b=CIWobhDQFigC; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
<
* Ignoring the response-body
{ [154 bytes data]
* Connection #1 to host 127.0.0.1 left intact
* Issue another request to this URL: 'http://ya.ru/'
* Found bundle for host 127.0.0.1: 0x7fa0e00840 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#1) with proxy 127.0.0.1
* Connected to 127.0.0.1 (127.0.0.1) port 8085 (#1)
> GET http://ya.ru/ HTTP/1.1
> Host: ya.ru
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br
> Proxy-Connection: Keep-Alive
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Content-Length: 154
< Content-Type: text/html
< Date: Thu, 07 Jan 2021 13:00:59 GMT
< Location: http://ya.ru/
< X-Content-Type-Options: nosniff
< set-cookie: is_gdpr=0; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
< set-cookie: is_gdpr_b=CIWobhDQFigC; Path=/; Domain=.ya.ru; Expires=Sat, 07 Jan 2023 13:00:59 GMT
<

в хроме это было "ERR_TOO_MANY_REDIRECTS". После сброса редиректы исчезли. Фейковый SNI, как и ранее всё так же ничего не дал. Обычные http - сайты открываются нормально. Заблокированные соотвественно кажут заглушку.

По поводу DPITunnel, я в итоге пришел к выводу, что опция обхода SNI здесь абсолютно дырявая

В общем, этот абзац автору и передам ;)

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Ошибка 502 / ERR_TOO_MANY_REDIRECTS и есть основная проблема при использовании этого способа, поскольку многие известные веб-сервисы и сайты дополнительно проверяют безопасность соединения, что и приводит к этой проблеме.
Dailymotion, Rutracker и Lostfilm открываются без проблем в том числе на Android.
Замечание по поводу Dailymotion и некоторых других ресурсов: он выдает сообщение "ошибка проверки подлинности", т. е. полноценно пользоваться сервисом в таком режиме невозможно из-за их политики безопасности, но видео воспроизводятся. Однако, на Android он вообще не загружается из-за проблемы с сертификатами CDN-серверов, используемых Dailymotion, что решается использованием списков блокировок - стоит добавить туда один лишь dailymotion.com, и все загружается нормально (так как сертификаты CDN не подменяются), поэтому я надеюсь выпустить версию с поддержкой списков (и выгрузкой сертификатов для установки в браузеры) в ближайшие несколько месяцев - это решит проблему со сломанными Яндексом и прочими незаблокированными сервисами и CDN.

Опцию "Очистить SNI" следовало бы назвать "Удалить SNI", поскольку не отправляет SNI вообще, что может вызвать "негативную" реакцию DPI или веб-сервера.
Опция "Портить SNI" всего лишь добавляет точку после имени сервера в оригинальном SNI.

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Ошибка 502

502 Bad Gateway через прокси PT я наблюдаю даже при дезактивированной вафле. Причём выхлоп curl'a что при включённой вафле, что при выключенной идентичен. Будто траффик вообще не идёт через прокси.

ERR_TOO_MANY_REDIRECTS

После сброса приложения и сертификата проблема ушла. Сейчас тот же яндекс, который колбасило редиректами открывается нормально. Как сброс на это повлиял я ХЗ.

Dailymotion, Rutracker и Lostfilm открываются без проблем в том числе на Android

Как раз рутрекер и лостфильм я и проверял

Опцию "Очистить SNI" следовало бы назвать "Удалить SNI", поскольку не отправляет SNI вообще, что может вызвать "негативную" реакцию DPI или веб-сервера.
Опция "Портить SNI" всего лишь добавляет точку после имени сервера в оригинальном SNI.

Для меня на Андроиде пока не сработал ни один из вариантов. На десктопе работает только фейк - хост.


p.s. В прошлом посте забыл упомянуть, что в случае, если используются браузеры с собственными сертификатами, как firefox, то нужен ещё один тумблер для включения SNI без установки сертификата. Имхо.

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

Я рискну предположить, что это каким-то образом может быть связано с политикой безопасности устройства, попробуйте на другом, поскольку если на ПК работает, то обойти блокировку таким способом точно возможно в данной сети

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

Я рискну предположить, что это каким-то образом может быть связано с политикой безопасности устройства, попробуйте на другом, поскольку если на ПК работает, то обойти блокировку таким способом точно возможно в данной сети

Мне почему-то кажется, что PT по каким-то причинам не обходит DPI этим методом (SNI трюками) на смарте :/

ya.ru
lostfilm.tv

Может стоит запилить логгирование, дабы стало ясно, где собака порылась ?

from powertunnel-android.

krlvm avatar krlvm commented on May 16, 2024

А если с телефона подключиться к прокси PT на ПК с включенным SNI, то заблокированные сайты открываются?

from powertunnel-android.

Baltazar500 avatar Baltazar500 commented on May 16, 2024

А если с телефона подключиться к прокси PT на ПК с включенным SNI, то заблокированные сайты открываются?

А разве у десктопного и андроидного PT одинаковые сертификаты ? Просто придётся довтыкать/перетыкать сертификат. Ну да ладно, проверю.

К слову, хотел воткнуть системным сертификатом /data/misc/keystore/user_0/1000_CACERT_PowerTunnel+PRoot+PCA дабы не вводить пин-код, но openssl им подавился, пришлось его натравливать на pem (и втыкать pem), дабы снять хэш-имя для перемещения в /system/etc/security/cacerts/

from powertunnel-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.