Обход блокировок c помощью WARP, ProtonVPN, Подписки, BPB Worker Panel

О том, что это за символы, я писал здесь. Сначала через wireshark или спец. проги (есть на форуме) получаем фейк в виде бинарного .bin файла, открываем его в двоичном (HEX) редакторе и копируем последовательность байт в 16-ичном формате для вставки в текстовый конфиг + добавляем теги.

Начальный bin фейк можно получить, наблюдая за браузером в wireshark (сложнее, но эффективнее) или консольные проги, написанные форумчанами, могут создать фейк, если просто ввести адрес.

Без ПК будут проблемы.

Некоторым VPN сервисам могут мешать мусорные J пакеты (их тогда всё равно надо указывать, но с количеством 0). А ещё зависание может быть, когда меняются параметры ТСПУ (бывает несколько раз в сутки) или временно прерывается интернет у вас или засыпает Амнезия. Может случиться так, что в таких случаях, до ТСПУ не дойдёт фейк и он узнает, что это VPN соединение, имхо.

Warp без мусорных не работает, а proton работает, но сейчас в клиенты добавляют уже awg 2.0 и они не работают без мусорных (wg tunnel 4.3.1 ошибка выскакивает со значениями 0)

На разных провайдерах могут быть разные схемы борьбы с Протоном. В случае РТ всё довольно легко разрешается. Достаточно подставить в старые конфиги AWG новую строку I1 из генератора AWG Dikoz (первый и второй варианты), и все опять работает. Действительно, именно ozon.bin отвалился.
У меня работают разнообразные комбинации Протона. На голландском сервере подключение получается и только по I1, и в смеси с J, на норвежском в комбинации с мусорными J работает, а голый I1 нет.
А на МГТС ничего не работает.

Все без мусора работает на рт, просто Квик надо делать несколько разных от почты и от рутуба или другие искать , вчера тестировал в запрете 2 Протон, не нужны ему мусор , хватает i1-i4

Это именно proton там не работает или в целом amneziawg 1.5 и 2.0? Если awg, то печально, ведь из бесплатных “брендовых” без лимитов по трафику больше ничего не остается. Подписки не вариант (левые сервера и отваливаются постоянно). Конфиги с сайта vpnbook, tor.

на МГТС (у меня бюджетная организация) не работает именно Протон; AWG работает, но не с quic-фейками (поскольку quic полностью прибит), а с фейками sip-пакетов.

Есть hide.me еще. В бесплатной версии без лимита по трафику, но с лимитом по скорости где-то 1 МБ/c. Если не для ютуба, то сойдет) В паре с запретом пока работает

Наткнулся на, по-моему, единственный генератор параметров. Может, кому поможет)

ИИ Гугла мне написал вот такую программу для создания фейкового I1, я не программист, но чувствую, что как-то все слишком просто у него получилось.

import binascii

def generate_amnezia_i1(sni):
# Стандартный заголовок QUIC v1 Initial
# C1 (Long Header), 00000001 (Version), 08 (CID Length), AABBCCDDEEFF0011 (случайный CID)
header = “c10000000108aabbccddeeff0011000044”

# Минимально необходимая зашифрованная структура (имитация)
# Здесь мы вставляем SNI в правильное место TLS ClientHello
payload = "ad635cef024a885dcb66d1420a91a8c427e87d6cf8e08b563932f449412cddf77"

# Переводим домен в HEX
sni_hex = binascii.hexlify(sni.encode()).decode()

# Собираем строку (упрощенная модель для I1)
raw_hex = header + payload + sni_hex

# Дополняем нулями до 1200 байт (2400 символов)
padding_needed = 2400 - len(raw_hex)
final_hex = raw_hex + ("0" * padding_needed)

return final_hex.upper()

Впишите любой домен здесь:

print(generate_amnezia_i1(“pochta.ru”))

Привет всем. Подскажите, как получить i1 для AmneziaVPN? Есть список доменов в белой зоне с помощью wireshark доставал quic initial, также это делал с помощью тулзы payloadGen + правильно указываю нужны формат для амнезии через конвертер. Но ничего не работает с протоновскими серверами — единственное, что работает это вытащить i1 из другого конфигуратора warp, но хочется разобраться как самому их делать. Буду рад, если кто-то из добрых людей объяснит…

Здесь есть payloadgen

Это на питоне, да? Надо попробовать запустить - вдруг сработает)

Не заработает. Отступы где-то потерялись.
Вот так надо:

import binascii

