Привет, Хабр!

Честно говоря, публикуя первую статью, мы и представить не могли, какой отклик она получит. В ней мы представили наш новый проект — ChameleonLab, утилиту для стеганографии с дружелюбным интерфейсом, позволяющую скрывать данные в изображениях и документах. После этого нашу почту буквально завалили письмами: люди делились идеями, задавали вопросы и рассказывали, как используют программу. Этот невероятный интерес и стал главной причиной, по которой мы с удвоенной энергией взялись за развитие проекта. Сегодня мы хотим поделиться тем, что нового появилось в ChameleonLab, во многом благодаря вам.

А для всех, кто хочет опробовать новые функции прямо сейчас, мы собрали свежую версию. Скачать ее можно по ссылке: ChameleonLab 1.3.0.0

Программа ChameleonLab. Вкладка "Встраивание"
Программа ChameleonLab. Вкладка "Встраивание"

Зачем всё это? Немного о философии проекта

Прежде чем погружаться в новые функции, хочется ответить на главный вопрос, который нам задавали: "Зачем еще один инструмент для стеганографии?" Ответ прост: мы хотели создать нечто большее. Не просто программу, которая прячет файлы, а платформу, где можно экспериментировать и учиться.

Наш путь в стеганографию начался с вполне практической задачи. У нас большой опыт в разработке качественных проектов, один из которых — исторический сайт "Познай Кобрин", который даже отмечен в Википедии.

Проект "Познай Кобрин" на Википедии
Проект "Познай Кобрин" на Википедии

Мы собрали там огромную коллекцию уникальных архивных фотографий, на поиск и обработку которых ушли годы. И, конечно же, столкнулись с банальной кражей контента. Мы долго думали, как защитить снимки. Наносить видимые водяные знаки? Это значит испортить историческую ценность и эстетику фотографий, чего делать категорически не хотелось. Именно тогда мы и начали искать более изящные методы защиты, погрузившись в мир цифровых водяных знаков и стеганографии. Этот поиск и перерос в итоге в ChameleonLab.

На сегодняшний день в ChameleonLab реализованы надежные и полностью рабочие методы, которые можно смело использовать на практике: классический LSB для изображений и уникальный способ сокрытия данных внутри структуры документов Office (DOCX, XLSX, PPTX). Это — наш фундамент.

Но мир стеганографии огромен. Есть методы, над которыми мы буквально ломаем головы: алгоритмы, устойчивые к сжатию JPEG, сложные техники для аудиоформатов, адаптивное встраивание, которое подстраивается под контент контейнера. Некоторые из них пока просто не получаются так, как нам бы хотелось — это сложная, почти академическая работа. И именно этот исследовательский азарт движет нами. ChameleonLab — это наше приглашение всем желающим заглянуть в этот удивительный мир, попробовать рабочие инструменты и, возможно, вместе с нами найти решение для самых сложных задач.

Изначально проект задумывался как удобный инструмент для решения практических задач: быстро и надежно спрятать информацию. Но в процессе разработки стало ясно, что стеганография — это невероятно увлекательная область, где пересекаются криптография, статистика и цифровая обработка изображений. Просто дать пользователю кнопку "Спрятать" — значит лишить его всей магии, которая происходит "под капотом".

Поэтому проект эволюционировал. Сегодня ChameleonLab — это еще и полноценный интерактивный стенд для всех, кто хочет не просто использовать стеганографию, а понять ее.

Новое в образовательном функционале

Мы добавили несколько инструментов, каждый из которых раскрывает свой аспект цифровой скрытности.

1. Визуализатор LSB: Заглянуть в душу пикселя

Как на самом деле выглядит LSB-встраивание на уровне бит? Чем 1-битное сокрытие отличается от 4-битного? Вкладка "Визуализатор LSB" дает на это наглядный ответ. Вы загружаете два изображения (оригинал и стего-контейнер), и программа синхронно показывает вам их увеличенные фрагменты.

Программа ChameleonLab. Вкладка "Визуализатор LSB"
Программа ChameleonLab. Вкладка "Визуализатор LSB"

