Стеганография
Стеганография (от греч. στεγανός [стеганос] «скрытый» + γράφω [графо] «пишу»; дословно – «тайнопись») – это такой способ хранения или передачи информации при котором эта информация передаётся под видом чего-то иного, то есть скрывается сам факт такой передачи или хранения. Термин «Стеганография» ввёл в 1499 аббат бенедиктинского монастыря Св. Мартина в Шпонгейме Иоганн Тритемий в своём трактате «Стеганография», зашифрованном под магическую книгу. Более подробно вы можете прочитать об этом например в Википедии. А я расскажу как это осуществить на практике. Файл, упакованный в зашифрованный архив я спрячу в изображении. При условии использования сильного пароля, имеющего например 20 символов и состояшщего из букв в нижнем и верхнем регистрах, цифр и специальных символов, взломать такой архив будет не под силу даже суперкомпьютеру и человеческой жизни для взлома такого архива методом перебора точно не хватит. Но самое главное, изображение, в котором будет скрыт архив, будет выгляеть как обычное изображение и его можно будет открыть в любой программе для просмотра изображений.
Я расскажу о двух способах скрытия архива 7z в изображении: с помощью программы Steghide или только с помощью архиватора 7-zip. В первом случае следует учесть размер архива, который должен быть не более 10-15% от размера изображения.
Размер | Формула |
---|---|
Минимальный | Размер архива = Размер изображения × 0.1 |
Максимальный | Размер архива = Размер изображения × 0.15 |
Во втором случае размер изображения может быть любым. Однако в любом случае нужно следовать определённым правилам:
- Изображение должно иметь правдоподобный размер, например, если это фотография, сделанная камерой смартфона, то её размер во избежание подозрения не должен превышать 3-6МБ (если изображение слишком тяжёлое, то предварительно будет лучше его сжать с помощью любой программы для оптимизации изображений, например, Caesium Image Compressor).
- Изображение лучше использовать с высоким разрешением (1920×1080px и больше).
- Чем больше деталей будет на изображении, тем лучше.
- После встраивания архива в изображения, не редактируйте его!
В статье я описал методы, использующие командную строку. Однако вы легко можете сделать то же самое с помощью программ, имеющих графический интерфейс. Например, для того, чтобы поместить файл в зашифрованный архив, используйте графический интерфейс архиватора 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
Параметры в этой команде следующие:
- -p123456, где
123456
– это пароль. - -mhe=on – шифрует заголовок архива (чтобы скрыть информацию о файлах).
Конечно же пароль 123456
я привёл только для примера. Сильный пароль например, может быть таким:
По выполнению команды архив будет зашифрован с помощью стойкого алгоритма AES-256, используемого в архиваторе 7-zip по умолчанию.
Теперь, чтобы встроить архив в изображение, нам понадобится программа Steghide. В папку с программой поместите изображение image.jpg
и полученный ранее архив secret.7z. Запустите в этой папке командную строку и выполните команду:
steghide embed -cf image.jpg -ef secret.7z -p 123456
Параметры в этой команде следующие:
- -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
Параметры в этой команде следующие:
- -p123456 – пароль.
- -oC:\Output – папка, куда будет извлечено содержимое архива.
После выполнения команды, архив был распакован в папку C:\Output.