- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 347
- Реакции
- 7
Potassium JWT Bypass Method
Наткнулся на реализацию локального кряка для Potassium. Суть максимально топорная: софт проверяет лицензию через локальный файл user.bin, который содержит в себе JWT. Разрабы оставили ключ подписи прямо в коде (или его успешно отреверсили), что позволяет нам нарисовать себе бесконечную подписку.
Технические детали:
Инструкция для тех, кто в танке:
1. Ставим OpenSSL.
2. Билдим проект на C++.
3. Запускаем экзешник — он создаст user.bin.
4. Кидаем этот бинарник в папку с Potassium.
Метод рабочий, пока они не сменят секретный ключ на стороне сервера или не перейдут на асимметричное шифрование.
Кто уже успел проверить на последнем апдейте роблокса, отпишитесь по статусу.
Наткнулся на реализацию локального кряка для Potassium. Суть максимально топорная: софт проверяет лицензию через локальный файл user.bin, который содержит в себе JWT. Разрабы оставили ключ подписи прямо в коде (или его успешно отреверсили), что позволяет нам нарисовать себе бесконечную подписку.
Технические детали:
- Алгоритм подписи: HMAC SHA256.
- Зависимости: OpenSSL для крипты и nlohmann/json для работы со структурами.
- Ключ: sorakasugano1337 (если пофиксят — ищите новый в дампе).
- Payload: Генерируем JWT с фейковым ID и экспирацией, улетающей в бесконечность.
Код:
#include <fstream>
#include <string>
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <nlohmann/json.hpp>
using nlohmann::json;
std::string b64u(const unsigned char* d, size_t n) {
std::string s;
s.resize(4 * ((n + 2) / 3));
int l = EVP_EncodeBlock((unsigned char*)&s[0], d, n);
s.resize(l);
for (char& c : s) {
if (c == '+') c = '-';
else if (c == '/') c = '_';
}
while (!s.empty() && s.back() == '=') s.pop_back();
return s;
}
std::string hmac(const std::string& k, const std::string& m) {
unsigned char o[EVP_MAX_MD_SIZE];
unsigned int l = 0;
HMAC(EVP_sha256(), k.data(), k.size(), (unsigned char*)m.data(), m.size(), o, &l);
return b64u(o, l);
}
int main() {
json h = {{"alg", "HS256"}, {"typ", "JWT"}};
json p = {{"id", "cracked by ZenithPulse"}, {"exp", "4071619885"}, {"iat", "1736064000"}};
std::string k = "sorakasugano1337";
std::string hb = b64u((unsigned char*)h.dump().data(), h.dump().size());
std::string pb = b64u((unsigned char*)p.dump().data(), p.dump().size());
std::string m = hb + "." + pb;
std::string sg = hmac(k, m);
std::string t = m + "." + sg;
json o = {{"jwt", t}, {"expiration", "2099-01-09T05:31:25.0000000Z"}};
std::ofstream("user.bin", std::ios::binary) << o.dump(2);
}
Инструкция для тех, кто в танке:
1. Ставим OpenSSL.
2. Билдим проект на C++.
3. Запускаем экзешник — он создаст user.bin.
4. Кидаем этот бинарник в папку с Potassium.
Метод рабочий, пока они не сменят секретный ключ на стороне сервера или не перейдут на асимметричное шифрование.
Кто уже успел проверить на последнем апдейте роблокса, отпишитесь по статусу.