Полностью open-source
Проверьте клиентское шифрование, API и конфигурацию Cloudflare перед собственным deploy.
github.com/EternalHuman/SDA ↗Загрузите maFile, получите случайный ID длиной 16 символов и открывайте authenticator с любого устройства. Логин и пароль Steam не нужны.
Никаких аккаунтов на сайте: доступом служит случайный ID или ваш собственный длинный код.
Файл разбирается локально. В KV отправляется только зашифрованный минимальный набор данных.
Сохраните основной ID сейчас. Восстановить его через сервер невозможно.
Подойдёт основной 16-символьный ID или привязанный вами пользовательский код.
••••••••Он создаст ещё одну независимо зашифрованную запись для этого authenticator.
Хранилище автоматически блокируется после 10 минут бездействия.
Минимальная архитектура без сторонней аналитики, рекламных SDK и запросов к Steam.
Проверьте клиентское шифрование, API и конфигурацию Cloudflare перед собственным deploy.
github.com/EternalHuman/SDA ↗Сайт никогда их не запрашивает. Для кодов используется только `shared_secret` из выбранного вами maFile.
AES-256-GCM и PBKDF2 выполняются через Web Crypto API. KV получает только ciphertext.
Основной ID и альтернативный код работают одинаково: каждый независимо находит и расшифровывает свою запись.
Браузер читает JSON и оставляет только имя аккаунта и `shared_secret`.
Случайный 16-символьный ID становится ключом для зашифрованного контейнера.
Pages Function сохраняет непрозрачную запись в привязанный Cloudflare KV namespace.
После расшифровки HMAC-SHA1 генерирует текущий пятисимвольный Steam Guard-код.
Любой, кто получит основной ID или альтернативный код, сможет генерировать Steam Guard-коды. Разворачивайте проект в своём Cloudflare-аккаунте, используйте HTTPS, выбирайте длинный уникальный код и не публикуйте ключи в чатах, скриншотах или логах.