Безопасность
January 17

Как я приваткей у Happ нашел

Реверсить чужое приложение — это как копаться в грязном белье прачечной твоего района. Шанс найти криптокошелёк меньше, чем шанс что тебя увидят владельцы этой одежды. Которые не только осудят, но и отпиздят. А следом отпиздят мимо проходящие зеваки и все, кто прочитает новость о тебе на следующий день в местном паблике. Мистер нюхач, ты точно этого хотел?

Но любопытство — штука сильнее инстинкта самосохранения. Happ забрал себе красивое начало ссылки — `crypt`. Звучит серьёзно. Криптография, шифрование, военные технологии Гренландии. Что же там такого секретного, что понадобился целый crypt для передачи подписок?

Спойлер: ничего.

Что такое Happ и зачем он нужен

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

Без проводника есть ВК, есть Телеграм. Там тоже контент. Но не такой. И главное - зачем вообще лишать человека выбора?

Официальная причина блокировок - безопасность. Мошенники, террористы, экстремисты. Звучит страшно. Только вот эти ребята могут поселиться в любом мессенджере и соц платформе. Хоть в Одноклассниках. Хоть в комментариях на Авито.

Я не против хорошей отечественной платформы. Наоборот, по-доброму завидую WeChat у Китая и хочу такое же пиздатое мастер приложение у нас.

Там есть всё: платёжка, короткие видео, мессенджер, магазины. Кошелёк встроен прямо в приложение. Вечером листаешь ленту, натыкаешься на какую-то бесполезную хуйню, а утром курьер её уже тебе доставил до порога. Импульсивные покупки возведены в хороший бизнес.

Это добрый пиар. Функционал, удобство, дизайн, ощущение надёжности. Люди приходят сами, потому что реально удобно и потому-что весь бизнес там, считай, у тебя нет выбора. ВитькаХуанСи сосед твой, зарядки собирает и продает только там, иди ставь приложение.

А блокировка конкурентов - это не пиар... а... другая статья в Bruce Stars.

Happ сделан нормально. UI удобный, работает стабильно. Подписки добавляются через ссылку типа `happ://crypt4/xxxxx` - кликнул и готово или же с помощью обычного URL.

Четыре crypt'а

Открываю ссылку на подписку, а там варианты: `crypt`, `crypt2`, `crypt3`, `crypt4`. Четыре версии. Зачем столько?

Полез в документацию и в кишки приложения. Выяснилось:

crypt4 - актуальная версия. RSA-4096, свежий ключ. Это то, что используется сейчас.

А остальные три - наследие. Остались для обратной совместимости, чтобы старые ссылки продолжали работать:

crypt - RSA-1024, самая первая версия. Работала только для коротких ссылок до 110 символов - ограничение алгоритма.
crypt2 - RSA-4096. Сделали, когда ссылки стали длиннее.
crypt3 - тот же RSA-4096, тот же ключ что и crypt2. Почему два названия - история умалчивает.

Итого: не четыре параллельные системы, а одна система с историей. Актуален crypt4, остальное - чтобы у людей со старыми ссылками ничего не сломалось.

Зачем вообще шифровать

А вот тут интересно. Я думал, это театр безопасности - шифрование ради шифрования. Оказалось, всё прагматичнее.

Официальная документация Happ говорит прямо:

"Шифрование ссылок предназначено для скрытия адреса подписки от пользователя. После добавления зашифрованной подписки пользователь не может редактировать, просматривать или делиться конфигурациями серверов."

Важный момент: это не Happ заставляет. Happ просто даёт инструмент. Провайдер сам решает - выдать тебе обычный URL или завернуть в crypt4.

Провайдер может дать обычную ссылку - добавляй куда хочешь: Sing-box, Clash Verge, V2rayN, да хоть в блокнот записывай. Никаких ограничений.

А может выдать crypt4. Тогда:

  • Привязка к Happ. Зашифрованную ссылку понимает только Happ. Хочешь другой клиент - нужен реальный URL, а его ты не видишь.
  • Ограничение по HWID. Провайдер может привязать подписку к конкретным устройствам. Эта фича работает только в Happ - вот провайдер и выдаёт crypt4, чтобы ты не убежал в другое приложение и не обошёл лимит.
  • Защита от шеринга. Ты не видишь реальный URL сервера - не можешь скинуть другу. Провайдер продал подписку тебе, а не тебе и твоим десяти друзьям. Провайдер может выставить лимит: 1 устройство.
  • Контроль. Провайдер знает, что его пользователи сидят в Happ. Может использовать все фичи платформы: лимиты устройств, аналитику, push-уведомления.

