Чёрный кабинет EN

Утилиты · Машины и тайнопись

Стеганография в картинке (LSB)

Спрятать текст в младших битах пикселей PNG и достать его обратно; битовые плоскости картинки.

Считается в вашем браузере. Текст никуда не отправляется.

Как пользоваться

Перетащите картинку в рамку. Слева появится она сама, справа — одна битовая плоскость: для каждого пикселя берётся один бит одного канала, единица рисуется белым, ноль — чёрным. Канал и номер бита выбираются над картинками, а в блоке «Все плоскости разом» видны все 24 сразу, от старших битов к младшим. Наведите курсор на картинку, и под ней появятся значения пикселя в двоичном виде с выделенным битом.

Блок «Достать» сначала ищет сообщение, спрятанное этим инструментом. Если его нет, ниже видно, что лежит в выбранном бите подряд, собранное в байты. Осмысленные слова в начале строки — почти наверняка послание, сплошные точки — шум.

Блок «Спрятать» умеет прятать двумя способами. Текст ложится в младшие биты красного, зелёного и синего каналов по порядку, с начала картинки; инструмент заранее скажет, сколько байт поместится. Слово-картинка рисуется прямо в выбранную плоскость и видно только в ней. Готовый результат сохраняется кнопкой «Скачать PNG».

Как это устроено

Цвет пикселя — три числа от 0 до 255. Младший бит меняет число на единицу: 200 становится 201. Глаз такую разницу не видит. Поэтому младшие биты фотографии — почти чистый шум: в них оседают шум матрицы и сглаживание. Если положить туда своё, картинка на вид не изменится.

Текст переводится в байты UTF-8. Впереди ставится метка «CK» и длина в четырёх байтах, чтобы потом знать, где остановиться. Биты пишутся по одному (или по два) в каждый канал: R, G, B первого пикселя, потом второго и так далее. Альфа-канал не трогается. В картинку 1000 × 1000 при одном бите на канал влезает почти 375 000 байт.

Отличить такую картинку можно не глазом, а статистикой. Запись случайных битов выравнивает пары значений вроде 200 и 201, и это ловит тест χ² (Вестфельд и Пфитцман, 1999). А рисунок в плоскости виден сразу — в этом и смысл задачек с ним.

Частые вопросы

Почему лучше PNG, а не JPEG?

PNG хранит пиксели точно. JPEG при сжатии пересчитывает их, и младшие биты перемешиваются. Мессенджеры и соцсети тоже пережимают картинки, так что отправляйте PNG файлом, а не фотографией.

Это шифрование?

Нет. Стеганография прячет сам факт сообщения, но любой, кто знает способ, его прочтёт. Если нужно и то и другое, сначала зашифруйте текст паролем, а потом спрячьте. Подробнее — в уроке о стеганографии.

Картинка куда-нибудь загружается?

Нет. Всё считается в браузере, файл остаётся у вас.