Наводя курсор на пиксель, вы мгновенно видите его RGB-значения и, что самое главное, их двоичное представление. Измененные биты подсвечиваются, позволяя воочию убедиться, как незначительные изменения в младших битах почти не влияют на итоговый цвет, но при этом формируют скрытое сообщение. Это лучший способ понять фундаментальный компромисс стеганографии: емкость против незаметности.

За подсветку бит отвечает простая, но наглядная функция:

# Фрагмент из ui_components.py
def format_binary(rgb_tuple, n_bits):
    bin_str = ""
    for val in rgb_tuple:
        b = format(val, '08b')
        # Отделяем младшие биты для подсветки
        main_part = b[:8-n_bits]
        lsb_part = b[8-n_bits:]
        highlighted = f"<span style='color: #f97316; font-weight: bold;'>{lsb_part}</span>"
        bin_str += main_part + highlighted + " "
    return bin_str.strip()

2. Анализ бит-планов: Увидеть скрытую структуру

Любое цифровое изображение можно разложить на 8 "слоев" или бит-планов. Седьмой (старший) бит-план (MSB) содержит основные контуры изображения, а нулевой (младший) бит-план (LSB) в обычном фото выглядит как случайный шум.

Если же в LSB-слое просматривается какая-то структура — текст, узоры, неестественные паттерны — это почти стопроцентный признак наличия скрытых данных. Наша новая вкладка "Анализ бит-планов" позволяет выбрать любой из 8 планов для любого цветового канала (R, G, B или Grayscale) и немедленно увидеть результат. Для студентов и исследователей это мощный инструмент визуального стеганоанализа.

Программа ChameleonLab. Вкладка "Анализ бит-планов"
Программа ChameleonLab. Вкладка "Анализ бит-планов"

В основе этой магии лежит элегантная работа с массивами NumPy:

# Фрагмент из ui_components.py
def extract_bit_plane(self, image_array, channel, bit_level):
    # ... (выборка цветового канала)
    img_ch = image_array[:, :, {"Red": 0, "Green": 1, "Blue": 2}[channel]]
    
    # Сдвигаем биты вправо и оставляем только нужный нам бит (0 или 1)
    plane = np.bitwise_and(np.right_shift(img_ch, bit_level), 1)
    
    # Масштабируем результат до 0-255 для визуализации (черный/белый)
    plane_scaled = (plane * 255).astype(np.uint8)
    return np.stack([plane_scaled]*3, axis=-1) # Возвращаем как RGB-изображение

3. Визуализатор криптографии: От пароля до шифротекста

Мы используем надежный алгоритм шифрования AES, но фраза "данные шифруются" часто остается абстрактной. Вкладка "Криптография" исправляет это. Она в реальном времени, шаг за шагом, демонстрирует весь процесс:

  • Генерация ключа: Вы видите, как из вашего простого пароля и случайной "соли" с помощью медленной функции PBKDF2 создается надежный 32-байтный криптографический ключ.

  • Блочное шифрование: Исходный текст разбивается на блоки, и вы наблюдаете, как каждый блок превращается в шифротекст.

  • Структура токена: В итоге вы видите, что зашифрованное сообщение — это не просто хаос байтов, а структурированный токен, содержащий соль, зашифрованные данные и HMAC-подпись для гарантии целостности.

Программа ChameleonLab. Визуализатор криптографии
Программа ChameleonLab. Визуализатор криптографии

Это делает сложные криптографические концепции доступными и понятными.

4. Управление метаданными (EXIF): Стереть или сохранить?

Метаданные в файле (например, EXIF в JPEG) — это обоюдоострый меч. С одной стороны, они могут содержать ценную информацию (модель камеры, дата съемки), которую хочется сохранить. С другой — они могут выдать вас, если метаданные оригинального файла и стего-контейнера сильно различаются.

Программа ChameleonLab. Управление метаданными (EXIF)
Программа ChameleonLab. Управление метаданными (EXIF)

ChameleonLab дает вам полный контроль над этим процессом. При загрузке изображения программа автоматически извлекает его EXIF-данные и показывает их в читаемом виде. Вы можете:

  • Перенести метаданные: Поставить галочку, и программа встроит оригинальные EXIF-данные в новый стего-файл. Это помогает сделать его неотличимым от оригинала.

  • Редактировать: Удалить компрометирующие теги (например, GPS-координаты) или, наоборот, добавить ложные данные, чтобы пустить аналитика по неверному следу.

  • Полностью удалить: Не переносить метаданные, чтобы получить "чистый" файл без какой-либо истории.

За работу с EXIF отвечает библиотека piexif, а логика сохранения встроена прямо в file_handlers.py:

# Фрагмент из file_handlers.py
def save_file(filepath: str, payload, metadata: dict, exif_data: bytes = None):
    # ...
    elif file_type == 'image':
        image_to_save = Image.fromarray(payload.astype(np.uint8), 'RGB')
        if exif_data:
            # Если переданы EXIF-данные, сохраняем изображение вместе с ними
            image_to_save.save(filepath, exif=exif_data)
        else:
            image_to_save.save(filepath)
    # ...

5. HEX-анализатор: Поиск аномалий в бинарном коде

Что если вы не знаете, какой алгоритм стеганографии был применен? Как найти иголку в стоге сена? Один из самых мощных методов — поиск аномалий энтропии. Любые хорошо зашифрованные данные с точки зрения статистики неотличимы от случайного шума и обладают очень высокой энтропией (близкой к 8.0).

Программа ChameleonLab. HEX-анализатор
Программа ChameleonLab. HEX-анализатор

Наш новый HEX-анализатор на вкладке "Анализ файлов" делает именно это:

  1. Вы загружаете любой файл.

  2. Программа в фоновом режиме "нарезает" его на небольшие блоки.

  3. Для каждого блока вычисляется энтропия Шеннона.

  4. Блоки, энтропия которых превышает заданный порог (например, 7.5), подсвечиваются в HEX-редакторе.

Таким образом, вы можете визуально обнаружить потенциально зашифрованные "островки" данных внутри совершенно обычного файла. Это универсальный метод, который может сработать там, где пасуют классические атаки.

# Фрагмент из analysis_utils.py
def find_high_entropy_blocks(data: bytes, window_size: int, threshold: float):
    results = []
    for i in range(0, len(data) - window_size, window_size):
        chunk = data[i:i+window_size]
        # Вычисляем энтропию для небольшого "окна" данных
        entropy = calculate_entropy_for_chunk(chunk)
        if entropy > threshold:
            # Если энтропия аномально высокая, запоминаем позицию
            results.append((i, i + window_size))
    return results

Неожиданный поворот: международный интерес и рождение сообщества

Честно говоря, мы не ожидали такого эффекта от первой статьи. Резонанс, который она вызвала, и количество отзывов превзошли все наши ожидания. Вскоре после публикации нам начали писать не только русскоязычные пользователи. Оказалось, что потребность в наглядном и многофункциональном стегано-инструменте существует во всем мире. Это стало для нас приятной неожиданностью и отличной мотивацией.

Программа ChameleonLab. Английская версия
Программа ChameleonLab. Английская версия

Первым шагом навстречу новой аудитории стала полная локализация интерфейса. Мы создали простую, но эффективную систему переводов, которая позволяет легко переключаться между языками.

# Фрагмент из localization.py
TRANSLATIONS = {
    "ru": {
        "app_title": "Steganographia by ChameleonLab",
        "embed_tab": "Встраивание",
        # ... все остальные русские строки
    },
    "en": {
        "app_title": "Steganographia by ChameleonLab",
        "embed_tab": "Embed",
        # ... all other English strings
    }
}

def t(key, **kwargs):
    """Возвращает перевод для ключа на текущем языке."""
    # ... логика функции

Теперь ChameleonLab говорит на двух языках, и мы готовы добавлять новые по мере необходимости!

Обратная связь от первых пользователей оказалась бесценной. Именно благодаря вам мы полностью переработали компоновку интерфейса, добавив удобные перетаскиваемые разделители (сплиттеры), которые позволяют настраивать рабочее пространство под себя. Кроме того, самые внимательные пользователи помогли нам отловить несколько досадных ошибок, которые были оперативно исправлены. Это в очередной раз доказало, что ничто не заменит взгляд со стороны и живое участие сообщества.

Сравнение с аналогами

Чтобы понять место ChameleonLab в мире стегано-утилит, мы сравнили его с несколькими популярными Open Source проектами.

Критерий

ChameleonLab

OpenStego

Steghide UI

Stegosuite

Интерфейс

Современный (Qt6), многовкладочный

Простой, на Java

Минималистичный, обертка над консольной утилитой

Функциональный, на Java SWT

Поддерживаемые контейнеры

PNG, BMP, JPG, WAV, DOCX, XLSX, PPTX

Изображения (PNG, BMP и др.)

Изображения (JPG, BMP), Аудио (WAV)

Изображения (JPG, PNG, GIF, BMP)

Шифрование

AES (библиотека cryptography)

AES

Различные алгоритмы (через steghide)

AES

Ключевая особенность

Интегрированные инструменты анализа и визуализации

Пакетная обработка, водяные знаки

Простота, интеграция в контекстное меню Windows

Простой и понятный интерфейс

Стеганоанализ

Да (Chi-Squared, RS, DCT, LSB-гистограммы, Heatmap, пакетный анализ)

Нет

Нет

Нет

Образовательные инструменты

Да (Визуализаторы LSB, бит-планов, криптографии)

Нет

Нет

Нет

Вывод: Большинство существующих утилит отлично справляются со своей основной задачей — спрятать и извлечь данные. Однако они, как правило, являются "черными ящиками".

Ключевое отличие ChameleonLab — это объединение практического инструмента с мощной образовательной и исследовательской платформой. Ни один из рассмотренных аналогов не предлагает встроенных средств для статистического анализа, визуализации битовых слоев или пошаговой демонстрации криптографических преобразований. Мы даем пользователю не только "молоток", но и "микроскоп", чтобы изучить результат своей работы.

Наши идеи, ваши запросы и ближайшее будущее

Создавая ChameleonLab, мы не изобретали велосипед с нуля. За плечами у нас — сотни прочитанных научных статей и публикаций по стеганографии и стеганоанализу от русских, белорусских и зарубежных исследователей. Мы постарались впитать лучшие идеи и реализовать их в удобном и понятном инструменте. Это поле огромно, и мы уверены, что где-то есть энтузиасты, которые, как и мы, работают над своими проектами. Если у вас есть свои наработки, интересные алгоритмы или просто свежие идеи — мы будем рады объединить усилия! Синергия всегда дает лучший результат.

Проект активно развивается, и у нас много планов. Но самое ценное — это обратная связь от сообщества.

Что в планах:

  1. Open Source и официальный сайт! Это самый важный следующий шаг. В ближайшее время мы планируем открыть исходный код проекта на GitHub, чтобы каждый желающий мог внести свой вклад, изучить код или использовать его в своих проектах. Одновременно с этим будет запущен официальный сайт с документацией, примерами и последними версиями программы.

  2. Расширение поддержки форматов: Нам очень интересно добавить поддержку других аудиоформатов (FLAC, MP3) и, возможно, видеоконтейнеров. Стеганография в документах Office (DOCX/XLSX/PPTX) уже реализована, и это направление кажется очень перспективным.

  3. Новые методы стеганоанализа: Сейчас в "Научном анализе" реализованы классические методы (Chi-Squared, RS, DCT). В будущем мы хотим добавить более современные подходы, возможно, с использованием машинного обучения.

  4. Атаки на стегосистемы: Добавить модуль, который не просто анализирует, а пытается активно повредить скрытое сообщение (например, через сжатие, обрезку, добавление шума), чтобы пользователь мог на практике оценить стойкость выбранного метода.

К чему мы прислушиваемся:

  • Какие еще форматы файлов вам было бы интересно использовать в качестве контейнеров?

  • Каких аналитических инструментов не хватает? Может быть, вейвлет-анализ или другие статистические тесты?

  • Насколько понятны текущие визуализаторы? Что можно было бы улучшить?

Мы создали этот инструмент, потому что верим в силу сообщества. Для живого общения, новостей и поддержки мы создали Telegram-канал: t.me/ChameleonLab. Присоединяйтесь, задавайте вопросы, делитесь идеями! Также вы всегда можете написать нам на почту или оставить свои мысли прямо здесь, в комментариях!

Спасибо за ваше внимание и интерес к проекту!

Комментарии (0)