Короче, шифрование - инструмент для провайдера. Не хороший и не плохой. Зависит от того, как его используют.

Одни провайдеры дают открытые ссылки - пользуйся где хочешь. Другие заворачивают в crypt4 - сиди в Happ. Третьи дают и то, и то - выбирай сам. Рынок.

А теперь фокус

Приватные ключи для расшифровки зашиты прямо в приложение. В бинарник. Один и тот же набор ключей у всех пользователей - у тебя, у меня, у провайдера из Казахстана.

Любой человек с базовыми навыками реверса может вытащить эти ключи и расшифровать любую crypt-ссылку. Уже есть телеграм-боты, которые делают это автоматически, примерно 5 приложений = 5 человек смогли отреверсить иконку приложения для сборки пазла в виде приваткей.

Защита работает ровно до того момента, пока пользователь не загуглит "happ decrypt". После этого - всё, ссылка раскрыта, добавляй куда хочешь.

Защита уровня «закрыл глаза - меня не видно» или когда « в гитхаб репо есть .env»

Для кого это работает

Для обычного пользователя - работает отлично. Он не полезет реверсить приложение. Не будет искать ботов в телеге. Добавит подписку, она заработает, он пойдёт смотреть видосики. Happ его устраивает. Миссия выполнена. Захочет юзать на втором девайсе, то купить еще одну подписку.

Для провайдера - работает на 95%. Большинство пользователей не обойдут защиту. Не потому что не смогут - потому что им и так норм. Оставшиеся 5% технарей найдут бота за минуту, но провайдер с этим живёт норм.

Для тебя, если хочешь Sing-box или клэш - зависит от провайдера. Если он выдаёт crypt4 - либо проси открытую ссылку, либо гугли расшифровку, либо ищи другого провайдера.

Итого

Happ - нормальное приложение, существует с 2024 года. Делает свою работу, даёт доступ к заблокированным сервисам. UI приятный, работает стабильно. Пользуйтесь на здоровье.

За это время они успели сменить схему шифрования четыре раза. Crypt, crypt2, crypt3, crypt4. Это как менять замок на двери каждые три месяца, потому что ключ опять нашли под ковриком. Кстати, актуален crypt4, остальные живут для обратной совместимости.

Методология разработки Happ: сломали → пофиксили → сломали → пофиксили → назвали это «эволюцией».

Шифрование ссылок - инструмент для провайдеров. Happ его предоставляет, провайдер решает использовать или нет. Кто-то даёт открытые ссылки, кто-то заворачивает в crypt4 ради HWID-лимитов и контроля. Выбор за провайдером, а потом за тобой — у какого провайдера покупать. Или ты уже знаешь что гуглить :)

Кстати бот для дешифрования текста в ссылку на подписку: @happdecrypterbot

Приваткей всех 4 версий продаю за 100 баксов: @bruce_club или попож солью в Bruce Stars

crypt public key

(Максимальная длина текста: 110 символов)

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxsS7PUq1biQlVD92rf6eXKr9o
G1/SrYx3qWahZP+Jq35m4Wb/Z+mB6eBWrPzJ/zZpZLWLQorcvOKt+sLaCHyH1HLN
kti4jlaEQX6x97XgBm8GK08+lLLWquFDhWRNxsrfzJyNdpVopzBRmCJKTc8ObYyP
brv9T35a8Kd5WqjnUwIDAQAB
---—END PUBLIC KEY-----

crypt2 public key

(Максимальная длина текста: 450 символов)

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5cL2yu9dZGnNbs4jt222
NugIqiuZdXKdTh4IgXZmOX0vdpW+rYWrPd1EObQ3Urt+YBTK5Di98EBjYCPr8tus
aVRAn3Vaq41CDisEdX35u1N8jSHQ0zDOtPdrvJtlqShib4UI6Vybk/QSmoZVbpRb
67TNsiFqBmK1kxT+mbtHkhdT2u+hzNLQr0FtJR1+gC+ELKZ48zZY/d3YSSRSb+dx
Und4FH31Kz68VKqlajISSzIrGQWc/zqSlihIvfnTPNX3pCyJpwAuYXieWSRDAogr
wGwoiN++y14OLYHrNlqzoJ44WM3Tbm7x1Dj/8QI3tzwixli/0JmqQ19ssETDbVQ9
0asoPc4QFhyc4c+PH62AdK1S+ysXt5uqEujRBk3rC53l65IOVXSTZgsLwzS7EFY9
lZszJXUJJh5GB9heO8c7PNCTOxno3l4684iHFJuxnkS0DLbdzCXfovwfIP8q3lj7
UJswPKVHkCLNSUutNke+xex1J3YEdvebJzv7Dk78PqLRmLWaEsAhQanXs93aTxEk
d/p7hgFV30QozVQ/oNAvmQSVIBd6zCGM3of3R3tmDkDNGQGrY4MBTX+cTJGYstdh
QXxj1oFZEG16F/0GGXG+sia67gYM3OC7RWyBOzULsEmupIiM8Vdx1iErw7yvJSC4
IsIsWZD8JAmZtLBqEQ/TvfcCAwEAAQ==
-----END PUBLIC KEY-----

