SkillAgentSearch skills...

NebulaEncrypt

Local encrypt and decrypt MAX and telegram messages using secret keys.

Install / Use

/learn @dmitrymalakhov/NebulaEncrypt
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

NebulaEncrypt — расширение Chrome для локального шифрования в веб-чатах

<p align="center"> <img src="./assets/NebulaEncrypt.gif" alt="NebulaEncrypt Demo"> </p>

NebulaEncrypt — расширение Chrome для локального шифрования и расшифровки сообщений в Telegram Web и MAX. Все операции выполняются на вашем устройстве, ключи не покидают компьютер.

Важно: проект предназначен только для личного обучения и общения. Не используйте в незаконных целях и не полагайтесь на него в production.

Основные возможности

  • Только локальное шифрование — шифрование и расшифровка на устройстве, ключи не передаются по сети.
  • Ключи по URL — отдельные ключи для каждого сайта (Telegram, MAX); расширение подставляет нужный ключ по адресу вкладки.
  • Два ключа — «ваш ключ» (для исходящих сообщений) и «ключ собеседника» (для входящих).
  • Соль по URL — один и тот же пароль на разных сайтах даёт разные ключи (PBKDF2 с уникальной солью).
  • Шифрование и расшифровка — горячие клавиши, кнопки в попапе и автоматическая расшифровка при появлении сообщений.
  • Поддержка сервисов — Telegram Web (A и K) и MAX; автоопределение версии/сайта, ключи хранятся по домену.
  • Click-to-decrypt — зашифрованные сообщения в ленте помечаются; по клику расшифровываются при настроенных ключах.
  • Экспорт и импорт ключей — сохранение и загрузка ключей в JSON для резервной копии или переноса.
  • Индикатор в иконке — зелёный бейдж, если для текущего сайта есть ключи; оранжевый «!», если ключей нет. Счётчик расшифрованных сообщений.
  • Тёмная и светлая тема — попап подстраивается под системную тему.

Установка

  1. Скачайте или клонируйте репозиторий.
  2. В Chrome откройте chrome://extensions/.
  3. Включите «Режим разработчика» и нажмите «Загрузить распакованное расширение».
  4. Укажите папку с файлами расширения.

Использование

  1. Настройка ключей
    Нажмите на иконку расширения. Выберите сервис (Telegram или MAX) или откройте нужную вкладку — URL подставится автоматически. Введите «Ваш ключ» и «Ключ собеседника», при необходимости сгенерируйте их кнопкой (🎲) или оцените силу по полоске. Нажмите «Сохранить ключи».

  2. Шифрование
    Введите текст в поле ввода чата и нажмите горячую клавишу или кнопку «Зашифровать» в попапе. Текст в поле заменится на зашифрованный; отправьте сообщение как обычно.

  3. Расшифровка
    Новые зашифрованные сообщения расшифровываются автоматически. Можно нажать горячую клавишу или кнопку «Расшифровать» в попапе. Сообщения, которые ещё не расшифрованы, помечены в ленте — нажмите по ним для расшифровки (click-to-decrypt).

  4. Экспорт/импорт
    В попапе: «Экспорт ключей» — скачивается nebula-encrypt-keys.json; «Импорт ключей» — выбор JSON-файла, ключи добавляются к уже сохранённым.

Горячие клавиши

| Действие | Windows/Linux | macOS | |-----------------------|-----------------|-------------| | Зашифровать текст | Ctrl+Alt+E | Ctrl+Shift+E | | Расшифровать сообщения | Ctrl+Alt+D | Ctrl+Shift+D |

Сочетания можно изменить в chrome://extensions/ → «Сочетания клавиш» для NebulaEncrypt.

Технические детали

  • Шифрование: AES-GCM, ключ 256 бит.
  • Ключ из пароля: PBKDF2-HMAC-SHA-256, 210 000 итераций, соль NebulaEncrypt-v1-<URL> (поддержка старых форматов при расшифровке).
  • Хранение ключей: только в chrome.storage.local на устройстве.
  • Сервисы и DOM: автоопределение Telegram (A/K) и MAX; отдельные селекторы для полей ввода и пузырьков сообщений (в т.ч. Lexical-редактор в MAX).
  • Бейдж: при смене вкладки/загрузке страницы проверяется наличие ключей для текущего URL; при расшифровке обновляется счётчик в бейдже.

Устранение неполадок

  • Сообщение не шифруется — убедитесь, что для текущего URL сохранены ключи (иконка зелёная). Откройте чат и снова нажмите «Зашифровать» или горячую клавишу.
  • Не расшифровывается — проверьте, что для этого сайта сохранён правильный «ключ собеседника». Без него расшифровка невозможна.
  • «Поле ввода не найдено» — откройте конкретный чат и убедитесь, что страница полностью загружена; при необходимости перезагрузите вкладку.
  • «Перезагрузите страницу» — после установки или обновления расширения перезагрузите страницу Telegram/MAX.

Структура проекта

  • manifest.json — манифест расширения (Manifest V3), разрешения, команды, content script для Telegram и MAX.
  • popup.html / popup.js — попап: выбор сервиса, URL, два ключа, сила пароля, экспорт/импорт, список сохранённых сайтов, кнопки шифровать/расшифровать.
  • background.js — обработка горячих клавиш, уведомления, обновление бейджа (наличие ключей и счётчик).
  • content.js — определение сервиса, работа с DOM, шифрование/расшифровка, click-to-decrypt, наблюдатель за новыми сообщениями.

Лицензия

Проект распространяется под лицензией MIT — см. файл LICENSE.


NebulaEncrypt — шифрование в веб-чатах под вашим контролем.

View on GitHub
GitHub Stars43
CategoryDevelopment
Updated28d ago
Forks4

Languages

JavaScript

Security Score

75/100

Audited on Mar 2, 2026

No findings