August 17

СПРЯЧЬ СЕКРЕТ ВНУТРИ КАРТИНКИ: СТЕГАНОГРАФИЯ СВОИМИ РУКАМИ

Шифрование прячет смысл сообщения, но кричит о том, что сообщение есть. Стеганография идёт дальше: она прячет сам факт, что ты вообще что-то передаёшь. Твой секрет лежит внутри милой фотки котика, которую ты кидаешь в чат, и никто — вообще никто — не догадается, что в этих пикселях зашита целая записка. Сегодня научу тебя прятать данные в картинках голыми руками, а заодно покажу, как такое ищут. Погнали./

Как вообще можно спрятать текст в фото

Давай разберём магию по-простому. Любая несжатая картинка — это сетка из миллионов точек-пикселей. Каждый пиксель — это набор чисел, которые задают его цвет: сколько в нём красного, зелёного и синего. И вот ключевой момент: если ты чуть-чуть, на единичку, изменишь эти числа — глаз человека разницы не заметит. Оттенок красного сдвинулся с 200 на 201? Для тебя это тот же самый цвет.

Вот на этом всё и держится. Каждое число, задающее цвет, состоит из битов, и самый последний, младший бит почти не влияет на оттенок. Его-то и подменяют на биты твоего секретного сообщения. Метод так и называется — LSB, «наименее значащий бит». Ты рассовываешь своё сообщение по младшим битам тысяч пикселей, картинка меняется на неуловимую глазом малость, а внутри неё теперь живёт твой текст. Снаружи — обычное фото. Внутри — тайник. Именно так прячут данные в форматах без сжатия — например, в PNG и BMP.

Способ для ленивых: спрятать за 10 секунд без всяких программ

Прежде чем лезть в серьёзные инструменты, покажу трюк, от которого челюсть отвисает. Он работает прямо в командной строке, без установки чего-либо, потому что использует особенность самого формата картинок.

Фишка вот в чём: программы для просмотра фото читают файл до специальной метки «конец изображения» (в JPEG это два байта — FF D9) и останавливаются. Всё, что ты допишешь ПОСЛЕ этой метки, просмотрщик просто проигнорирует — но из файла оно никуда не денется.

Берём картинку и любой файл-секрет и склеиваем их в один. На Windows в командной строке: copy /b котик.jpg + секрет.txt тайник.jpg

На Linux или Mac: cat секрет.txt >> котик.jpg

Всё. Открываешь тайник.jpg — это обычный котик, который открывается и выглядит как ни в чём не бывало. Но если открыть тот же файл текстовым редактором и прокрутить в самый низ — там лежит твой секрет открытым текстом. Магия? Нет, просто знание, как устроен формат.

Способ для серьёзных: настоящая стеганография со Steghide

Трюк выше палится за секунду (об этом ниже). Для настоящего тайника есть инструмент Steghide — он честно прячет данные внутрь структуры изображения, да ещё и шифрует их паролем. Работает с форматами JPEG, BMP, а также со звуком WAV и AU. Ставится одной строкой.

На Linux: sudo apt install steghide

Прячем файл внутрь картинки: steghide embed -cf котик.jpg -ef секрет.txt

Программа спросит пароль — придумай его. Теперь твой котик.jpg выглядит и весит почти так же, как раньше, открывается как обычное фото, но внутри зашит зашифрованный секрет. Даже если кто-то заподозрит тайник — без пароля он ничего не достанет.

Чтобы вытащить секрет обратно: steghide extract -sf котик.jpg

Вводишь пароль — и твой файл снова на месте, целый и невредимый. Вот это уже полноценный тайник: и спрятано, и заперто. Маленькая, но важная деталь: Steghide работает с JPEG, но НЕ умеет в PNG. Запомни это — пригодится.

А теперь самое интересное — как такое ищут

Прятать умеет каждый. Ценность — уметь находить. Это отдельный навык, который прямо сейчас применяют на соревнованиях по кибербезопасности (CTF): там задания «найди спрятанное в файле» — классика жанра.

Первым делом любой файл прогоняют через простую команду, которая вытаскивает из него весь читаемый текст: strings тайник.jpg

Помнишь наш трюк со склейкой? Вот он вылезет мгновенно — секрет, дописанный в конец, покажется как на ладони. Именно поэтому «способ для ленивых» годится для забавы, но не для серьёзного дела.

Дальше в ход идут инструменты посерьёзнее. binwalk сканирует файл и находит внутри него другие спрятанные файлы — например, целый архив, замаскированный под фото. Для картинок без сжатия (PNG, BMP) есть zsteg, который выковыривает данные, спрятанные тем самым методом младших битов. А спрятанное через Steghide вытаскивают обратно самим же Steghide — если, конечно, знают или подберут пароль. Есть даже онлайн-комбайн Aperi'Solve: загружаешь подозрительную картинку, а он сам прогоняет её через десяток проверок разом и показывает, что внутри.

Собери свой первый тайник прямо сейчас

Тут не нужна лаборатория и виртуалки — всё делается на твоём компьютере за пять минут. Возьми любую фотку, создай текстовый файл с секретной фразой и склей их командой copy или cat. Открой результат сначала как картинку — убедись, что котик на месте. Потом открой блокнотом и прокрути вниз — найди свой секрет. А следом прогони strings по файлу и посмотри, как легко твой тайник вскрывается. За один заход ты побываешь и тем, кто прячет, и тем, кто ищет.

Когда почувствуешь вкус — ставь Steghide и прячь уже по-взрослому, с паролем и внутри самой картинки. И в следующий раз, когда увидишь в интернете безобидную картинку, ты уже будешь знать: она не всегда так проста, как выглядит. Иногда фото — это конверт с двойным дном.

Карманный хакер