crypt3 public key

(Максимальная длина текста: 450 символов)

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlBetA0wjbaj+h7oJ/d/h
pNrXvAcuhOdFGEFcfCxSWyLzWk4SAQ05gtaEGZyetTax2uqagi9HT6lapUSUe2S8
nMLJf5K+LEs9TYrhhBdx/B0BGahA+lPJa7nUwp7WfUmSF4hir+xka5ApHjzkAQn6
cdG6FKtSPgq1rYRPd1jRf2maEHwiP/e/jqdXLPP0SFBjWTMt/joUDgE7v/IGGB0L
Q7mGPAlgmxwUHVqP4bJnZ//5sNLxWMjtYHOYjaV+lixNSfhFM3MdBndjpkmgSfmg
D5uYQYDL29TDk6Eu+xetUEqry8ySPjUbNWdDXCglQWMxDGjaqYXMWgxBA1UKjUBW
wbgr5yKTJ7mTqhlYEC9D5V/LOnKd6pTSvaMxkHXwk8hBWvUNWAxzAf5JZ7EVE3jt
0j682+/hnmL/hymUE44yMG1gCcWvSpB3BTlKoMnl4yrTakmdkbASeFRkN3iMRewa
IenvMhzJh1fq7xwX94otdd5eLB2vRFavrnhOcN2JJAkKTnx9dwQwFpGEkg+8U613
+Tfm/f82l56fFeoFN98dD2mUFLFZoeJ5CG81ZeXrH83niI0joX7rtoAZIPWzq3Y1
Zb/Zq+kK2hSIhphY172Uvs8X2Qp2ac9UoTPM71tURsA9IvPNvUwSIo/aKlX5KE3I
VE0tje7twWXL5Gb1sfcXRzsCAwEAAQ==
-----END PUBLIC KEY-----

crypt4 public key

(Максимальная длина текста: 450 символов)

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3UZ0M3L4K+WjM3vkbQnz
ozHg/cRbEXvQ6i4A8RVN4OM3rK9kU01FdjyoIgywve8OEKsFnVwERZAQZ1Trv60B
hmaM76QQEE+EUlIOL9EpwKWGtTL5lYC1sT9XJMNP3/CI0gP5wwQI88cY/xedpOEB
W72EmOOShHUm/b/3m+HPmqwc4ugKj5zWV5SyiT829aFA5DxSjmIIFBAms7DafmSq
LFTYIQL5cShDY2u+/sqyAw9yZIOoqW2TFIgIHhLPWek/ocDU7zyOrlu1E0SmcQQb
LFqHq02fsnH6IcqTv3N5Adb/CkZDDQ6HvQVBmqbKZKf7ZdXkqsc/Zw27xhG7OfXC
tUmWsiL7zA+KoTd3avyOh93Q9ju4UQsHthL3Gs4vECYOCS9dsXXSHEY/1ngU/hjO
WFF8QEE/rYV6nA4PTyUvo5RsctSQL/9DJX7XNh3zngvif8LsCN2MPvx6X+zLouBX
zgBkQ9DFfZAGLWf9TR7KVjZC/3NsuUCDoAOcpmN8pENBbeB0puiKMMWSvll36+2M
YR1Xs0MgT8Y9TwhE2+TnnTJOhzmHi/BxiUlY/w2E0s4ax9GHAmX0wyF4zeV7kDkc
vHuEdc0d7vDmdw0oqCqWj0Xwq86HfORu6tm1A8uRATjb4SzjTKclKuoElVAVa5Jo
oh/uZMozC65SmDw+N5p6Su8CAwEAAQ==
-----END PUBLIC KEY-----