def generate_amnezia_i1(sni):
    header = "c10000000108aabbccddeeff0011000044"
    payload = "ad635cef024a885dcb66d1420a91a8c427e87d6cf8e08b563932f449412cddf77"
    sni_hex = binascii.hexlify(sni.encode()).decode()
    raw_hex = header + payload + sni_hex
    padding_needed = 2400 - len(raw_hex)
    final_hex = raw_hex + ("0" * padding_needed)
    return final_hex.upper()

print(generate_amnezia_i1("pochta.ru"))

но какой-то сокращённый фейк получается. С нулями в конце.

ИИ говорит, что он payload добил нулями. Все последние I1 из генератора DIkoz он признал годными quic-initial, но отметил, что это какие-то пустышки от Xray для сайта www.google.com, которые используются по умолчанию. На I1 от ozon.bin он не сразу, но признал его таковым. В общем, довольно осведомленный ИИ, но на мою просьбу выдать что-нибудь для, например, pochta.ru выдавал постоянно что-то не то именно по формату, каждый раз извинялся и в конце концов выдал мне вот этот код на питоне. Вставьте, говорит, его в какой-нибудь python-онлайн, и получите требуемое.

Это не будет работать. У quic initial есть четкая структура, недостаточно просто перекодировать сни из строки в хекс и присобачить его к дефолтному хедеру - сни должен быть в server_name extension, а тот, в свою очередь, в tls clienthello. Это не говоря уже об отсутствии контрольной суммы и всего остального содержимого крипто пейлоада.

Это полный бред.
Почитайте хотя бы как устроен quic.
Там используется tls client hello без record layer.
Он затем пакуется в CRYPTO frame (хроме нарезает случайно на 20 кусков , перемежая паддингами, остальные - нет)
Потом это хозяйство шифруется через aes-gcm. key material получается особым образом через hkdf.
Если в 1 пакет tls не влезает из-за кибер, то еще и разбивается на несколько пакетов, в каждом свои CRYPTO frames с offset. Еще и перемешано может быть кусками между пакетами. В первом - конец, во втором - начало
Вы так просто питончиком раз два три без либ нифига не сделаете
Вам придется полностью сконструировать все описанное, правильно зашифровать и добавить нужные заголовки. Какие-то промежуточные варианты бесполезны, если DPI сечет именно SNI. Он будет расшифровывать quic обратно по стандарту, и если там какой-то ИИшный бред с конкатенацией на питоне, он это не расшифрует и белый список не сработает
Из-за сложности процесса функции заменить SNI и нет в zapret

изначальная задача была определить по значению I1, какой там используется SNI. А то как-то получается вслепую, срабатывает новый bin-файл, а под что маскируемся неизвестно. Эта задача не имеет решения?

Теперь по поводу замены SNI. Вот в github-проекте usque автор реализовал в консольной программе возможность при подключении к endpoint’у Cloudflare заменять SNI на такой, чтобы пустили. Это отлично срабатывает. Значит один программист может взять у другого нужный код и вставить в свою программу? Там, правда, есть нюанс, использование сторонних библиотек. Но такой мегамозг как ИИ, мне кажется, при правильном указании направления может сделать это за человека.

Если руками, то перегоняем hex в bin, отсылаем netcat, ловим шарком, раскрываем дерево CRYPTO, находим SNI. Или можно прогнать это через nfqws с --debug. Он покажет. Точно так же неткатом.

Я не спорю - все решаемо. Только это сложно и имеет вопросы, на которые не понятно как ответить.
Одно дело конструировать quic initial с ноля, а другое дело заменять.
Заменять сложно из-за произвольной фрагментации. Как сохранять фрагментацию, еще и меж-пакетную при условии увеличения размера кусков ? Можно, конечно, избыток засовывать в последний кусок, а недостаток снимать с последних, потом с предпоследних.
Но муторно это все. Либо нарушать фрагментацию, пересобирать все 1 куском, но тогда замененный quic не будет похож по внутренней структуре на оригинал

Тянуть чужой код - не вариант, если нужно сохранить компактность и согласованность решения. Не вариант и тянуть тяжелые либы. привлекательность EXEшника 3 мб куда меньше, чем 300 кб, причем увеличение из-за некритической функции

Тем более безумием выглядит подтаскивание GO кода в C проект. Это сразу монстр выходит

Для конструирования своего QUIC пакета гораздо проще применять связку curl + netcat, чтобы записать это в файл. Скрипт делается довольно легко. Нет никаких проблем сразу это перегнать в конфиг amnezia - echo, printf, xxd в помощь

Спойлер

изображение

как говорится, мопед не мой, но он отлично ездит