Привет, Хабр!
С момента публикации наших прошлых статей о создании программы для стеганографии ChameleonLab прошло немало времени. Мы получили огромное количество фидбэка и поняли, что тема сокрытия данных интересна сообществу не только в контексте классических картинок (LSB), но и в более сложных, повседневных файлах — документах.

Стандартные стеганографические программы, такие как Steghide, OpenStego или Stegsolve, отлично справляются с изображениями или аудио, но практически пасуют перед современными офисными документами. Попытка применить к .docx или .pdf LSB-алгоритм — это выстрел в пустоту. Данные будут уничтожены при первом же пересохранении.
Поэтому мы задались целью: научиться прятать большие объемы данных в самых популярных документах так, чтобы файл оставался полностью рабочим. И сегодня мы представляем ChameleonLab 1.4.1.0 — релиз, который превращает нашу программу в настоящий швейцарский нож для контейнерной стеганографии.
Анатомия современных документов: почему это работает?
Большинство современных форматов документов (.docx, .odt, .epub, .pages) — это, по сути, обычные ZIP-архивы. Если взять любой такой файл и поменять ему расширение на .zip, вы сможете заглянуть внутрь и увидите структуру из папок и XML-файлов.
Ключевой элемент в них — это файл-манифест, который строго перечисляет все «официальные» части документа. Любой файл, который физически лежит в архиве, но не упомянут в манифесте, будет программой-редактором (MS Word, LibreOffice и т.д.) попросту проигнорирован.
Это и есть наша лазейка. Мы назвали этот метод «Файл-призрак».
Вот как просто это выглядит на Python. Нам даже не нужны сторонние библиотеки, кроме стандартной zipfile:
import zipfile def hide_in_zip_container(src_path, dest_path, payload_bytes): """ Копирует содержимое одного ZIP-архива в другой, добавляя наш секретный файл "зайцем". """ # Имя нашего файла-призрака secret_filename = 'content/secret.dat' with zipfile.ZipFile(src_path, 'r') as zin: with zipfile.ZipFile(dest_path, 'w') as zout: # Копируем все оригинальные файлы for item in zin.infolist(): # Для EPUB нужно отдельно обработать файл 'mimetype' if item.filename != 'mimetype': zout.writestr(item, zin.read(item.filename)) # Добавляем наш секретный файл! # Манифест мы не трогаем, поэтому Word/Pages/etc его не увидят. zout.writestr(secret_filename, payload_bytes)
Эта простая, но эффективная логика легла в основу поддержки целого зоопарка форматов.
Расширяя горизонты: Универсальный подход к контейнерам
В этом обновлении мы сделали ставку на универсальность. Вместо того чтобы писать уникальный код для каждого формата, мы проанализировали их структуру и реализовали поддержку целых семейств документов.
-
OpenDocument (
.odt,.ods,.odp): Это открытый стандарт и основа таких офисных пакетов, как LibreOffice и OpenOffice. Поддержка этих форматов была важна для обеспечения кроссплатформенности и независимости от проприетарного софта. В отличие от «файла-призрака», для ODF требуется аккуратная модификация XML-манифеста, что делает интеграцию чуть сложнее, но результат так же надежен. -
EPUB (
.epub): Стандарт де-факто для электронных книг. Возможность спрятать архив внутри книги открывает интересные сценарии. Представьте себе целую библиотеку на полке, где в одной из книг скрывается ваша цифровая капсула времени. -
Apple iWork (
.pages,.numbers,.key): Огромная экосистема пользователей Apple часто остается за бортом в мире стеганографических утилит. Мы исправили это. Теперь документы, созданные в Pages, Numbers или Keynote, могут служить такими же надежными контейнерами. -
XPS/OXPS (
.xps,.oxps): Хотя этот формат от Microsoft и не так популярен, как PDF, он является стандартным для многих корпоративных систем документооборота Windows. Добавление его поддержки делает нашу программу еще более универсальным решением.
Наш арсенал: полный список поддерживаемых форматов
В версии 1.4.1.0 ChameleonLab поддерживает стеганографию в следующих контейнерах:
|
Категория |
Форматы |
Метод сокрытия |
|---|---|---|
|
Изображения |
|
Классический LSB |
|
MS Office |
|
Внедрение в Custom XML Part |
|
OpenDocument |
|
«Файл-призрак» + правка манифеста |
|
Эл. книги |
|
«Файл-призрак» |
|
Apple iWork |
|
«Файл-призрак» |
|
MS XPS |
|
«Файл-призрак» |
|
Документы |
|
Авторский метод «Хамелеон» |
Жемчужина коллекции: наш авторский метод для PDF
PDF стоит особняком. Это не ZIP-архив, а сложная бинарная структура из объектов. Попытка просто дописать байты в конец файла или внедрить их в метаданные либо легко обнаруживается, либо вмещает смехотворный объем.
Мы разработали собственную, уникальную методику, которую назвали «Метод Хамелеона». Не раскрывая всех деталей (это наше ноу-хау), скажем главное:
-
Метод не меняет видимое содержимое. Верстка, текст, изображения — все остается нетронутым.
-
Вместимость теоретически безгранична. Мы динамически создаем внутри PDF изолированный канал данных нужного размера.
-
Надежность. Данные выживают после открытия и пересохранения файла в большинстве популярных редакторов.
Этот метод превращает PDF из «неудобного» формата в один из самых надежных и емких контейнеров в нашем арсенале.
Аналоги и наше преимущество
На рынке существует несколько программ для стеганографии, но у ChameleonLab теперь есть ключевое преимущество:
-
OpenStego: Отличный проект, но в основном сфокусирован на LSB в изображениях и не работает с современными документами.
-
Steghide: Классическая консольная утилита, мощная, но также ограничена изображениями и аудио.
-
SilentEye: Хороший GUI, но опять же, фокус на LSB в медиафайлах.
Наше главное отличие — это универсальность и фокус на документах. ChameleonLab — это, пожалуй, единственная на данный момент программа с графическим интерфейсом, которая предоставляет единый подход для сокрытия данных в таком широком спектре офисных форматов, электронных книг и PDF, используя структурные, а не LSB-методы.
Особое внимание пользователям macOS
Отдельно хотим обратиться к пользователям macOS. Мы, как разработчики, сами ежедневно используем macOS для работы, и одной из причин создания ChameleonLab было практически полное отсутствие удобных и современных стеганографических программ под эту платформу. Большинство аналогов — это либо старые Java-приложения, либо портированные с Linux консольные утилиты, либо вовсе Windows-эксклюзивы.
Найти нативный, интуитивно понятный инструмент с графическим интерфейсом, который бы поддерживал современные форматы вроде .pages или .docx на macOS, — задача практически невыполнимая. ChameleonLab призван закрыть эту нишу. Мы создавали программу в первую очередь для себя и таких же, как мы, — тех, кто ценит качественный и работающий «из коробки» софт для экосистемы Apple.
Кроссплатформенность и будущие цели
Мы стремимся сделать ChameleonLab доступным для всех. На данный момент программа полностью протестирована и готова к работе на Windows и macOS.
Но на этом мы не останавливаемся. Прямо сейчас ведется активная работа по сборке и тестированию версий для Linux и Android. Наша цель — предоставить удобный и надежный инструмент для стеганографии на всех ключевых платформах. Следите за новостями!
Что дальше? Исследуем JPG и MP3
Нас часто спрашивают: «А когда будет поддержка JPG и MP3?». Это логичный вопрос, ведь это самые популярные медиаформаты. Однако они представляют собой совершенно иной класс сложности по сравнению с документами-контейнерами.
Ключевая проблема — сжатие с потерями.
-
В JPG нет простой пиксельной сетки, как в PNG. Изображение преобразуется в набор математических коэффициентов (ДКП), и именно они сжимаются. Классический LSB-метод здесь бесполезен — ваши биты будут уничтожены при первой же перепаковке. Для сокрытия данных в JPG существуют сложные алгоритмы (JSteg, F5, OutGuess), которые модифицируют сами коэффициенты ДКП, но их реализация требует глубокого понимания математики формата, чтобы не создавать статистических аномалий.
-
В MP3 ситуация аналогична. Формат использует психоакустическую модель, чтобы «выбросить» звуки, которые человеческое ухо все равно не услышит. Простое изменение битов в аудиопотоке почти гарантированно приведет к слышимым щелчкам и артефактам. Стеганография в MP3 — это отдельная наука, требующая работы со структурой фреймов и спецификой кодирования.
Мы активно изучаем эти форматы и существующие алгоритмы. Добавление их поддержки — наша следующая большая цель, но она требует серьезных исследований для достижения того же уровня надежности, который мы обеспечили для форматов-контейнеров.
Что еще нового?
Мы также прислушались к отзывам и исправили несколько мелочей, включая баг с удалением нескольких линий в нашем пасхальном «Тетрисе».
Это обновление — большой шаг вперед для проекта. Мы перешли от классических алгоритмов к более сложным и надежным методам структурной стеганографии, сделав программу по-настоящему универсальной.
Последнюю версию программы «Steganographia» от ChameleonLab для Windows и macOS можно скачать на нашем официальном сайте.
Будем рады, если вы опробуете новую версию. Ждем ваших отзывов, сообщений об ошибках и, конечно же, предложений по новым форматам для исследований. Присоединяйтесь к нашему Telegram-каналу!
Спасибо за внимание!
ссылка на оригинал статьи https://habr.com/ru/articles/944808/
Добавить комментарий