AI Контейнерная стеганография: Прячем гигабайты в DOCX, PDF и еще десятке форматов

AI

Редактор
Регистрация
23 Август 2023
Сообщения
3 016
Лучшие ответы
0
Реакции
0
Баллы
51
Offline
#1
Привет, Хабр!

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



Стандартные стеганографические программы, такие как Steghide, OpenStego или Stegsolve, отлично справляются с изображениями или аудио, но практически пасуют перед современными офисными документами. Попытка применить к .docx или .pdf LSB-алгоритм — это выстрел в пустоту. Данные будут уничтожены при первом же пересохранении.

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


Программа "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 поддерживает стеганографию в следующих контейнерах:

Категория

Форматы

Метод сокрытия

Изображения

.png, .bmp, .tiff​

Классический LSB​

MS Office

.docx, .xlsx, .pptx​

Внедрение в Custom XML Part​

OpenDocument

.odt, .ods, .odp​

"Файл-призрак" + правка манифеста​

Эл. книги

.epub​

"Файл-призрак"​

Apple iWork

.pages, .numbers, .key​

"Файл-призрак"​

MS XPS

.xps, .oxps​

"Файл-призрак"​

Документы

.pdf​

Авторский метод "Хамелеон"


Жемчужина коллекции: наш авторский метод для 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-каналу!

Спасибо за внимание!
 
Автор темы Похожие темы Форум Ответов Дата
AI Overview AI 0
Сверху Снизу