Skip to content

Moii-gh/OnePass-Auth

Repository files navigation

OnePass Auth

OnePass Auth

Локальный TOTP/HOTP-аутентификатор для Chromium-браузеров.
Работает без внешнего сервера и устанавливается как распакованное расширение.

Version 1.0.0 Manifest V3 JavaScript ES Modules RFC 4226 and RFC 6238


Возможности

  • Генерация 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 с пропуском дубликатов.

Установка

Сборка и установка зависимостей не требуются.

  1. Клонируйте репозиторий:

    git clone https://github.com/Moii-gh/OnePass-Auth.git
    cd OnePass-Auth
  2. Откройте страницу управления расширениями:

    • Chrome: chrome://extensions
    • Edge: edge://extensions
    • Brave: brave://extensions
  3. Включите Режим разработчика.

  4. Нажмите Загрузить распакованное расширение.

  5. Выберите корневую папку проекта.

  6. При необходимости закрепите 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 }

Рекомендуемая ручная проверка:

  1. загрузить расширение как распакованное;
  2. добавить тестовый TOTP-аккаунт;
  3. проверить копирование и обновление кода;
  4. импортировать тестовый otpauth:// QR-код;
  5. включить PIN, закрыть и снова открыть popup;
  6. экспортировать резервную копию и импортировать ее в чистом профиле.

About

Локальный TOTP/HOTP-аутентификатор для Chromium-браузеров с импортом QR-кодов, шифрованием, PIN-защитой и резервным копированием.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors