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

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

Мы собрали там огромную коллекцию уникальных архивных фотографий, на поиск и обработку которых ушли годы. И, конечно же, столкнулись с банальной кражей контента. Мы долго думали, как защитить снимки. Наносить видимые водяные знаки? Это значит испортить историческую ценность и эстетику фотографий, чего делать категорически не хотелось. Именно тогда мы и начали искать более изящные методы защиты, погрузившись в мир цифровых водяных знаков и стеганографии. Этот поиск и перерос в итоге в ChameleonLab.
На сегодняшний день в ChameleonLab реализованы надежные и полностью рабочие методы, которые можно смело использовать на практике: классический LSB для изображений и уникальный способ сокрытия данных внутри структуры документов Office (DOCX, XLSX, PPTX). Это — наш фундамент.
Но мир стеганографии огромен. Есть методы, над которыми мы буквально ломаем головы: алгоритмы, устойчивые к сжатию JPEG, сложные техники для аудиоформатов, адаптивное встраивание, которое подстраивается под контент контейнера. Некоторые из них пока просто не получаются так, как нам бы хотелось — это сложная, почти академическая работа. И именно этот исследовательский азарт движет нами. ChameleonLab — это наше приглашение всем желающим заглянуть в этот удивительный мир, попробовать рабочие инструменты и, возможно, вместе с нами найти решение для самых сложных задач.
Изначально проект задумывался как удобный инструмент для решения практических задач: быстро и надежно спрятать информацию. Но в процессе разработки стало ясно, что стеганография — это невероятно увлекательная область, где пересекаются криптография, статистика и цифровая обработка изображений. Просто дать пользователю кнопку "Спрятать" — значит лишить его всей магии, которая происходит "под капотом".
Поэтому проект эволюционировал. Сегодня ChameleonLab — это еще и полноценный интерактивный стенд для всех, кто хочет не просто использовать стеганографию, а понять ее.
Новое в образовательном функционале
Мы добавили несколько инструментов, каждый из которых раскрывает свой аспект цифровой скрытности.
1. Визуализатор LSB: Заглянуть в душу пикселя
Как на самом деле выглядит LSB-встраивание на уровне бит? Чем 1-битное сокрытие отличается от 4-битного? Вкладка "Визуализатор 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) и немедленно увидеть результат. Для студентов и исследователей это мощный инструмент визуального стеганоанализа.

В основе этой магии лежит элегантная работа с массивами 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-подпись для гарантии целостности.

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

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).

Наш новый HEX-анализатор на вкладке "Анализ файлов" делает именно это:
Вы загружаете любой файл.
Программа в фоновом режиме "нарезает" его на небольшие блоки.
Для каждого блока вычисляется энтропия Шеннона.
Блоки, энтропия которых превышает заданный порог (например, 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
Неожиданный поворот: международный интерес и рождение сообщества
Честно говоря, мы не ожидали такого эффекта от первой статьи. Резонанс, который она вызвала, и количество отзывов превзошли все наши ожидания. Вскоре после публикации нам начали писать не только русскоязычные пользователи. Оказалось, что потребность в наглядном и многофункциональном стегано-инструменте существует во всем мире. Это стало для нас приятной неожиданностью и отличной мотивацией.

Первым шагом навстречу новой аудитории стала полная локализация интерфейса. Мы создали простую, но эффективную систему переводов, которая позволяет легко переключаться между языками.
# Фрагмент из 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 (библиотека | AES | Различные алгоритмы (через | AES |
Ключе��ая особенность | Интегрированные инструменты анализа и визуализации | Пакетная обработка, водяные знаки | Простота, интеграция в контекстное меню Windows | Простой и понятный интерфейс |
Стеганоанализ | Да (Chi-Squared, RS, DCT, LSB-гистограммы, Heatmap, пакетный анализ) | Нет | Нет | Нет |
Образовательные инструменты | Да (Визуализаторы LSB, бит-планов, криптографии) | Нет | Нет | Нет |
Вывод: Большинство существующих утилит отлично справляются со своей основной задачей — спрятать и извлечь данные. Однако они, как правило, являются "черными ящиками".
Ключевое отличие ChameleonLab — это объединение практического инструмента с мощной образовательной и исследовательской платформой. Ни один из рассмотренных аналогов не предлагает встроенных средств для статистического анализа, визуализации битовых слоев или пошаговой демонстрации криптографических преобразований. Мы даем пользователю не только "молоток", но и "микроскоп", чтобы изучить результат своей работы.
Наши идеи, ваши запросы и ближайшее будущее
Создавая ChameleonLab, мы не изобретали велосипед с нуля. За плечами у нас — сотни прочитанных научных статей и публикаций по стеганографии и стеганоанализу от русских, белорусских и зарубежных исследователей. Мы постарались впитать лучшие идеи и реализовать их в удобном и понятном инструменте. Это поле огромно, и мы уверены, что где-то есть энтузиасты, которые, как и мы, работают над своими проектами. Если у вас есть свои наработки, интересные алгоритмы или просто свежие идеи — мы будем рады объединить усилия! Синергия всегда дает лучший результат.
Проект активно развивается, и у нас много планов. Но самое ценное — это обратная связь от сообщества.
Что в планах:
Open Source и официальный сайт! Это самый важный следующий шаг. В ближайшее время мы планируем открыть исходный код проекта на GitHub, чтобы каждый желающий мог внести свой вклад, изучить код или использовать его в своих проектах. Одновременно с этим будет запущен официальный сайт с документацией, примерами и последними версиями программы.
Расширение поддержки форматов: Нам очень интересно добавить поддержку других аудиоформатов (FLAC, MP3) и, возможно, видеоконтейнеров. Стеганография в документах Office (DOCX/XLSX/PPTX) уже реализована, и это направление кажется очень перспективным.
Новые методы стеганоанализа: Сейчас в "Научном анализе" реализованы классические методы (Chi-Squared, RS, DCT). В будущем мы хотим добавить более современные подходы, возможно, с использованием машинного обучения.
Атаки на стегосистемы: Добавить модуль, который не просто анализирует, а пытается активно повредить скрытое сообщение (например, через сжатие, обрезку, добавление шума), чтобы пользователь мог на практике оценить стойкость выбранного метода.
К чему мы прислушиваемся:
Какие еще форматы файлов вам было бы интересно использовать в качестве контейнеров?
Каких аналитических инструментов не хватает? Может быть, вейвлет-анализ или другие статистические тесты?
Насколько понятны текущие визуализаторы? Что можно было бы улучшить?
Мы создали этот инструмент, потому что верим в силу сообщества. Для живого общения, новостей и поддержки мы создали Telegram-канал: t.me/ChameleonLab. Присоединяйтесь, задавайте вопросы, делитесь идеями! Также вы всегда можете написать нам на почту или оставить свои мысли прямо здесь, в комментариях!
Спасибо за ваше внимание и интерес к проекту!
