Локальный TOTP/HOTP-аутентификатор для Chromium-браузеров.
Работает без внешнего сервера и устанавливается как распакованное расширение.
- Генерация TOTP по RFC 6238 и HOTP по RFC 4226.
- Поддержка SHA-1, SHA-256 и SHA-512, кодов из 6 или 8 цифр и параметров из
otpauth://URI. - Ручное добавление аккаунтов и автоматический разбор вставленной
otpauth://ссылки. - Импорт QR-кодов:
- из изображения;
- из буфера обмена;
- из выбранной области текущей вкладки;
- из экспорта Google Authenticator (
otpauth-migration://), включая несколько аккаунтов.
- Предварительный просмотр найденных аккаунтов перед импортом.
- Показ QR-кода выбранного аккаунта для переноса в другое приложение-аутентификатор.
- Поиск по названию сервиса и логину.
- Пользовательские категории и фильтрация списка.
- Изменение порядка аккаунтов мышью, касанием или клавиатурой.
- Копирование кода по нажатию и настраиваемая автоочистка буфера через 10, 30 или 60 секунд.
- Режим приватности, скрывающий коды до наведения.
- Блокировка четырехзначным PIN-кодом.
- Темная и светлая темы, пять акцентных цветов.
- Русский и английский интерфейс с автоматическим выбором языка браузера.
- Экспорт и импорт резервной копии в JSON с пропуском дубликатов.
Сборка и установка зависимостей не требуются.
-
Клонируйте репозиторий:
git clone https://github.com/Moii-gh/OnePass-Auth.git cd OnePass-Auth -
Откройте страницу управления расширениями:
- Chrome:
chrome://extensions - Edge:
edge://extensions - Brave:
brave://extensions
- Chrome:
-
Включите Режим разработчика.
-
Нажмите Загрузить распакованное расширение.
-
Выберите корневую папку проекта.
-
При необходимости закрепите OnePass Auth на панели браузера.
После изменения исходников нажмите кнопку обновления расширения на странице управления расширениями и заново откройте popup.
- Нажмите
+и укажите сервис, логин и Base32-секрет. - Вместо секрета можно вставить полный
otpauth://URI — поддерживаемые поля будут распознаны автоматически. - Для импорта QR-кода откройте панель QR и выберите захват экрана, вставку из буфера или файл изображения.
Ручная форма создает TOTP-аккаунт с параметрами SHA-1, 6 цифр и периодом 30 секунд. Нестандартные параметры TOTP/HOTP импортируются из otpauth:// URI или QR-кода.
- Нажатие на карточку копирует текущий код.
- Для HOTP кнопка обновления увеличивает счетчик и создает следующий код.
- Контекстное меню карточки позволяет скопировать код, изменить, переместить или удалить аккаунт, а также показать его QR-код.
- Строка поиска фильтрует аккаунты по сервису и логину.
- Категорию можно создать в форме добавления или редактирования аккаунта.
- тема и акцентный цвет;
- язык интерфейса;
- режим приватности;
- блокировка PIN-кодом;
- автоочистка буфера обмена;
- импорт и экспорт резервной копии.
- Аккаунты, категории и настройки хранятся в
chrome.storage.sync. - Секреты аккаунтов шифруются с помощью AES-256-GCM перед записью в хранилище.
- Ключ шифрования хранится отдельно в
chrome.storage.localи не синхронизируется между профилями браузера. - При включении PIN-блокировки ключ дополнительно шифруется ключом, полученным через PBKDF2-SHA-256 со случайной солью и 100 000 итераций.
- Расширение не отправляет аккаунты или коды на внешний сервер.
Warning
Экспортируемая резервная копия — обычный JSON с незашифрованными Base32-секретами. Храните файл в защищенном месте и удаляйте его после переноса.
PIN-код состоит из четырех цифр и защищает локальный ключ, но не заменяет надежную защиту профиля и устройства.
| Разрешение | Назначение |
|---|---|
storage |
Хранение зашифрованных аккаунтов, категорий и настроек |
activeTab |
Захват видимой области активной вкладки по явному действию пользователя |
<all_urls> |
Доступ к страницам, необходимый для заявленного сценария сканирования QR с текущей вкладки |
OnePass-Auth/
├── _locales/ # Русская и английская локализации
├── icons/ # Иконки расширения
├── manifest.json # Manifest V3 и разрешения
├── popup.html # Интерфейс popup
├── popup.css # Темы и стили
├── popup.js # Инициализация приложения и ручная форма
├── app-state.js # Состояние UI и работа с буфером обмена
├── accounts-controller.js # Список, поиск и действия с аккаунтами
├── settings-controller.js # Настройки, PIN и резервные копии
├── qr-controller.js # Сценарии QR-импорта
├── storage.js # Хранение аккаунтов и категорий
├── crypto.js # AES-GCM и защита ключа через PBKDF2
├── totp.js # Генерация TOTP/HOTP и Base32
├── qr.js # Чтение QR и разбор OTP URI
├── qr-scanner.js # Файлы, буфер обмена и захват вкладки
├── drag-drop.js # Изменение порядка аккаунтов
├── backup.js # Импорт и экспорт JSON
├── i18n.js # Переключение языка
├── ui.js # Темы и вспомогательная логика UI
├── crop.html / crop.js # Выбор области снимка вкладки
├── jsQR.js # Чтение QR-кодов
└── qrcode.min.js # Генерация QR-кодов
Проект не использует сборщик и пакетный менеджер. Для проверки синтаксиса JavaScript нужен Node.js:
Get-ChildItem -Filter *.js |
Where-Object { $_.Name -notin @('jsQR.js', 'qrcode.min.js') } |
ForEach-Object { node --check $_.FullName }Рекомендуемая ручная проверка:
- загрузить расширение как распакованное;
- добавить тестовый TOTP-аккаунт;
- проверить копирование и обновление кода;
- импортировать тестовый
otpauth://QR-код; - включить PIN, закрыть и снова открыть popup;
- экспортировать резервную копию и импортировать ее в чистом профиле.