Стеганография

Стеганография (от греч. στεγανός [стеганос] «скрытый» + γράφω [графо] «пишу»; дословно – «тайнопись») – это такой способ хранения или передачи информации при котором эта информация передаётся под видом чего-то иного, то есть скрывается сам факт такой передачи или хранения. Термин «Стеганография» ввёл в 1499 аббат бенедиктинского монастыря Св. Мартина в Шпонгейме Иоганн Тритемий в своём трактате «Стеганография», зашифрованном под магическую книгу. Более подробно вы можете прочитать об этом например в Википедии. А я расскажу как это осуществить на практике. Файл, упакованный в зашифрованный архив я спрячу в изображении. При условии использования сильного пароля, имеющего например 20 символов и состояшщего из букв в нижнем и верхнем регистрах, цифр и специальных символов, взломать такой архив будет не под силу даже суперкомпьютеру и человеческой жизни для взлома такого архива методом перебора точно не хватит. Но самое главное, изображение, в котором будет скрыт архив, будет выгляеть как обычное изображение и его можно будет открыть в любой программе для просмотра изображений.

Я расскажу о двух способах скрытия архива 7z в изображении: с помощью программы Steghide или только с помощью архиватора 7-zip. В первом случае следует учесть размер архива, который должен быть не более 10-15% от размера изображения.

Размер Формула
Минимальный Размер архива = Размер изображения × 0.1
Максимальный Размер архива = Размер изображения × 0.15

Во втором случае размер изображения может быть любым. Однако в любом случае нужно следовать определённым правилам:

  1. Изображение должно иметь правдоподобный размер, например, если это фотография, сделанная камерой смартфона, то её размер во избежание подозрения не должен превышать 3-6МБ (если изображение слишком тяжёлое, то предварительно будет лучше его сжать с помощью любой программы для оптимизации изображений, например, Caesium Image Compressor).
  2. Изображение лучше использовать с высоким разрешением (1920×1080px и больше).
  3. Чем больше деталей будет на изображении, тем лучше.
  4. После встраивания архива в изображения, не редактируйте его!

В статье я описал методы, использующие командную строку. Однако вы легко можете сделать то же самое с помощью программ, имеющих графический интерфейс. Например, для того, чтобы поместить файл в зашифрованный архив, используйте графический интерфейс архиватора 7-zip, а чтобы спрятать этот архив в изображении – программу OpenStego.

Итак, если желание поработать с командной строкой у вас ещё не пропало, читайте дальше. Для работы нам понадобится портативная версия архиватора 7-zip, с помощью которого мы упакуем заранее заготовленный файл secret.txt с секретной информацией в архив. Сперва в распакованной папке программы нужно перейти в директорию с утилитой для работы с командной строкой 7z.exe. Для этого перейдите в папку App и затем в папку, соответствующую разрядности вашей системы.

Если у вас Windows 64-bit, то перейдите в 7-Zip64, например:

C:\Users\Igor\Desktop\7-ZipPortable\App\7-Zip64

Если у вас Windows 32-bit, то перейдите в 7-Zip, например:

C:\Users\Igor\Desktop\7-ZipPortable\App\7-Zip

Вообще, если у вас Windows 64-bit, то можно вызвать командную строку из любой из этих папок, но лучше это сделать из папки 7-Zip64, поскольку в этой папке находится 64-битная версия утилиты 7z.exe с которой командная строка будет работать быстрее. Если у вас Windows 32-bit, то вызвать командную строку можно только из папки 7-Zip.

После того как вы определились с папкой, поместите туда файл secret.txt. Затем в адресной строке этой папки введите cmd – откроется командная строка, в которой выполните команду:

7z a -p123456 -mhe=on secret.7z secret.txt

Параметры в этой команде следующие:

Конечно же пароль 123456 я привёл только для примера. Сильный пароль например, может быть таким:


По выполнению команды архив будет зашифрован с помощью стойкого алгоритма AES-256, используемого в архиваторе 7-zip по умолчанию.

Теперь, чтобы встроить архив в изображение, нам понадобится программа Steghide. В папку с программой поместите изображение image.jpg и полученный ранее архив secret.7z. Запустите в этой папке командную строку и выполните команду:

steghide embed -cf image.jpg -ef secret.7z -p 123456

Параметры в этой команде следующие:

И вот теперь можно упомянуть второй способ, при котором можно было бы также встроить архив в изображение. Но в данном случае данные не будут скрыты в пикселях, а лишь добавлены в конец файла изображения. Это тоже достаточно надёжный метод при условии использования сильного пароля, но всё же существует большая вероятность при определённных обстоятельствах обнаружить архив, встроенный в изображение (однако взломать его всё равно будет невозможно). Если вы всё-же хотите ограничиться таким способом, то просто выполните команду в папке архиватора 7-zip:

copy /b image.jpg + secret.7z hidden.jpg

В изображение hidden.jpg будет встроен зашифрованный архив. Извлечь его можно например, переименовав в hidden.jpg.7z командой:

ren hidden.jpg hidden.jpg.7z

Вы можете и вручную переименовать hidden.jpg в hidden.jpg.7z. Затем вы можете распаковать hidden.jpg.7z любым подходящим архиватором, введя пароль.

Но если вас заинтересовал первый способ, продолжим дальше. Теперь рассмтрим как извлечь архив из изображения и после файл – из архива. Вернитесь в папку с программой Steghide и переименуйте созданный в ней image.jpg в hidden.jpg, чтобы избежать перезаписи, выполнив команду:

rename image.jpg hidden.jpg

Теперь можно извлечь архив из изображения:

steghide extract -sf hidden.jpg -p 123456

После извлечения вы можете при необходимости переименовать архив:

rename secret.7z new_secret.7z

Теперь поместите архив new_secret.7z в папку архиватора 7-zip и распакуйте его, выполнив команду:

7z x new_secret.7z -p123456 -oC:\Output

Параметры в этой команде следующие:

После выполнения команды, архив был распакован в папку C:\Output.